【发布时间】:2022-01-12 13:50:01
【问题描述】:
我有一个不和谐的机器人来控制一些 RGB 灯。我想要一个重复的模式。但是,我需要在键入任何新命令后立即中断循环。
@client.command()
async def rainbow(ctx):
await ctx.send("It is rainbow")
while True:
rainbow_cycle(0.001)
我知道虽然真正的循环不能被打破,但我不知道循环这个函数的另一种方法。如果这里需要完整的代码是Github链接https://github.com/MichaelMediaGroup/Discord_controlled_lights/blob/main/discord/main.py
感谢您的帮助
【问题讨论】:
-
您想通过输入同一用户甚至其他人的另一个命令来打破循环吗?
-
while 循环和
rainbow_cycle是阻塞。在此过程中,您的机器人甚至无法处理其他命令,更不用说与它们交互了。可行的方法可能是将您的彩虹循环定义为task 并让您的彩虹命令启动任务循环,而所有其他命令在它处于活动状态时将其停止(最好通过pre-invoke hook)
标签: python-3.x discord discord.py