首页 > 解决方案 > 使用检查等待消息 on_member_join (discord.py) | 解决了

问题描述

我想等待仅由会员发送的私人消息。我正在尝试使用该方法的check参数,client.wait_for()但我似乎无法得到它。我尝试将支票作为 ,response.author但由于我刚刚分配response. 此外,当成员加入时,我正在执行此操作,使用on_member_joinwhich 接受member参数(像这样async def on_member_join(member)。有人知道如何正确执行此操作吗?任何答案将不胜感激!

这是此的代码:

    await member.send('What is your student number? ')
    response = await client.wait_for('message')
    student_number = response.content

标签: discorddiscord.pydiscord.py-rewrite

解决方案


向 中添加检查函数时wait_for,该检查函数将接收到的消息作为参数。这意味着它将检查机器人收到的每条消息,将所有消息传递给您的检查函数,并等待其中一个使检查返回True

@client.event()
async def on_member_join(member):
    def check(message):
        return message.author.id == member.id and message.guild is None

    await member.send('What is your student number?')
    response = await client.wait_for('message', check=check)
    student_number = response.content

请注意我的示例如何确保guildis None,正如您明确提到的等待私人消息一样。


推荐阅读