Top.Mail.Ru
Ответы

Телеграм бот. таймер на получение сообщений

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

По дате
По рейтингу
Аватар пользователя
Ученик

Бот должен получать сообщения, иначе у тебя накопится очередь . А вот отвечать на них или нет - пример реализации тебе уже привели

Аватар пользователя
Ученик

Вот рабочий код решения твоей задачи для библиотеки 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)