@cebcf129e9d8616c

Почему не работает throttled в aiogram?

У меня есть функция для анти флуда сообщениями, но почему-то она не хочет работать, в чём причина?

import asyncio
import logging

from aiogram import *
from aiogram.types import *
from aiogram.utils import *
from aiogram.dispatcher import *
from aiogram.utils.markdown import hlink
from aiogram.utils.exceptions import Throttled
from aiogram.dispatcher.filters.state import *
from aiogram.contrib.fsm_storage.memory import *

logging.basicConfig(level=logging.INFO)
bot = Bot(token=config.BOT_TOKEN)
app = Dispatcher(bot, storage=MemoryStorage())


async def anti_flood(*args, **kwargs):
	message = args[0]
	await message.answer(f'Слишком много действий, подождите 5 секунд.', parse_mode=ParseMode.HTML)

@app.throttled(anti_flood, rate=5)
@app.message_handler(commands=['start'])
async def start(message: types.Message):
	await bot.send_message(message.from_user.id, f'<b>start</b>', parse_mode=ParseMode.HTML)

if __name__ == '__main__':
	loop = asyncio.get_event_loop()
	executor.start_polling(app, loop=loop)
  • Вопрос задан
  • 505 просмотров
Пригласить эксперта
Ответы на вопрос 1
trapwalker
@trapwalker Куратор тега Python
Программист, энтузиаст
Всё правильно вам подсказали, надо изменить порядок декораторов, они коммутативны.

В таких случаях надо просто брать пример из документации, убеждаться, что он работает, потом постепенно его приводить по шагам к виду своей неработающей реализации. Так вы выясните какой шаг был слабым звеном.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы