问题描述
我正在研究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)可以正常工作