我的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'
有人可以告诉我我的代码有什么问题吗?
答案 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)