【发布时间】:2021-05-24 11:01:35
【问题描述】:
我向 Heroku 部署了一个 Python Telegram 机器人,但该机器人没有响应。
在终端中,输入“heroku logs -t”表明构建成功,但是当我向 Telegram bot 发送 /start 之类的命令时,没有任何其他显示。
我不确定这是否与我的 webhook 或只是我在 bot 中的功能实现有关?对于 webhook 部分,我基本上从 https://github.com/eternnoir/pyTelegramBotAPI/blob/888c7a6b0d97c376947ee7b525d4b70583acc3fc/examples/webhook_examples/webhook_flask_heroku_echo.py 复制粘贴了 getMessage、webhook 和 if name == 主要部分
还是我的命令处理程序有问题?这就是我的代码的样子,减去 main 中调用的函数。 (部分heroku url被删除,所以我的heroku url不会放在这里,但在原始代码中是正确的)
def main() -> None:
updater = Updater(TOKEN)
updater.dispatcher.add_handler(CommandHandler('start', start))
updater.dispatcher.add_handler(CallbackQueryHandler(button))
updater.dispatcher.add_handler(CommandHandler('help', help_command))
updater.dispatcher.add_handler(CommandHandler('test', test_command))
@server.route('/' + TOKEN, methods=['POST'])
def getMessage():
json_string = request.get_data().decode('utf-8')
update = telebot.types.Update.de_json(json_string)
bot.process_new_updates([update])
return "!", 200
@server.route("/")
def webhook():
bot.remove_webhook()
bot.set_webhook(url="heroku url" + TOKEN)
return "!", 200
if __name__ == '__main__':
server.run(host="0.0.0.0", port=int(os.environ.get('PORT', 5000)))
main()
【问题讨论】:
-
看起来您正在混合使用
pyTelegramBotAPI和python-telegram-bot这两个库。您应该选择一个并坚持下去,因为两者的工作方式截然不同(即 AFAIK)。
标签: python heroku python-telegram-bot py-telegram-bot-api