Python telebot пропускает нажатия

Обычная inline-клавиатура из десяти кнопок. При быстром нажатии на все кнопки поочерёдно, на шестой кнопке ответа от бота нет, но через несколько секунд, если нажать повторно, ответ есть. Я думаю, это может быть связано с ограничениями самой телеги, но если нет, то как это исправить?


Ответы (2 шт):

Автор решения: Riangry

Сталкивался с похожим, при спаме инлайн кнопками ставится небольшой таймаут секунды 2,после кнопки продолжают работать,к сожалению это ограничение самого телеграм,так что исправить это невозможно.

Как вариант использовать обычные кнопки,что не очень удобно, но зато нет ограничений,при спаме сообщений,бот все равно быстро реагирует на них

→ Ссылка
Автор решения: Oleg

Ответ на CallbackQuery не забываешь дать?

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

Вот работающий бот на aiogram, у которого не наблюдается такая проблема

from aiogram import Bot, Dispatcher, executor
from aiogram.types import (Message, InlineKeyboardMarkup,
                           InlineKeyboardButton, CallbackQuery)

TOKEN = 'твой:токен'

bot = Bot(TOKEN)
dp = Dispatcher(bot)


@dp.message_handler()
async def message_handler(message: Message):
    markup = InlineKeyboardMarkup(row_width=3)
    for i in range(1, 10):
        name = str(i)
        markup.insert(InlineKeyboardButton(name, callback_data=name))
    await message.answer('Выбери кнопку:', reply_markup=markup)


@dp.callback_query_handler()
async def query_handler(query: CallbackQuery):
    return await query.answer(f'Ты нажал {query.data}')


if __name__ == '__main__':
    executor.start_polling(dp)

В качестве защиты от непредвиденного флуда со стороны пользователя рекомендую использовать 2 средства:

  1. Кэширование. При ответе на CallbackQuery можно указать время действия кэша в параметре cache_time. После получения ответа на протяжении указанного времени пользователь будет получать этот же самый ответ.
  2. Троттлинг. Встроенная в aiogram защита от флуда, работающая по методике Leacky Bucket.
→ Ссылка