#python #python-3.x #telegram #telegram-bot
#python #python-3.x #telegram #telegram-бот
Вопрос:
Я изучаю Python для создания простого бота для Telegram, но у меня проблема. Я создал 2 файла exchange.py и BotHtmlTelegram.py
exchange.py:
EXCHANGE=1.125
def from_usd_to_eur(usd):
return usd/EXCHANGE
def from_eur_to_usd(eur):
return EXCHANGE*eur
и это BotHtmlTelegram.py:
from telegram.ext import Updater, CommandHandler, MessageHandler, Filters
import exchange
TOKEN="My_Token"
def extract_number(text):
return text.split()[1].strip()
def convert_usd(update, context):
usd=float(extract_number(update.message.text))
eur=exchange.from_usd_to_eur(usd)
print(f'Eseguita conversione da {usd} USD a {eur} EUR')
update.message.reply_text(f'{eur} EUR')
def convert_eur(update, context):
eur=float(extract_number(update.message.text))
usd=exchange.from_eur_to_usd(eur)
print(f'Eseguita conversione da {eur} EUR a {usd} USD')
update.message.reply_text(f'{usd} USD')
def main():
upd= Updater("My_Token", use_context=True)
disp=upd.dispatcher
disp.add_handler(CommandHandler("usd", convert_usd))
disp.add_handler(CommandHandler("eur", convert_eur))
upd.start_polling()
upd.idle()
if __name__=='__main__':
main()
В моем телеграмме бота я задаю команды / eur и / usd — если я пишу / eur 100, результат в порядке, но когда я пишу / usr 100, ничего не происходит —
Что я делаю не так?
Большое спасибо, приятель
Комментарии:
1. лучше использовать api CurrencyConverter
Ответ №1:
-
Проверьте, не слишком ли длинный вывод, который вы получаете от from_usd_to_eur (usd), для отображения. Также попробуйте использовать «//» вместо «/». Первый выдает вам значение int вместо значения float.
-
Вы неправильно написали «usd» как «usr» при вызове команды, возможно, в этом причина.
Ответ №2:
Спасибо, ребята, ваш ответ станет моим следующим шагом к изучению. На данный момент небольшая программа работает. Я запускаю во второй раз, и теперь / usd (спасибо @nordmanden) работает корректно