@fruktikuza

Как сделать таймер для запрета команды?

Я хочу сделать так, чтобы после использования команды, ею нельзя было пользоваться 1 час. Как это сделать?
  • Вопрос задан
  • 75 просмотров
Решения вопроса 1
@fruktikuza Автор вопроса
я нашёл решение сам.
Сделать можно так
1. после срабатывания команды надо текущее время + 1 час положить в конфиг( именно в конфиг, потому что, иначе нельзя задать начальное значение времени, когда только запустили программу и при сравнении будет ошибка)
2. при использовании сравнивать время из конфига с текущем временем( но стоит учесть, что файл из конфига будет string, а для сравнении времён надо использовать файл типа datetime)
вот пример кода
import datetime
time_now = datetime.datetime.now() #получения время сейчас
f = open('your_file.py', 'r') #пример получения значения из конфига и преобразованния в тип datetime
time_hour = f.read()
time_hour_type_new = datetime.datetime.strptime(time_hour, '%Y-%m-%d %H:%M:%S.%f') #тут указан вид datetime который нам нужен
f.close()
#сравнение времён будет таким же как и другое любое сравнение т.е
if time_hour_type_new > time_now:
    print('Доступ к команде заблокирован')
else:
    print('Вывод команды')
    f = open('your_file.py', 'w')#блокировка команды
    f.write(str(time_now + datetime.timedelta()))#в значении timedelta указываем на сколько вы хотите заблокировать команду, для часа это будет так timedelta(hours=+1). Для других единиц измерения времени информацию можно посмотреть в конфиге timedata
    f.close()
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
AlexNest
@AlexNest Куратор тега Python
Работаю с Python/Django
1.После срабатывания команды сохранять текущее время + час (в переменную/файл/ячейку бд*)
2.Перед началом логики команды проверять, указано ли в нужном месте (см п.1) время и больше ли текущее указанного.
При этом, нужно учитывать несколько исключений: обновлять время только если команда выполнена, если времени нет - разрешать выполнение, учитывать, что бота могут использовать на разных серваках/чатах (т.е. кулдаун будет разным) и т.д.
* - Вариант с бд несколько излишен. Исключением является случай, когда она уже используется.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы
23 нояб. 2024, в 01:31
1000 руб./за проект
23 нояб. 2024, в 00:16
2000 руб./за проект
22 нояб. 2024, в 23:55
3000 руб./за проект