检查Discord.py中的message.content是否在消息中包含成员名称

时间:2020-09-27 04:59:48

标签: python discord.py

我的Discord.py机器人程序中有一个函数,试图检查命令中的参数之一是否是成员的名称。

代码如下:

@client.command()
async def test(ctx, *, message):
    x = message.guild.members
    for member in x:
        if member.name in message.content:
            print(member.name)

例如:$test John Tom Alice 应该在控制台中打印:
约翰
汤姆
爱丽丝

我已经尝试过了,但是这个错误不断弹出:

discord.ext.commands.errors.CommandInvokeError:命令引发了异常:AttributeError:'str'对象没有属性'guild'

有人可以告诉我我的代码有什么问题吗?

2 个答案:

答案 0 :(得分:1)

您的message变量是其内容的字符串,因此您不能为公会成员调用它。您正在寻找的是上下文(ctx)。

@client.command()
async def test(ctx, *, message):
for member in ctx.guild.members:
    if member.name in message:
        print(member.name)

答案 1 :(得分:-2)

您必须检查“消息”参数。根据您的错误,“消息”被视为str变量。因此,“ message”变量将没有公会作为成员。

@client.command()
async def test(ctx, *, message):
    if not hasattr(message,'guild'):
        raise Exception(f'`message` is not valid argument')
    x = message.guild.members
    for member in x:
        if member.name in message.content:
            print(member.name)