Использование Telegram Bot с Django

Я пытаюсь использовать своего бота Telegram с Django. Я хочу, чтобы код продолжал работать в фоновом режиме. Я использую apps.py для этого, но есть одна проблема, когда бот запускается, поскольку это бесконечный цикл, сервер 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()

Какой лучший способ запустить моего бота в фоновом режиме, при этом убедившись, что сервер Django работает нормально. Я пробовал Django background tasks, но он не совместим с Django 4.0.

Цель Updater.idle - сохранить главный поток живым, поскольку start_polling запускает только некоторые фоновые потоки, которые не блокируют главный поток. Если вы хотите запускать другие вещи в основном потоке, пропустите updater.idle() и вместо этого вызовите Updater.stop вручную, когда программа должна завершиться.


Отказ от ответственности: В настоящее время я являюсь сопровождающим python-telegram-bot

Вернуться на верх