当我告诉它 10 秒时,为什么我的 tempmute 命令会让人静音 1 秒?

时间:2021-02-21 22:54:25

标签: python discord.py

我的静音命令是让人们静音 1 秒而不是 10 秒,我不知道为什么。有人发现代码有问题吗?

@client.command()
@commands.has_guild_permissions(kick_members=True)
async def mute(ctx, member: discord.Member, time, reason=None):
    muted_role = discord.utils.get(ctx.guild.roles, name="Muted")
    time_convert = {"s":1, "m":60, "h":3600,"d":86400}
    tempmute = int(time[0]) * time_convert[time[-1]]
    await member.add_roles(muted_role)
    await ctx.send(f'{member} has been muted for {time}. Reason: {reason}.', delete_after=5)
    await asyncio.sleep(tempmute)
    await member.remove_roles(muted_role)

1 个答案:

答案 0 :(得分:1)

看起来错误在以下行:

tempmute = int(time[0]) * time_convert[time[-1]]

改为尝试以下操作:

tempmute = int(time[:-1]) * time_convert[time[-1]]

完整代码如下:

@client.command()
@commands.has_guild_permissions(kick_members=True)
async def mute(ctx, member: discord.Member, time, reason=None):
    muted_role = discord.utils.get(ctx.guild.roles, name="Muted")
    time_convert = {"s":1, "m":60, "h":3600,"d":86400}
    tempmute = int(time[:-1]) * time_convert[time[-1]]
    await member.add_roles(muted_role)
    await ctx.send(f'{member} has been muted for {time}. Reason: {reason}.', delete_after=5)
    await asyncio.sleep(tempmute)
    await member.remove_roles(muted_role)

time[0] 是 1,time[-1] 是 m 等等。