discord.py-переписать wait_for () отменить - PullRequest
0 голосов
/ 04 мая 2020

Я создаю диск-бот с перезаписью, когда команда запускается, событие должно завершиться sh, но если я хочу выполнить другую команду, я не могу, потому что предыдущая не закончена, и она отправит другую сообщения, как я могу остановить это?

@client.event
async def on_message(message):
    def check(m):
        return m.channel == message.channel and m.author != client.user

    if message.content.startswith("!order"):
        channel = message.author
        await channel.send("in game name")
        in_game_name = await client.wait_for('message', check=check)

        await channel.send("in game ID")
        in_game_ID = await client.wait_for('message', check=check)

        await channel.send("cargo type")
        cargo_type = await client.wait_for('message', check=check)

        await channel.send("cargo limit")
        cargo_limit = await client.wait_for('message', check=check)

        await channel.send("storage")
        storage = await client.wait_for('message', check=check)

        await channel.send("priority")
        priority = await client.wait_for('message', check=check)

1 Ответ

1 голос
/ 04 мая 2020

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

@client.event
async def on_message(message):
    def check(m):
        if m.channel == message.channel and m.content == "CANCEL":
            raise ValueError("Cancelled command")
        return m.channel == message.channel and m.author != client.user

    if message.content.startswith("!order"):
        channel = message.author
        await channel.send("in game name")
        in_game_name = await client.wait_for('message', check=check)
...