"mute" 命令根本不起作用(Discord.py,重写)

"mute" command not working at all (Discord.py, rewrite)

所以我目前正在为我的 Discord 服务器制作一个机器人,我想添加一个 'mute' 命令,但它根本不起作用这是代码(我正在使用 python 3.8.6 )

@client.command()
@commands.has_any_role('Trial Moderator', 'Moderator', 'Administrator', 'Owner')
async def mute(ctx, member : discord.Member, *, reason=None):
    muted_role = get(Guild.roles, id='760885845233631233')
    for role in member.roles:
        if role == muted_role:
            await ctx.send(f'{member} is already muted!')
            break
    member.add_roles(muted_role)
    await ctx.send(f'Muted {member}\nReason: {reason}')

当我 运行 命令时没有错误或任何东西,我 100% 确定我有足够的权限,当我 运行 任何其他命令时它们都能完美地工作

你的错误在这一行:

muted_role = get(Guild.roles, id='760885845233631233')

您的 ID 必须是整数,不能是字符串。您还提供了一个空白 Guild 对象,因此它可以找到任何角色:

muted_role = get(ctx.guild.roles, id=760885845233631233)

您还可以进行一些重构:

@client.command()
@commands.has_any_role('Trial Moderator', 'Moderator', 'Administrator', 'Owner')
async def mute(ctx, member : discord.Member, *, reason=None):
    muted_role = get(ctx.guild.roles, id=760885845233631233)
    if muted_role in member.roles:
        await ctx.send(f'{member} is already muted!')
    else:
        member.add_roles(muted_role)
        await ctx.send(f'Muted {member}\nReason: {reason}')