Преобразовать таймер перезарядки в discord.py в формате часов: мин: сек

#python #discord #discord.py

#python #Discord #discord.py

Вопрос:

У меня есть бот, созданный с использованием discord.py . Я добавил команду suggest и добавил к ней время перезарядки. После этого я добавил этот код:

 @suggest.error
async def suggest_error(ctx, error):
    if isinstance(error, commands.CommandOnCooldown):
        msg = 'You are too fast! Please try again in {:.2f}s'.format(error.retry_after)
        await ctx.send(msg)
    else:
        raise error
  

Теперь он показывает время в секундах, как мне заставить его отображаться в формате hr: min: sec?

Ответ №1:

Вы можете сделать это с помощью модуля datetime

 import datetime

remaining_time = str(datetime.timedelta(seconds=int(error.retry_after)))
  

Комментарии:

1. @suggest.error асинхронное определение suggest_error(ctx, ошибка): если isinstance(ошибка, команды. CommandOnCooldown): remaining_time = str(datetime.timedelta(seconds = int(error.retry_after))) msg = ‘Вы слишком быстры! Пожалуйста, попробуйте еще раз в ‘ remaining_time await ctx.send (сообщение об ошибке) else: ошибка вызова Я написал это, и я все еще получаю различные ошибки.. Кстати, есть ли способ преобразовать это напрямую: @commands.cooldown(1, 3600, тип = команды. Тип корзины.по умолчанию)

Ответ №2:

 def hms_from_secs(seconds: int) -> str:
    seconds = int(seconds)
    hours = seconds // 3600
    minutes = (seconds % 3600) // 60
    seconds = seconds % 60
    return f"{hours:02} hour(s) {minutes:02} minute(s)"
  

Комментарии:

1. пожалуйста, добавьте некоторые пояснения