Mikyc
@Mikyc
Начинающий

Как сделать Бан/мут на время в (m, h, d, y)?

Здравствуйте, у меня уже есть код на временный бан, но хотелось бы, чтобы можно было добавлять к времени например
m - минуты, h - часы, d - дни и y - года, а так же наверное не помешает и в embed место простых букв вводить те же минуты дни и т.д как можно сделать?
@client.command()
@commands.has_permissions(administrator=True)
async def mute(ctx, member: discord.Member, time: int, reason = 'Не указана'):
    emb = discord.Embed(title=f'У игрока {member.name} Был заблокирован чат!', colour=0x9900FF)
    await ctx.channel.purge(limit=1)
    mute_role = discord.utils.get(ctx.guild.roles, name = 'Muted')
    await member.add_roles(mute_role)
    emb.set_author(name = member.name, icon_url=member.avatar_url)
    emb.add_field(name = f'На {time}', value=f'Причина: {reason}')
    await ctx.send(embed=emb)
    await asyncio.sleep(time * 60) #Вот тут функция разбана через время
    await member.remove_roles(mute_role)
    node = discord.Embed(title=f'У игрока {member.name} Был разблокирован чат!', colour=0x9900FF)
    node.set_author(name = member.name, icon_url=member.avatar_url)
    await ctx.send(embed=node)
  • Вопрос задан
  • 135 просмотров
Решения вопроса 1
shurshur
@shurshur
Как-нибудь так можно:

def time_seconds(time: str) -> int:
  if time.endswith('d'):
    return int(time[:-1])*86400
  elif time.endswith('h'):
    return int(time[:-1])*3600
  elif time.endswith('m'):
    return int(time[:-1])*60
  elif time.endswith('s'):
    return int(time[:-1])
  else:
    return int(time)

for t in ['3d','6h','9m','12s','15']:
  s = time_seconds(t)
  print (f"{t} -> {s}")


То же самое и даже больше можно с помощью модуля timeparse
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
26 февр. 2021, в 22:16
10000 руб./за проект
26 февр. 2021, в 21:56
20000 руб./за проект