Дождитесь сообщения on_member_join с использованием checks (discord.py ) | РЕШАЕМАЯ

#discord #discord.py #discord.py-rewrite

#Discord #discord.py

Вопрос:

Я хочу дождаться личного сообщения, которое было отправлено только участником. Я пытаюсь использовать check параметр для client.wait_for() метода, но, похоже, не могу его получить. Я попытался поставить проверку как response.author , но не сработает, так как я только что назначил response . Также я выполняю это, когда член присоединяется, используя on_member_join который принимает 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
  

Ответ №1:

При добавлении функции проверки в 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
  

Обратите внимание, что мой пример также гарантирует guild , что is None , как вы явно упомянули, ожидает личного сообщения.

Комментарии:

1. Спасибо! Это сработало. Благодаря вам я теперь понимаю, как работают проверки.