Initial commit for dev-8 branch with all current changes
This commit is contained in:
@@ -10,40 +10,26 @@ if CURRENT_DIR not in sys.path:
|
||||
|
||||
from helper_bot.main import start_bot
|
||||
from helper_bot.utils.base_dependency_factory import get_global_instance
|
||||
from helper_bot.server_monitor import ServerMonitor
|
||||
from helper_bot.utils.auto_unban_scheduler import get_auto_unban_scheduler
|
||||
|
||||
|
||||
async def start_monitoring(bdf, bot):
|
||||
"""Запуск модуля мониторинга сервера"""
|
||||
monitor = ServerMonitor(
|
||||
bot=bot,
|
||||
group_for_logs=bdf.settings['Telegram']['group_for_logs'],
|
||||
important_logs=bdf.settings['Telegram']['important_logs']
|
||||
)
|
||||
return monitor
|
||||
|
||||
|
||||
async def main():
|
||||
"""Основная функция запуска"""
|
||||
bdf = get_global_instance()
|
||||
|
||||
# Создаем бота для мониторинга
|
||||
# Создаем бота для автоматического разбана
|
||||
from aiogram import Bot
|
||||
from aiogram.client.default import DefaultBotProperties
|
||||
|
||||
monitor_bot = Bot(
|
||||
auto_unban_bot = Bot(
|
||||
token=bdf.settings['Telegram']['bot_token'],
|
||||
default=DefaultBotProperties(parse_mode='HTML'),
|
||||
timeout=30.0
|
||||
)
|
||||
|
||||
# Создаем экземпляр монитора
|
||||
monitor = await start_monitoring(bdf, monitor_bot)
|
||||
|
||||
# Инициализируем планировщик автоматического разбана
|
||||
auto_unban_scheduler = get_auto_unban_scheduler()
|
||||
auto_unban_scheduler.set_bot(monitor_bot)
|
||||
auto_unban_scheduler.set_bot(auto_unban_bot)
|
||||
auto_unban_scheduler.start_scheduler()
|
||||
|
||||
# Инициализируем метрики ПОСЛЕ импорта всех модулей
|
||||
@@ -63,9 +49,8 @@ async def main():
|
||||
signal.signal(signal.SIGINT, signal_handler)
|
||||
signal.signal(signal.SIGTERM, signal_handler)
|
||||
|
||||
# Запускаем бота, мониторинг и метрики
|
||||
# Запускаем бота и метрики
|
||||
bot_task = asyncio.create_task(start_bot(bdf))
|
||||
monitor_task = asyncio.create_task(monitor.monitor_loop())
|
||||
metrics_task = asyncio.create_task(metrics_manager.start())
|
||||
|
||||
try:
|
||||
@@ -76,13 +61,6 @@ async def main():
|
||||
except KeyboardInterrupt:
|
||||
print("Получен сигнал завершения...")
|
||||
finally:
|
||||
print("Отправляем сообщение об отключении...")
|
||||
try:
|
||||
# Отправляем сообщение об отключении
|
||||
await monitor.send_shutdown_message()
|
||||
except Exception as e:
|
||||
print(f"Ошибка при отправке сообщения об отключении: {e}")
|
||||
|
||||
print("Останавливаем планировщик автоматического разбана...")
|
||||
auto_unban_scheduler.stop_scheduler()
|
||||
|
||||
@@ -92,17 +70,16 @@ async def main():
|
||||
print("Останавливаем задачи...")
|
||||
# Отменяем задачи
|
||||
bot_task.cancel()
|
||||
monitor_task.cancel()
|
||||
metrics_task.cancel()
|
||||
|
||||
# Ждем завершения задач
|
||||
try:
|
||||
await asyncio.gather(bot_task, monitor_task, metrics_task, return_exceptions=True)
|
||||
await asyncio.gather(bot_task, metrics_task, return_exceptions=True)
|
||||
except Exception as e:
|
||||
print(f"Ошибка при остановке задач: {e}")
|
||||
|
||||
# Закрываем сессию бота
|
||||
await monitor_bot.session.close()
|
||||
await auto_unban_bot.session.close()
|
||||
print("Бот корректно остановлен")
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user