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

标签 python python-3.x discord.py

我正在为我的新不和谐机器人设置一个静音命令,我对不和谐.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/

相关文章:

python - 在 dynamoDB 查询中使用字符串作为 FilterExpression 的参数

python - 如何根据pandas中的条件映射两行不同的数据框

python - 状态检查始终显示用户是 'offline'

python - 找不到docker discord.py ffmpeg.exe

python - ModuleNotFoundError : No module named 'discord'

python - _tkinter.TclError : invalid command name ".54600176" error, 这是怎么回事?

php - 文件名通过 Python 中的连接字符串

python - Python/IPython shell 中的对象字符串表示

python-3.x - Google 云端硬盘文件流文件创建日期

python - 细数汉诺塔的 Action