""" Example for throttling manager. You can use that for flood controlling. """ import asyncio import logging from aiogram import Bot, types from aiogram.contrib.fsm_storage.memory import MemoryStorage from aiogram.dispatcher import Dispatcher from aiogram.utils.exceptions import Throttled from aiogram.utils.executor import start_polling API_TOKEN = 'BOT TOKEN HERE' logging.basicConfig(level=logging.INFO) bot = Bot(token=API_TOKEN) # Throttling manager does not work without Leaky Bucket. # Then need to use storages. For example use simple in-memory storage. storage = MemoryStorage() dp = Dispatcher(bot, storage=storage) @dp.message_handler(commands=['start', 'help']) async def send_welcome(message: types.Message): try: # Execute throttling manager with rate-limit equal to 2 seconds for key "start" await dp.throttle('start', rate=2) except Throttled: # If request is throttled, the `Throttled` exception will be raised await message.reply('Too many requests!') else: # Otherwise do something await message.reply("Hi!\nI'm EchoBot!\nPowered by aiogram.") if __name__ == '__main__': start_polling(dp, skip_updates=True)