繁体   English   中英

使用webhook的python-telegram-bot

[英]python-telegram-bot using webhook

我正在开发一个从个人计算机(Mac)运行的电报机器人,该机器人在特定环境中以python运行,并在该环境中安装了模块

既然该机器人很好,我想将其放在运行Apache的Web服务器上。 但是我有一些疑问。

1)我必须将服务器上的每个模块安装给所有人,否则我可以为此特定的bot创建一个环境,而apache在该环境中运行该bot吗?

2)我使用的是getUpdates(这会使我的机器运行非常缓慢,但是更好地调试错误),现在我想使用webhook来运行。 如果要使用webhook而不是将getUpdates发送到电报服务器,则必须进行哪些更改才能使他正常工作? 今天开始并继续运行的代码是:

def main():

updater = Updater(bot_token)
dp = updater.dispatcher

# Commands
dp.add_handler(CommandHandler("info", ranking_putaria))
dp.add_handler(CommandHandler("start", start))

# Start checking updates
dp.add_handler(MessageHandler(Filters.text,echo_msg))
dp.add_handler(MessageHandler(Filters.video | Filters.photo | Filters.document, echo_file))
dp.add_handler(MessageHandler(Filters.sticker, echo_sticker))

# Log errors
#dp.add_error_handler(error)

# start the bot
updater.start_polling()

# Run the bot until you press Ctrl-C or the process receives SIGINT,
# SIGTERM or SIGABRT. This should be used most of the time, since
# start_polling() is non-blocking and will stop the bot gracefully.
updater.idle()


if __name__ == '__main__':
main()

您可以按照以下步骤设置webhook:

  1. 在电报漫游器对象上设置webhook:

    import os PORT = int(os.environ.get('PORT', '5000')) bot = telegram.Bot(token = "YOUR TOKEN HERE") bot.setWebhook("YOUR WEB SERVER LINK HERE" + "YOUR TOKEN HERE")

  2. 将长轮询替换为webhook-即,将updater.start_polling()替换为

    updater.start_webhook(listen="0.0.0.0", port=PORT, url_path="YOUR TOKEN HERE") updater.bot.setWebhook("YOUR WEB SERVER LINK HERE" + "YOUR TOKEN HERE") updater.idle()

当我使用Heroku托管我的机器人时,这对我有用。 干杯!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM