All checks were successful
Build and Push Docker Image / build (push) Successful in 2m15s
62 lines
2.0 KiB
Python
62 lines
2.0 KiB
Python
import asyncio
|
||
from aiogram.filters import Command
|
||
|
||
from bot.core.bot import create_bot, create_dispatcher
|
||
from bot.services.xui import XUIService
|
||
from bot.services.client import ClientService
|
||
from bot.handlers.base import cmd_start, cmd_help
|
||
from bot.handlers.client import ClientHandlers
|
||
from bot.filters.access import AllowedUsersFilter
|
||
from bot.utils.logging import logger
|
||
|
||
|
||
async def setup_handlers(dp, client_handlers: ClientHandlers):
|
||
"""Настройка обработчиков команд."""
|
||
# Базовые команды (доступны всем)
|
||
dp.message.register(cmd_start, Command(commands=["start"]))
|
||
dp.message.register(cmd_help, Command(commands=["help"]))
|
||
|
||
# Команды для работы с клиентами (только для разрешенных пользователей)
|
||
dp.message.register(
|
||
client_handlers.cmd_create,
|
||
Command(commands=["create"]),
|
||
AllowedUsersFilter()
|
||
)
|
||
dp.message.register(
|
||
client_handlers.cmd_info,
|
||
Command(commands=["info"]),
|
||
AllowedUsersFilter()
|
||
)
|
||
|
||
|
||
async def main():
|
||
"""Главная функция приложения."""
|
||
logger.info("Запуск бота...")
|
||
|
||
# Создаем основные компоненты
|
||
bot = create_bot()
|
||
dp = create_dispatcher()
|
||
|
||
# Создаем сервисы
|
||
xui_service = XUIService()
|
||
client_service = ClientService(xui_service)
|
||
|
||
# Создаем обработчики
|
||
client_handlers = ClientHandlers(client_service)
|
||
|
||
# Настраиваем обработчики
|
||
await setup_handlers(dp, client_handlers)
|
||
|
||
try:
|
||
logger.info("Бот запущен и готов к работе")
|
||
await dp.start_polling(bot)
|
||
except Exception as e:
|
||
logger.error(f"Ошибка при запуске бота: {e}")
|
||
raise
|
||
finally:
|
||
await bot.session.close()
|
||
logger.info("Бот остановлен")
|
||
|
||
|
||
if __name__ == "__main__":
|
||
asyncio.run(main()) |