Телеграм бот. таймер на получение сообщений
Всем привет, пишу бот предложку. тема такая, что бы бот не смогли заспамить, он не должен получать сообщения чаще одного раза в час. Т.е. бот получает сообщение и следующее он может получить только через час. Как можно реализовать? Заранее благодарю
По дате
По рейтингу
Бот должен получать сообщения, иначе у тебя накопится очередь . А вот отвечать на них или нет - пример реализации тебе уже привели
Вот рабочий код решения твоей задачи для библиотеки pyTelegramBotAPI.
Для любой другой библиотеки все тоже самое..
1234567891011121314151617181920212223242526272829303132333435363738
import telebot
import time
from telebot import types
bot = telebot.TeleBot("Токен твоего бота")
# Время после которого бот может отвечать
# При запуске бота записываем в msg_last_time текущее время
current_time = int(time.time())
msg_last_time = current_time
@bot.message_handler(commands=['start'])
def start(message):
msg_time = message.date # Время текущего сообщения из message
global msg_last_time
if msg_time > msg_last_time:
msg_last_time = msg_time + 3600 # Добавляем 3600 секунд (1 час)
# Дальше вставляешь свой обработчик команды
bot.send_message(message.chat.id, "Я могу вам ответить")
# В рабочем коде else убери - это для теста
else:
bot.send_message(message.chat.id, "Я Не могу вам ответить")
@bot.message_handler(content_types=['text'])
def text_user(message):
msg_time = message.date # Время текущего сообщения
global msg_last_time
if msg_time > msg_last_time:
msg_last_time = msg_time + 3600 # Добавляем 3600 секунд (1 час)
# Дальше вставляешь свой обработчик команды
bot.send_message(message.chat.id, "Я могу вам ответить")
# В рабочем коде else убери - это для теста
else:
bot.send_message(message.chat.id, "Я Не могу вам ответить")
bot.polling(none_stop=True)