我正在为新的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命令时,也存在与指定成员相同的问题,这是通过相同的方式完成的。
我愿意接受所有建议,谢谢!
答案 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