115 lines
4.4 KiB
Python
115 lines
4.4 KiB
Python
# 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()
|