我正在为我的新不和谐机器人设置一个静音命令,我对不和谐.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.')
它只是应该将静音角色添加给某人,然后就完成了。在使用我的禁令和踢命令时指定成员时,我也遇到了同样的问题,这都是以相同的方式完成的。
我愿意接受所有建议,谢谢!
最佳答案
您需要将装饰器更改为@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
关于python - 不和谐.py |发出静音命令,无法获取成员名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54698569/