@sanitardev

Как сделать кулдаун на использование команды в pytelegrambotapi?

Как сделать кулдаун на использование команды в pytelegrambotapi?
Допустим чтобы доить корову можно было раз в час.
  • Вопрос задан
  • 1093 просмотра
Пригласить эксперта
Ответы на вопрос 2
RusiDev
@RusiDev
Примитивный вариант, но с задачей справится
import time


def korova():
    start = 10
    while True:
        time.sleep(1)
        print('Ждите')
        start = start - 1
        if int(start) == 0:
            print('Доим корову')
        else:
            continue

korova()
Ответ написан
Комментировать
Всё что тебе нужно - место для хранения последней даты использования команды и дописать одну проверку в обработчик.
Вот маленький пример:
import datetime

context = {}

@bot.message_handler(commands=["cow"])
def cow_command(message):
    last_command_use_time = context.get(message.user_id)
    if not last_command_use_time or (datetime.datetime.now() - last_command_use_time).hour > 1:
            # Логика команды /cow
            context[message.user_id] = datetime.datetime.now()
    else:
        # Сообщение об ограничениях использования команды

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

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

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