__all__ = ("main",) from typing import Optional from aiogram import Bot, Dispatcher from aiogram.enums import ParseMode from aiogram.fsm.storage.redis import RedisStorage from app.callbacks import location, menu, notes, profile, travel from app.config import Config from app.handlers import ( create_travel_command, help_command, menu_command, profile_command, start_command, travels_command, ) from app.middlewares.throttling import ThrottlingMiddleware async def main() -> None: bot_token: Optional[str] = Config.BOT_TOKEN if bot_token is None: exit("BOT_TOKEN is not set") storage = RedisStorage.from_url(Config.REDIS_URL) dp = Dispatcher(storage=storage) bot = Bot(bot_token, parse_mode=ParseMode.HTML) dp.message.middleware(ThrottlingMiddleware(0.5)) dp.include_routers( start_command.router, help_command.router, menu_command.router, profile_command.router, create_travel_command.router, travels_command.router, menu.router, profile.router, travel.router, location.router, notes.router, ) await bot.delete_webhook(drop_pending_updates=True) await dp.start_polling(bot)