Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/300.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python discord.py |发出静音命令,can';无法获取成员名称_Python_Python 3.x_Discord.py - Fatal编程技术网

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

Python discord.py |发出静音命令,can';无法获取成员名称,python,python-3.x,discord.py,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

我正在为我的新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命令时,我在指定成员方面也遇到了同样的问题,这两个命令都是以相同的方式执行的


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

您需要将decorator更改为
@client.command(pass\u context=True)
。将成员名称分配给
上下文
,将
成员
保留为默认值

@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

您是否看到异常,或收到“请指定…”消息?你是怎么调用这个的?如果您遇到异常,能否共享该异常的全文?我的shell中没有任何错误,但是bot会要求我指定一个成员,正如代码第4行所述。老实说,我知道最初的问题是在旧版本中,这让我很困惑,但您是否可以使其与我现在使用的“重写”兼容。谢谢@你应该试着自己做,这样你就能理解你的代码在做什么。一些注释:服务器->公会,客户端。添加角色->成员。添加角色,说并发送消息->ctx.send。如果您正在使用错误处理程序,
(error,ctx)
已更改为
(ctx,error)
好的,我将所有内容都更改为重写,但我收到错误:
命令引发异常:NameError:未定义名称“get”
。不太确定该怎么办。
get
来自
discord.utils
。只是导入它。我已经导入了,仍然收到未定义的
get
错误。对不起,打扰你了