@Smiron-a
Делаю ботов на python

Как сделать таймер в команде mute?

Как сделать таймер команды мут типо это-го
!mute @test 13m test
  • Вопрос задан
  • 102 просмотра
Пригласить эксперта
Ответы на вопрос 1
Vindicar
@Vindicar
RTFM!
Взять и сделать. В чём конкретно вопрос? Что именно не получается?
Тупой лобовой вариант - использовать простую цепочку вызовов
# выдать мьют
await asyncio.sleep(время) # подождать
# снять мьют
в обработчике команды !mute. Но проблема в том, что если бот будет перезапущен, пока идёт ожидание, он забудет про этот таймер - и юзер останется замьюченным. Кроме того, проблематично будет управлять списком замьюченных.
Вторая мысль - в обработчике !mute выдаём мьют, вычисляем время, когда его нужно снять, и записываем в БД пользователя, сервер, время снятия и причину.
Затем раз в минуту проверяем эту БД на предмет наличия истёкших мьютов, извлекаем их и снимаем.
Плюс - мьют переживёт перезапуск бота, и всегда можно посмотреть кто-когда-насколько-за что.
Минус - так как проверяем раз в минуту, то сроки и остатки меньше минуты будут округлены вверх. Можно исправить, увеличив частоту проверки, но понапрасну долбать бота этой проверкой тоже не стоит.

Сам мьют проще всего реализовать, создав соответствующую роль, и выдавать/снимать её юзеру.

Как-то так. За конкретными ответами "какие методы вызвать" - в документацию. Если нужна помощь с конкретными ошибками - создавай новый вопрос, приводи код (отформатируй кнопкой </>!) и полный текст ошибки.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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