python - discord.py-rewrite wait_for() 取消
问题描述
我正在制作一个带有重写的不和谐机器人,当命令运行时,事件必须完成,但是如果我想执行另一个命令,我不能因为前一个命令还没有完成,它会发送其他消息,我怎么能停止那?
@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)
解决方案
如果它看到某个单词,您可以在检查中引发异常。在这里,如果机器人看到消息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)
推荐阅读
- wcf - 构建和使用 SharePoint 中托管的自定义 WCF 服务
- arrays - Json binding in an array of checkboxes
- python - Python django 加载错误
- go - 与测试一起使用时方法无法访问的全局变量
- ios - 我将如何在 iOS 中制作可拖动的自定义形状瓷砖网格?
- ionic2 - 我们可以在不使用 ionic 3 中的循环的情况下为变量分配除 1 或任何其他整数之外的数字值吗
- sql - Oracle如何选择具有自定义名称的列
- c++ - 在opengl中通过多个渲染目标从自己的帧缓冲区读取输出值不起作用
- azure - 替换 Azure Web 应用中所有 .config 文件中的令牌
- css - Font Awesome 5 在伪元素中选择正确的字体系列