Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/xamarin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何在执行另一个命令时中断discord.py命令中的循环?_Python_Loops_Command_Discord.py - Fatal编程技术网

Python 如何在执行另一个命令时中断discord.py命令中的循环?

Python 如何在执行另一个命令时中断discord.py命令中的循环?,python,loops,command,discord.py,Python,Loops,Command,Discord.py,因此,我在我的discord bot(使用discord.py制作)中有一个命令,它基本上是发送一条消息,每条消息之间有一个延迟(以秒为单位)。我通过一个while循环实现了它,有没有一种方法可以在执行不同的命令时中断该循环,而不必等待时间。睡眠(延迟)要完成吗 i、 e 因此,基本上目前正在发生的是,如果我试图使用这个命令来停止前一个命令的工作,我必须等待time.sleep()来完成,这是我不想要的。任何帮助都将不胜感激。请使用。您可以使用cancel()方法立即停止它们 例如: 来自dis

因此,我在我的discord bot(使用discord.py制作)中有一个命令,它基本上是发送一条消息,每条消息之间有一个延迟(以秒为单位)。我通过一个while循环实现了它,有没有一种方法可以在执行不同的命令时中断该循环,而不必等待
时间。睡眠(延迟)
要完成吗

i、 e

因此,基本上目前正在发生的是,如果我试图使用这个命令来停止前一个命令的工作,我必须等待
time.sleep()
来完成,这是我不想要的。任何帮助都将不胜感激。

请使用。您可以使用
cancel()
方法立即停止它们

例如:

来自discord.ext导入任务
@client.command()
异步def激活(ctx,引号,延迟:int):
全局垃圾邮件循环
@tasks.loop(秒=延迟)
异步定义垃圾邮件_循环(q):
等待ctx发送(q)
垃圾邮件_循环。开始(报价)
等待ctx.send(“成功激活垃圾邮件”)
@client.command()
异步def停用(ctx):
spam_loop.cancel()
等待ctx.send(“已成功停用垃圾邮件”)
@client.command()
async def activate(ctx, quote, delay: int):
    await ctx.send("Successfully activated SpamMode")
    global a
    a = 1
    while a == 1:
        await ctx.send(quote)
        time.sleep(delay)
@client.command()
async def deactivate(ctx):
    global a
    a = 2
    await ctx.send("Successfully deactivated SpamMode")