- Removed unnecessary `__init__.py` and `Dockerfile` to streamline project organization. - Updated `.dockerignore` and `.gitignore` to improve exclusion patterns for build artifacts and environment files. - Enhanced `Makefile` with new commands for managing Docker containers and added help documentation. - Introduced `pyproject.toml` for better project metadata management and dependency tracking. - Updated `requirements.txt` to reflect changes in dependencies for metrics and monitoring. - Refactored various handler files to improve code organization and maintainability.
35 lines
1.7 KiB
Python
35 lines
1.7 KiB
Python
from aiogram import Bot, Dispatcher
|
|
from aiogram.client.default import DefaultBotProperties
|
|
from aiogram.fsm.storage.memory import MemoryStorage
|
|
from aiogram.fsm.strategy import FSMStrategy
|
|
|
|
from helper_bot.handlers.admin import admin_router
|
|
from helper_bot.handlers.callback import callback_router
|
|
from helper_bot.handlers.group import group_router
|
|
from helper_bot.handlers.private import private_router
|
|
from helper_bot.middlewares.dependencies_middleware import DependenciesMiddleware
|
|
from helper_bot.middlewares.blacklist_middleware import BlacklistMiddleware
|
|
from helper_bot.middlewares.metrics_middleware import MetricsMiddleware, ErrorMetricsMiddleware
|
|
|
|
|
|
async def start_bot(bdf):
|
|
token = bdf.settings['Telegram']['bot_token']
|
|
bot = Bot(token=token, default=DefaultBotProperties(
|
|
parse_mode='HTML',
|
|
link_preview_is_disabled=bdf.settings['Telegram']['preview_link']
|
|
), timeout=30.0) # Добавляем таймаут для предотвращения зависаний
|
|
dp = Dispatcher(storage=MemoryStorage(), fsm_strategy=FSMStrategy.GLOBAL_USER)
|
|
|
|
# ✅ Middleware для метрик (добавляем первыми)
|
|
dp.message.middleware(MetricsMiddleware())
|
|
dp.callback_query.middleware(MetricsMiddleware())
|
|
dp.message.middleware(ErrorMetricsMiddleware())
|
|
dp.callback_query.middleware(ErrorMetricsMiddleware())
|
|
|
|
# ✅ Глобальная middleware для всех роутеров
|
|
dp.update.outer_middleware(DependenciesMiddleware())
|
|
|
|
dp.include_routers(admin_router, private_router, callback_router, group_router)
|
|
await bot.delete_webhook(drop_pending_updates=True)
|
|
await dp.start_polling(bot, skip_updates=True)
|