Jestem początkującym Discord.py i walczy o znalezienie odpowiedzi na to. Chcę zrobić mój dyskord bot odpowiedzieć na "Message2" tylko po wysłaniu "wiadomości1". Na przykład,

@client.event
async def on_message(message):
    if message.content.lower() == '!rps':
        await message.channel.send("Input your choice!)"

Tutaj chciałbym, aby użytkownik wejdzie! RPS, który chciałbym sprawdzić jego dalszą odpowiedź rock / papier / nożyczki i pozwól, aby bot odpowiedział odpowiednio. Jak sprawić, że bot czeka na następną wiadomość użytkownika po wprowadzeniu użytkownika "! RPS"

2
n0sound 22 listopad 2020, 02:59

1 odpowiedź

Najlepsza odpowiedź

Możesz zrobić bot czekać na wejście użytkownika Wait_For Funkcja!

async def on_message(message):
    if message.content.lower() == '!rps':
        await message.channel.send("Input your choice!)"
        def check(m):
            return m.content in ['rock','paper','scissors'] and m.channel == channel and m.author == message.author
        msg = await client.wait_for('message', check=check)
        #msg variable stores the new user input(rock/paper/scissors) [your code down]
        await channel.send(f'User Choosed {msg.content}')

W powyższym kodzie używałem wait_for funkcji, aby czekać na wejście użytkownika! Z pomocą funkcji sprawdzania użyto do sprawdzenia, czy wejście jest ważne, a wejście jest wykonane przez właściwy autor n poprawnego kanału! Jeśli wszystko jest ważne, zaczyna wykonywać pozostały kod

1
Manoj A 22 listopad 2020, 02:49