@Pavel-Kosii

Kак сделать задержку между командами в aiogram?

я хочу сделать так, что когда пользователь использует команду, к примеру - /wasd. То у него появляется так называемое к/д, но так же хотелось бы реализовать данный код с использование sql. На просторах великого интернета я находил подобные вопросы, но ответ был один и тот же, это использование time.sleep(). Есть ли какие то другие способы?
  • Вопрос задан
  • 51 просмотр
Решения вопроса 1
GavriKos
@GavriKos
За time.sleep надо голову оторвать. Это заблочит всего бота и другие пользователи не смогут его использовать.

Правильный вариант - не делать таймер, а делать переменную (для каждого пользователя - и хранить как раз в БД), в которой будет время окончания КД. Ввел пользователь команду - проверили достигнуто ли время окончания КД. Не достигнуто - шлем "команда на перезагрузке". Достигнуто - выполняем команду и заново устанавливаем новое время окончания КД (текущее время +время на кд)
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@Everything_is_bad
1. за time.sleep() в asyncio бьют ногами
2. если тут aiogram, значит рядом есть и redis, создавай в нем ключ с id пользователя с нужным временем жизни, потом пишешь middleware с проверкой на этот ключ, если он есть, то игнорируешь запросы от этого юзера
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы