使用命令中断循环

时间:2017-08-22 18:08:39

标签: python loops command break discord

在我的Python - Discord Bot中,我想创建一个命令,它会导致循环运行。当我输入第二个命令时,循环应该停止。所以大致说:

@client.event
async def on_message(message):
    if message.content.startswith("!C1"):
        while True:
            if message.content.startswith("!C2"):
                break
            else:
                await client.send_message(client.get_channel(ID), "Loopstuff")
                await asyncio.sleep(10)

所以它在频道中每隔10秒发布一次“Loopstuff”并在我进入时停止!C2

但是我无法自己解决这个问题.-。

2 个答案:

答案 0 :(得分:1)

on_message功能message内容中,内容不会改变。因此,另一条消息将导致再次调用on_message。你需要一个同步方法,即。全局变量或类成员变量,当!C2消息到达时将更改。

keepLooping = False

@client.event
async def on_message(message):
    global keepLooping
    if message.content.startswith("!C1"):
        keepLooping = True
        while keepLooping:
            await client.send_message(client.get_channel(ID), "Loopstuff")
            await asyncio.sleep(10)
    elif message.content.startswith("!C2"):
        keepLooping = False

作为旁注,提供一个独立的例子而不仅仅是一个函数是好的。

答案 1 :(得分:0)

(不尝试自己)尝试:

while not message.content.startswith("!C2")

对于While子句,后跟else子句的内容。