Я пытаюсь создать команду! Mute для бота discord.py. Я бы хотел, чтобы он был отформатирован так: !mute @user 10s
. s
означает секунды. Я также хотел бы, чтобы он мог читать m
для минут, h
для часов и d
для дней. А если есть возможность, может быть, даже !mute @user 1d 3h 3s
. Вот код, который у меня есть прямо сейчас.
@client.command()
@commands.has_permissions(kick_members=True)
async def mute(ctx, member: discord.Member, mute_time : int):
guild = ctx.guild
for role in guild.roles:
if role.name == "Muted":
await member.add_roles(role)
await ctx.send("{} has has been muted!" .format(member.mention))
await asyncio.sleep(mute_time)
await member.remove_roles(role)
await ctx.send("{} has been unmuted!" .format(member.mention))
Он отлично работает и сейчас. Он выполняет !mute @user 10
в течение 10 секунд.
У меня также есть команда включения звука. Это работает вот так. !unmute @user
.
@client.command()
@commands.has_permissions(kick_members=True)
async def unmute(ctx, member : discord.Member):
guild = ctx.guild
for role in guild.roles:
if role.name == "Muted":
await member.remove_roles(role)
await ctx.send("{} has has been unmuted!" .format(member.mention))
За исключением того, что у нас возникла проблема с этой командой. Допустим, я выполняю !mute @user 60
. Если я решу включить их с помощью команды !unmute @user
до истечения 60 секунд, они будут успешно включены. Но затем, когда истекли 60 секунд, он снова включает их и отправляет сообщение во второй раз.
Опять же, чтобы уточнить, моя цель - создать команду! Mute, чтобы можно было сделать !mute @user 1d 3s
. s
для секунд, m
для минут, h
для часов, d
для дней, mo
для месяцев и y
для лет.
Любые ответы было бы здорово, спасибо!