如何在不重新启动机器人的情况下停止此discordbot命令?
@bot.command()
async def spam(ctx, *args):
response = ""
for arg in args:
response = response + " " + arg
while True:
await ctx.channel.send(response)
time.sleep(1)
您可以简单地使用变量
bot.some_var = True
while bot.some_var:
await ctx.send(response)
if 'some condition met':
loop = False
如果你想停止命令中的循环:
bot.some_var = True
@bot.command()
async def spam(ctx, *args):
response = ' '.join(args)
while bot.some_var:
await ctx.send(response)
await asyncio.sleep(1)
@bot.command()
async def stop(ctx):
bot.some_var = False
还有两件事:
- 您可以简单地
str.join(list)
,而不是您制作的那个奇怪的for循环 - 使用
asyncio.sleep
而不是time.sleep
,这样代码就不会被阻止