def setup(dp: Dispatcher, config: dict, pool: sessionmaker): environment_data = { "config": config, } dp.setup_middleware(LoggingMiddleware()) dp.setup_middleware(EnvironmentMiddleware(context=environment_data)) dp.setup_middleware(DatabaseMiddleware(pool)) dp.setup_middleware(DataMiddleware())
def setup(dp: Dispatcher): dp.setup_middleware(ThrottlingMiddleware())
user = chat elif user is not None and chat is None: chat = user return str(chat), str(user) cache = AiogramTTLCache(seconds=5) class ThrottleMiddleware(BaseMiddleware): @staticmethod async def on_process_message(message: types.Message, data: dict): if not cache.get(message=message): cache.set(message=message) return else: # cache.set(message, seconds=int(cache.left(message).total_seconds() * 2)) await message.answer( f"flood control wait {cache.left(message=message)} sec.") raise CancelHandler @dp.message_handler(commands=["start"]) async def photo_with_musk(message: types.Message, state: FSMContext): await message.answer(message.text) if __name__ == '__main__': dp.setup_middleware(ThrottleMiddleware()) executor.start_polling(dp, skip_updates=True)