Я хочу, чтобы команды для моего бота discord имели время восстановления. Я пробовал другие методы, но ни один из них, похоже, не работал для того, что у меня есть.
1. Если вы используете commands.Bot интерфейс и создаете команды с помощью декораторов, вы можете использовать встроенную систему перезарядки, в противном случае вам нужно будет создать некоторую форму сопоставления для перезарядки
Ответ №1:
Затем вы можете создать обработчик ошибок, который будет отправлять сообщение, когда вы попытаетесь использовать команду, но оно будет на перезарядке, например:
Я думаю, что это самый простой метод.
1. Да, но я хочу использовать свой метод, поскольку у меня есть и другие соображения, например, отправка сообщения «Привет», если кто-то говорит «Привет»
2. Хорошо, тогда вы можете сделать time.sleep((x seconds)) , но тогда ваш бот не будет отправлять сообщение об ошибке. Но я не лучший в Discord.py , и я думаю, что вы можете сделать вот так.
ЗАХОДИТЕ В МОЙ НОВЫЙ ДИСКОРД СЕРВЕР
Ответ №2:
Я бы предложил использовать переменную для отслеживания погоды, когда команда была использована или до перезарядки.
Это добавит время восстановления для всех пользователей, если вы хотите добавить время восстановления для каждого пользователя, используйте таблицу для проверки погоды, если отдельный пользователь использовал команду.
Ответ №3:
Поскольку вы взаимодействуете с on_message для восстановления, вам нужно будет создать пользовательское отображение восстановления с помощью commands.CooldownMapping.from_cooldown() (ПРИМЕЧАНИЕ: ЭТО НЕ ОПИСАНО В ДОКУМЕНТАХ, ЭТО ТО, ЧТО БЫЛО ПРЕДОСТАВЛЕНО RAPPTZ), получить корзину с помощью метода get_bucket(message) и передать свой объект message в message, затем использовать update_rate_limit() в корзине для проверкиесли у вас ограничена скорость или нет (возвращает bool). Однако эта система совсем ненадежна, поскольку она также запускает перезарядку для обычных сообщений. Использование команд намного проще, поскольку оно полностью документировано, но с недостатком невозможности использования в on_message.
Обе системы имеют недостатки, но использование команд в конечном итоге более документировано и эффективно
Источник: programbox.ru
Что такое кулдаун?
Слово кулдаун было образовано от английского слова «cooldown» (англ. перезарядка, восстановление), благодаря привычке русскоязычных геймеров пополнять свой сленг иностранными игровыми терминами. Кулдаун заклинания обозначает время его перезарядки после использования. Когда кулдаун проходит, заклинание можно снова кастануть по противнику. У разных заклинаний может быть разное время восстановления: от пары секунд до нескольких минут.
Рассылка нарушителей в дискорде | Бот Offender Info
Так же время восстановления может быть и у игровых подземелий, причем отсчет времени начинается после убийства в них боссов. Пока этот кулдаун не спадёт, пройти подземелье снова будет невозможно.
автор вопроса выбрал этот ответ лучшим
комментировать
в избранное ссылка отблагодарить
Lunat ica [14.4K]
7 лет назад
Дословно «Cooldown» (другое название — КД) означает «охлаждать», «остывать», то есть, если говорить о компьютерной игре (например, Дота 2, Warcraft 3) это время ожидания, в течение которого новый предмет или новая сила (способность) будет вне доступности. Другими словами, это перезарядка до следующего использования способностей или предметов. Это время, когда перезаряжаешь оружие, либо время между каждым выстрелом. При перезарядке оружия кулдаун обратно пропорционален скорости стрельбы (речь не только об огнестрельном оружии, но и о холодном, магическом). Употребляется геймерами и в качестве способности, когда на помощь компьютерному герою вступают «защитные кулдауны».
Источник: www.bolshoyvopros.ru
Как сделать так, чтобы время восстановления отображалось в минутах: секундах | discord.py
Кулдаун делает так, что бот, когда есть кулдаун, бот показывает таймер перезарядки в секундах. Я хочу сделать так, чтобы бот показывал это в минутах: секундах. Не знаю, как это сделать.
Этот код имеет время восстановления 5 минут.
TurboFuture 28 Окт 2020 в 12:25
1 ответ
Лучший ответ
Если у вас есть количество секунд, вы можете легко рассчитать количество минут, используя division (//) , а оставшиеся секунды, используя modulo (%) .
>>> x = 83 >>> minutes = str(x // 60) >>> seconds = str(x % 60) >>> print(f»Minutes: | Seconds: «) Minutes: 1 | Seconds: 23
Затем, если хотите, вы можете добавить к ним ведущий ноль, если необходимо.
def leadingZero(time: str): if len(time) > 1: return time return «0» + time
Чтобы «1: 3» отображалось как «01:03».
В результате ваш код будет выглядеть так:
Кроме того, я вижу, что вы на самом деле не поместили свои add_field и ctx.send внутри is_instance (он ниже ), возможно, вы захотите вставить их в табуляцию. Наконец, это должно быть You’re on a cooldown , а не Your .
Источник: question-it.com