编码方面的新知识,请耐心等待。我想知道在处理不和谐的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)
我希望僵尸程序在收到回复后会考虑该消息,但是,僵尸程序只是从头开始。
答案 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.")