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()