在Django中使用Telegram Bot



我正在尝试使用Django的telegram bot。我想让代码在后台继续运行。我正在使用apps.py来做到这一点,但是有一个问题,当bot启动时,因为它是一个无限循环,Django服务器永远不会启动。

Apps.py:

from django.apps import AppConfig
import os
class BotConfig(AppConfig):
default_auto_field = 'django.db.models.BigAutoField'
name = 'bot'

def ready(self):
from . import jobs
if os.environ.get('RUN_MAIN', None) != 'true':
jobs.StartBot()

Jobs.py:

def StartBot():

updater = Updater("API KEY")
dp = updater.dispatcher
dp.add_handler(ChatMemberHandler(GetStatus, ChatMemberHandler.CHAT_MEMBER))
updater.start_polling(allowed_updates=Update.ALL_TYPES)
updater.idle()

在后台运行我的bot最好的方法是什么?同时确保Django服务器正常运行。我尝试了Django后台任务,但是它不兼容Django 4.0。

Updater.idle的目的是保持主线程存活,因为start_polling只启动一些不阻塞主线程的后台线程。如果你想在主线程中运行其他东西,跳过updater.idle(),在程序应该关闭的时候手动调用Updater.stop


免责声明:我目前是python-telegram-bot的维护者

相关内容

  • 没有找到相关文章

最新更新