Cooldown для команды в телеграм боте
начал создавать своего Телеграм бота, но столкнулся с проблемой. Что бы был невозможен фарм валюты я решил сделать кулдаун, но это оказалось не так просто, можете помочь? нужен кулдаун в 60 секунд
def welcome(message):
chat_id = message.chat.id
keyboard = telebot.types.ReplyKeyboardMarkup(resize_keyboard=True)
work = telebot.types.KeyboardButton(text="Заработать ?")
keyboard.add(work)
bot.send_message(chat_id, 'Выберите кнопку',reply_markup=keyboard)
@bot.message_handler(func=lambda message: message.text == 'Заработать ?')
money = random.randint(1000, 5000)
chat_id = message.chat.id
bot.send_message(chat_id, 'Вы заработали ' + str(money) + '?')```
Ответы (1 шт):
Автор решения: BArbosspirat
→ Ссылка
Можно создать словать data = {'member': "last_try(объект datetime)"}
и в функции сравнивать последнее время использования с now(). Как-то так:
@bot.message_handler(func=lambda message: message.text == 'Заработать ?')
def a():
last_try = data.get('айдишник пользователя(я не помню как это делается в telebot)', None)
if last_try is not None:
delta = datetime.datetime.now() - last_try
if delta.total_seconds() < 60:
"""можешь отправить сообщение о том что у него ещё кулдаун"""
return
data['айдишник пользователя'] = datetime.datetime.now()
money = random.randint(1000, 5000)
chat_id = message.chat.id
bot.send_message(chat_id, 'Вы заработали ' + str(money) + '?')