Files
Touchh/bot/management/commands/run_bot.py
2024-12-27 14:47:04 +09:00

50 lines
1.8 KiB
Python

import os
import django
import asyncio
from django.core.management.base import BaseCommand
from telegram.ext import Application
from bot.utils.bot_setup import setup_bot
from app_settings.models import TelegramSettings
from touchh.utils.log import CustomLogger
class Command(BaseCommand):
help = "Запуск Telegram бота"
def handle(self, *args, **options):
# Установка Django окружения
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "touchh.settings")
django.setup()
# Создаем новый цикл событий
loop = asyncio.new_event_loop()
asyncio.set_event_loop(loop)
# Настройка Telegram бота
bot_token = TelegramSettings.objects.first().bot_token
if not bot_token:
raise ValueError("Токен бота не найден в базе данных.")
application = Application.builder().token(bot_token).build()
setup_bot(application)
# Основная асинхронная функция
async def main():
await application.initialize()
await application.start()
await application.updater.start_polling()
self.stdout.write(self.style.SUCCESS("Telegram бот успешно запущен."))
try:
while True:
await asyncio.sleep(3600)
except asyncio.CancelledError:
await application.stop()
# Запуск асинхронной программы
try:
loop.run_until_complete(main())
except KeyboardInterrupt:
self.stdout.write(self.style.ERROR("Завершение работы Telegram бота"))
finally:
loop.close()