#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. Спасибо! Это сработало. Благодаря вам я теперь понимаю, как работают проверки.