В настоящее время я пытаюсь создать бота с помощью discord.py, и у меня небольшая проблема: я не знаю, как дождаться ответа автора и чтобы бот опубликовал после него еще одно сообщение. Вот мой код на данный момент:

import discord

client = discord.Client()

@client.event
async def on_ready():
    print('We have logged in as {0.user}'.format(client))

@client.event
async def on_message(message):

    if message.author == client.user:
        return

    if message.content.startswith('.pdfcheckup'):
        await message.channel.send("Quelle matière scolaire cherchez-vous ?\nListe des matières disponibles:\n**```\n1- Histoire\n2- Géographie\n3- EMC\n4- Français\n6- Mathématiques\n7- Physique-Chimie\n8- Enseignement Scientifique\n9- NSI\n10- Anglais\n11- Espagnol\n12- Allemand\n```**")

client.run('[my token]')

Итак, чтобы подвести итог того, что должен сделать мой бот, автор пишет ".pdfcheckup", бот отвечает длинным сообщением, бот ждет, пока автор назовет число от 1 до 12, и в зависимости от числа, выбранного автором. , он отвечает специальным сообщением. Но я тупой, чтобы это сделать.

Спасибо.

0
Mirai 14 Ноя 2020 в 16:32

1 ответ

Лучший ответ

Вы можете использовать Client.wait_for:

def author_check(author):
    return lambda message: message.author == author

# later in your code
await message.channel.send("long message")
msg = await client.wait_for("message", check=author_check(message.author), timeout=30.0)
print(msg.content) # will be whatever the original author sent

Параметр timeout - это максимальное время в секундах для ожидания события.

0
Aplet123 14 Ноя 2020 в 13:38