Использование 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