@Max1mKa12

Как сделать ограничение запроса в pyrogram?

У меня в юзер боте есть реакция на сообщение "мяу", он сохраняет в бд количество мяуканий и отправляет стикер. Но как сделать ограничение на запрос по этому мяу? То есть человек в некоторых чатах может просто начать спамить и какой-нибудь бот это расценивает как флуд. В aiogram есть rate_limit который хорошо с этим справляется. В pyrogram я нашел только except FloodWait который ограничивает, но не так как мне нужно. Условно говоря хочется чтобы после того как человек написал 4 раза мяу под ряд бот ставился на паузу в секунд 5-10.

@app.on_message(filters.command("мяу", prefixes='') & filters.all)
async def type(client_object, message: Message):
    randomsticker = ('CAACAgIAAxkBAAELvZll-Miwf1efzjpzeDzU35gFDL9ZqQACJzkAAvO2SUpkIculSuJieDQE', 'CAACAgIAAxkBAAELvZtl-MjNX0igmnjqIWM1OftV7kCeGQAChBMAAjluyUtmVU5UsGspDzQE', 'CAACAgIAAxkBAAELvZ1l-MjYwbbN_xy34SsD5H0Ls0oLjgACjRoAArBMyUse0rmJB-7RcTQE','CAACAgIAAxkBAAELvZ9l-MkHQAaCSzXp8zSXRZR4C2yAPgACuxcAAnZd0Ek3pVO4H1JC3jQE','CAACAgIAAxkBAAELvaFl-MkWig9h9vtn2ijqPjbcc80Y1AACaxUAAnqH8Ej5yWCSGa7YpzQE','CAACAgIAAxkBAAELvaNl-Mkr4d1O-pdcv5PY5gvl-fElxQACaR4AAhyaEEvbZLJoHqzj3DQE','CAACAgIAAxkBAAELvaVl-MlMfe0Hm8tJR5HiAAFrNi6ohlIAAjokAAJ-jCFLxxVhCk6yNuA0BA','CAACAgIAAxkBAAELvadl-Mlt3utX6szJplpZ1Qu4ZpGL7wAChEAAAnAT-Ug7pKo_VbHcBjQE','CAACAgIAAxkBAAELvall-MmANk-mhT-GLLR6Xroz587JEgAC7ycAAtHHWUhngGsBmQ9DcjQE','CAACAgIAAxkBAAELvatl-MmYzwKEwhMeBvMdCeL8FrencAACWCkAAmHbcUv0-MJqdq3kNjQE','CAACAgIAAxkBAAELva1l-Mm0i89JL0iaJrOrPZl1K_8DLwAC4hwAAkp78EsAAaA2OREhAAGpNAQ','CAACAgIAAxkBAAELyp1mAWRT90tkLFIh-W4bEeKnb-SPEgAC7jQAAj4HcUnbvNQ639MiJjQE','CAACAgIAAxkBAAELyp9mAWRqpZ92HwkOxNlyP_YE3vJVSAACWT0AAk5gCUpeL8oMZ7JNaTQE')
    random_meow = random.choice(randomsticker)
    row = db.cur.execute(f"SELECT user_id FROM animals WHERE user_id == '{message.from_user.id}'").fetchone()
    if row is None:
            await app.send_sticker(message.chat.id, random_meow)
            db.db_table_val(user_id=message.from_user.id, username=message.from_user.username, first_name=message.from_user.first_name, meow = 1, gav = 0, krya=0)
    elif row is not None:
            msg = await app.send_sticker(message.chat.id, random_meow)
            db.cur.execute(f"UPDATE animals SET meow = meow + 1 WHERE user_id == '{message.from_user.id}'")
            db.db.commit()
            await sleep(20)
            await msg.delete()
  • Вопрос задан
  • 25 просмотров
Решения вопроса 1
RyanovskY
@RyanovskY
хранить базу сообщений мяю и читать её каждый запрос.
просто id сохранять или id+username, но юзернейм есть не у всех.
если послдние 4 айди == id текущему, то не отвечать.

а FloodWait ограничивает только пользователя самого пирограма
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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