我正在尝试使用python创建这个Discord机器人,当您给出命令时,它会向两个人发送私人消息,并尝试获取之后发送的消息
@client.command()
async def dm(ctx, member_1:discord.Member, member_2:discord.Member):
await member_1.send(f'sup member 1 type something')
await member_2.send(f'sup member 2 type something')
def check(m):
return m.author == ctx.author
msg1 = await client.wait_for('message', check=check)
def check_2(m):
return m.member_2 == discord.Member
msg2 = await client.wait_for('message', check=check_2)
print(msg1.content)
print(msg2.content)
我的问题是,当第二个成员发送邮件时,它给我一个错误'Message' object has no attribute 'member_2'
如果我删除第二个成员,它可以正常工作,并得到我的输入并打印出我键入的内容,但是第二个成员键入内容却不打印任何内容,当第二个成员发送消息时,错误就会出现
我应该在第二张支票上放些什么?
答案 0 :(得分:0)
您所需要做的就是修复第二条return
语句。
在check
函数中,m
是该函数应检查的消息。
当然,默认情况下,此m
不会具有member_2
属性。
但是真正的问题是:为什么要检查
m.member_2 == discord.Member
如果要检查作者是否是成员(必须是该成员),则必须输入
type(m.author) == discord.Member
您想要的是检查该消息的作者是否为member_2
。然后,您必须输入与第一个检查功能相同的内容:
return m.author == member_2
这是固定代码。顺便说一下,我假设msg_1
是成员1发送的消息,而不是ctx.author
。
def check_1(m):
return m.author == member_1 # checks if the person who sent it is member_1
msg1 = await client.wait_for('message', check=check_1)
def check_2(m):
return m.author == member_2 # checks if the person who sent it is member_2
msg2 = await client.wait_for('message', check=check_2)