是否可以嵌套不和谐机器人的命令?

时间:2019-10-19 22:47:21

标签: python discord discord.py

编码方面的新知识,请耐心等待。我想知道在处理不和谐的bot时是否可以对嵌套命令和响应进行排序。例如,您将使用命令查看您的选项,然后机器人将等待对其消息的响应并相应地回复。我在描述我的意思时遇到了一些麻烦,所以这里有一个例子: 你问机器人 该机器人为您提供了选择 您可以从这些选项中选择 机器人回应您的答案 要么 您要求机器人对您接下来所说的做些事情 机器人要求您说些什么 你说了什么 机器人使用您在回应中说的话

我已经尝试过将on_message命令嵌套到一个已经存在的if语句中,但这显然没有用。我还尝试过添加带有整个message.content内容的另一个if语句,希望该机器人在考虑到响应后才考虑该消息。

async def on_message(message):
    if message.author == client.user:
        return
    if message.content.startswith("!ml"):
        message.content = message.content.lower().replace(' ', '')
        if message.content in command1:
            response = "Hello! To start type !ml menu. You will be given your options. Don't forget to type !ml before " \
                       "everything you tell me, so I know it's me your talking to! Thanks : ) "
        elif message.content in command2:
            response = "test"
            if message.content in top:

            await message.channel.send(response)

我希望僵尸程序在收到回复后会考虑该消息,但是,僵尸程序只是从头开始。

1 个答案:

答案 0 :(得分:0)

输入第一个命令时,请使用某种外部状态(例如,全局变量)来跟踪这一事实。您对第一个命令的响应与第二个命令的响应on_message相同,因此它需要查看该外部状态并确定相应的操作。快速,简便,未经测试(因为我没有设置discord.py)示例:

in_progress = False

async def on_message(message):
    if message.author == client.user:
        return
    elif "start" in message.content and not in_progress:
        in_progress = True
        await message.channel.send("You said `start`. Waiting for you to say `stop`.")
    elif "stop" in message.content and in_progress:
        in_progress = False
        await message.channel.send("You said `stop`. Waiting for you to `start` again.")