【问题标题】:Issues with Telegram Bot deployment to HerokuTelegram Bot 部署到 Heroku 的问题
【发布时间】: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()

【问题讨论】:

  • 看起来您正在混合使用 pyTelegramBotAPIpython-telegram-bot 这两个库。您应该选择一个并坚持下去,因为两者的工作方式截然不同(即 AFAIK)。

标签: python heroku python-telegram-bot py-telegram-bot-api


【解决方案1】:

你可以尝试使用命令heroku run python main.py启动机器人

【讨论】:

    猜你喜欢
    • 2022-01-20
    • 2021-06-14
    • 1970-01-01
    • 2011-06-10
    • 2021-11-16
    • 2020-01-06
    • 2020-01-22
    • 2015-06-05
    • 1970-01-01
    相关资源
    最近更新 更多