discord.py |发出静音命令,无法获取成员名称

时间:2019-02-14 20:28:30

标签: python python-3.x discord.py

我正在为新的discord bot设置一个静音命令,我对discord.py相当陌生,并且不了解出了什么问题。 我一直收到这样的错误消息:没有明确指定成员。

我已经在youtube等上尝试了许多教程,但是它总是略过一两个细节,所以我无法完全弄清楚。如果有人可以更正我的代码,我将不胜感激,因为我仍在学习discord.py。

@client.command()
async def mute(context, member: discord.Member=None):
    if not member:
        await client.say('Please specify a member')
        return
    role = get(member.server.roles, name="Muted")
    await client.add_roles(member, role)
    await client.say('{member.mention} was muted.')

仅应将静音角色添加到某人,并完成此操作。在使用我的ban和kick命令时,也存在与指定成员相同的问题,这是通过相同的方式完成的。

我愿意接受所有建议,谢谢!

1 个答案:

答案 0 :(得分:0)

您需要将装饰器更改为@client.command(pass_context=True)。成员名称已分配给context,而member则保留默认值。

@client.command(pass_context=True)
async def mute(context, member: discord.Member=None):
    if not member:
        await client.say('Please specify a member')
        return
    role = get(member.server.roles, name="Muted")
    await client.add_roles(member, role)
    await client.say(f'{member.mention} was muted.')  # You forgot the f

此外,我可能只会让转换失败,然后处理错误:

@client.command(pass_context=True)
async def mute(ctx, member: discord.Member):
    role = get(member.server.roles, name="Muted")
    await client.add_roles(member, role)
    await client.say(f'{member.mention} was muted.')

@mute.error:
async def mute_error(error, ctx):
    if isinstance(error, ConversionError):
        await client.send_message(ctx.message.channel, 'Please specify a member')
    else:
        raise error