# import os # import django # import asyncio # from apscheduler.schedulers.asyncio import AsyncIOScheduler # from django.core.management.base import BaseCommand # from telegram.ext import Application # from bot.utils.bot_setup import setup_bot # from scheduler.tasks import load_tasks_to_scheduler # 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) # # Настройка планировщика # scheduler = AsyncIOScheduler(event_loop=loop) # scheduler.start() # # Загрузка задач в планировщик # try: # load_tasks_to_scheduler(scheduler) # except Exception as e: # self.stderr.write(f"Ошибка при загрузке задач в планировщик: {e}") # return # # Настройка Telegram бота # # bot_token = os.getenv("TELEGRAM_BOT_TOKEN") # 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() # scheduler.shutdown() # # Запуск асинхронной программы # try: # loop.run_until_complete(main()) # except KeyboardInterrupt: # self.stdout.write(self.style.ERROR("Завершение работы Telegram бота и планировщика")) # finally: # loop.close() 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()