为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

弑天下 2021-11-09 15:19:21
我正在为我的新 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.')它只是应该为某人添加静音角色,并完成它。在使用我的禁令和踢命令时,我也遇到了与指定成员相同的问题,它们以相同的方式完成。我愿意接受所有建议,谢谢!
查看完整描述

1 回答

?
海绵宝宝撒

TA贡献1809条经验 获得超8个赞

您需要将装饰器更改为 @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


查看完整回答
反对 回复 2021-11-09
  • 1 回答
  • 0 关注
  • 179 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信