在Bot Telegram中转换美元和欧元

问题描述

我正在研究Python以创建一个简单的Bot for 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()

在我的Bot电报中,设置命令/ eur和/ usd-如果我写/ eur 100的结果就可以了,但是当我写/ usr 100时什么也没发生-

我在做什么错了?

非常感谢伴侣

解决方法

  • 检查您从 from_usd_to_eur(usd)获得的输出是否不是 太长而无法显示。也可以尝试用“ //”代替“ /”。的 第一个为您提供整数而不是浮点数。

  • 您在调用命令时将“ usd”拼写为“ usr”,也许 这就是原因。

,

谢谢大家,您的答案将是我下一步学习的方向。此刻小程序正在工作。我第二次运行,现在/ usd(感谢@nordmanden)可以正常工作