Korol_Kotov
@Korol_Kotov
Человек

Как вывести определённое время discord.py?

Я хочу чтобы когда люди писали .work и потом еще раз писали эту команду, то у них выводилось:
Вы устали! Приходите через 00d 00h 00m 00s
или
Вы устали! Приходите в 20:30:14 PM

Как это сделать? Я перепробовал кучу вариантов, но не могу. Помогите.
  • Вопрос задан
  • 3105 просмотров
Решения вопроса 1
SoreMix
@SoreMix
yellow
Есть специальный декоратор, который вешает кулдаун на команду

@commands.cooldown(1, 30, commands.BucketType.user)

1 - кол-во использований команды
30 - время в секундах, через сколько можно использовать команду еще раз
commands.BucketType.user - ограничение для пользователя

Советую прочитать описание декоратора, чтобы понимать:
https://github.com/Rapptz/discord.py/blob/async/di...

Когда кулдаун тригерится, он вызывает on_command_error

Дальше уже в этой функции делаете что вам нужно. Пример для КД 14 дней:
@commands.cooldown(1, 14*24*60*60, commands.BucketType.user)
@bot.command()
async def work(ctx):
    await ctx.send('hello')

@bot.event
async def on_command_error(ctx, error):
    if isinstance(error, commands.CommandOnCooldown):
        retry_after = str(datetime.timedelta(seconds=error.retry_after)).split('.')[0]
        await ctx.send(f'**Вы устали! Приходите через {retry_after}**')


Форматирование вроде 20:30:14 PM или 00d 00h 00m 00s уже сами сделаете с помощью strftime
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@glebzaharov1
await ctx.send(f"Придите в <t:{timestamp}:T>!")
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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