Discord.py заставьте бота ждать конкретного ответа

#python #discord #discord.py

Вопрос:

Привет, я хотел закодировать бота для изучения вокала, поэтому, когда я использую-vokabel, бот должен отправлять случайный вокал. Затем бот должен дождаться ответа asnwer, и если ответ будет правильным переводом слова, то бот должен отправить прямо сюда мой код

 @client.event
async def on_message(message):

    vocab_list = ["suburb",
                  "timer"]

    if message.content.startswith("-vokabeln"):
        random_vokabel = random.choice(vocab_list)
        await message.channel.send(random_vokabel)
        if random_vokabel == "suburb":
            
            if message.content.startswith("Vorort"):
                await message.channel.send('richtig')
 

Но это не сработает
Поэтому, когда бот отправляет сообщение, а я отправляю сообщение, ничего не происходит
Кто-нибудь может мне помочь, как это сделать, чтобы все работало так, как я хочу

Ответ №1:

Попробуйте использовать wait_for для чтения документов!

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

1. Я знаю, что это не код для моей платформы, но я уже пробовал использовать wait_for, но он тоже не будет работать, поэтому я переключился на это, потому что подумал, что, возможно, это будет функционально, но опять же то же самое, Как бы вы закодировали его или другой вопрос, знаете ли вы хороший учебник для wait_for?

2. неважно, я попробовал еще раз с wait_for, и теперь все работает так, как я хотел, спасибо за вашу помощь

3. но теперь у меня есть еще два вопроса: 1. Как позволить боту ошибиться, когда ответ неправильный? 2-й Как заставить бота отправить правильный ответ, когда вы ответили неправильно

4. код сейчас такой python if message.content.startswith('-vokabeln'): channel = message.channel random_vokabel = random.choice(vocab_list) await channel.send(random_vokabel) if random_vokabel == "suburb": def check(m): return m.content == 'Vorort' and m.channel == channel msg = await client.wait_for('message', check=check) await channel.send('richtig!')