Exemplo n.º 1
0
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())
Exemplo n.º 2
0
def setup(dp: Dispatcher):
    dp.setup_middleware(ThrottlingMiddleware())
Exemplo n.º 3
0
            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)