Задать вопрос
@ch1ps01

Неправильно работает анти-флуд в боте телеграм, что делать?

Я придумал простую защиту от флуда в боте тг, работает она следующим образом: создаётся массив listmc, когда человек отправляет любой запрос боту, его айди вносится в массив, сам массив чистится каждую секунду, так вот, когда человек отправляет запрос боту, с помощью count проверяется, сколько раз его айди там засветился и если более 5, то на запрос бот не реагирует.

Выглядит это следующий образом:

global listmc

    if listmc.count(message.from_user.id) <=5:
        #условие, которое выполняется, если всё хорошо и запросов в эту секунду меньше пяти
    #после условия стоит цикл, в котором и просходит постоянная очистка массива
        while True:
        listmc.clear()
        time.sleep(1)

Но всё не работает как задумано, бот обрабатывает первые два сообщения и больше не отвечает на них вовсе, что не так? Заранее спасибо за ответ
  • Вопрос задан
  • 253 просмотра
Подписаться 1 Простой Комментировать
Решения вопроса 1
shurshur
@shurshur
Сисадмин, просто сисадмин...
Пока бот выполняет time.sleep, он ниего не делает. Нужно использовать либо треды, либо asyncio (с асинхронным же asyncio.sleep).
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы