当前位置: 首页 > 知识库问答 >
问题:

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

郎聪
2023-03-14

我正在为我的新discord机器人设置一个静音命令,我对discord相当陌生。胡说八道,不明白出了什么问题。我不断地得到一个错误,即没有指定成员,而它显然是指定的。

我在youtube等网站上尝试了很多教程,但它总是略过一两个细节,所以我无法完全理解。如果有人能纠正我的代码,我将不胜感激,因为我仍在学习discord。皮耶。

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

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

共有1个答案

臧友樵
2023-03-14

您需要将装饰器更改为@client.command(pass_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
 类似资料:
  • 问题内容: 最近,我一直在询问有关discord.py的大量问题,这就是其中之一。 有时候,有些人向您的不和谐服务器发送垃圾邮件,但踢或禁止它们似乎太苛刻了。我想到了一个命令,该命令将在给定的时间内删除通道上的所有新消息。 到目前为止,我的代码是: 我这一节中的代码是: 所有使用的变量都在bot的顶部预先定义。 我的问题是,该漫游器会删除其有权访问的所有频道中的所有新消息。我尝试放入该部分,但这使

  • 我试图制作一个命令,显示提及用户的角色。这个命令是一个测试命令,我将在mute命令中实现它。(命令将删除成员的当前角色并添加静音角色) 这就是我所拥有的: 希望有人能帮我。 谢了!

  • 所以我为我的不和谐机器人做了一个静音命令,它会发现是否存在一个“静音”角色,如果不存在,机器人会创建一个“静音”角色,然后把这个角色给提到的成员,目前当我运行命令时,它只给我一个如果命令写入错误,它应该发送的嵌入。 我仍然无法找出问题所在以及原因,我非常想知道代码中的错误以及是否还有我不知道的错误。

  • 如前所述。我正在尝试为我的Discord机器人创建一个临时静音命令。我遇到的问题是,它创建了一个静音的角色,但即使我更改了烫发,用户仍然可以编写消息。除此之外,我还收到了以下弃用警告: (节点:15956)弃用警告:集合#查找:改为传递函数

  • 所以我对这个很陌生。我似乎找不到为什么我的机器人不能检测到玩家何时扮演沉默角色。 我想,如果我把如果(静音)它会检测如果一个成员有角色静音。它唯一做的就是说“那个成员已经静音了”,尽管这个成员根本没有这个角色。我甚至切换了它来检查成员是否有“成员”角色,如果有,删除该角色并添加静音角色,它确实有,但它仍然不会检测成员是否有静音角色,并且只会检测"@成员已静音!",而不是"该成员已静音" 代码: 就

  • 我搜索了整个Stack Overflow,发现了很多关于如何将一个或所有成员移动到语音频道的问题,但答案不符合我的需要,当我尝试让他们看看我是否可以更改它们以满足我的需要时,他们不起作用。 在我的不和谐服务器上,如果你加入了一个名为加入创建频道的语音频道,我希望我的机器人制作一个这样命名的语音频道: f'{成员}的频道',然后自动将该人移动到该频道。我可以让机器人通过使用等待克隆(名称,原因)来制