所以最近发生的事情是我为我的机器人制作了这行代码:
@client.command(pass_context=True)
async def weewoo(ctx):
for _ in range(number_of_times):
await client.say('example command 1')
if client.wait_for_message(content='~patched'):
await client.say('example command 2')
break
它的工作原理但是当我运行机器人并输入命令时它就像这样:
example command 1
example command 2
我要做的是输入一个开始发送垃圾邮件的命令'示例命令1'并尝试使用命令结束垃圾邮件,并发送一条消息,说明'示例命令2'。但它确实如此。如果有人可以提供帮助那就可以了。
答案 0 :(得分:1)
您必须await
client.wait_for_message
。它返回一个消息对象。更好的方法是创建一个全局变量并在循环时将其设置为true,然后在使用命令patched
时将其设置为false。因此停止循环。
checker = False
@client.command(pass_context=True)
async def weewoo(ctx):
global checker
checker = True
for _ in range(number_of_times):
await client.say('example command 1')
if not checker:
return await client.say('example command 2')
@client.command()
async def patched():
global checker
checker = False
然而,当然,机器人只会发送5条消息,然后停止然后再继续。您可以在垃圾邮件的间隔之间设置1.2秒的间隔。
@client.command(pass_context=True)
async def weewoo(ctx):
global checker
checker = True
for _ in range(number_of_times):
await client.say('example command 1')
if not checker:
return await client.say('example command 2')
await asyncio.sleep(1.2)