在我的 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 时停止
但我自己无法弄清楚.-。
在你的里面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
作为旁注,最好提供一个独立的示例,而不仅仅是一个函数。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)