发送两个私人消息,并在Discord.py中获得两者的输入

时间:2020-11-11 03:04:52

标签: python python-3.x discord.py discord.py-rewrite

我正在尝试使用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'

如果我删除第二个成员,它可以正常工作,并得到我的输入并打印出我键入的内容,但是第二个成员键入内容却不打印任何内容,当第二个成员发送消息时,错误就会出现

我应该在第二张支票上放些什么?

1 个答案:

答案 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)