[英]Python Discord Bot cancel command
您好,我想用 Python 制作一个有趣的 Discord 机器人,我写了一个垃圾邮件命令。 现在我想做一个新的命令来阻止它。
这是命令:
@commands.command()
async def spam(self,ctx, msg="hi", *, amount=1):
for i in range(0, amount):
await ctx.send(msg)
有没有办法做到这一点?
有一个简单的解决方案。 在 function spam
之外,声明一个具有任何名称(即stop
)的bool
变量,并将该值实例化为False
。 内部垃圾邮件 function。 在垃圾邮件 function 中,声明global stop
并将stop
重新实例化为False
。 然后只需使用 while 循环来知道何时停止,并创建另一个命令,将停止值更新为True
结束垃圾邮件命令。
解决方案如下所示:
stop = False
@commands.command()
async def spam(self, ctx, msg='hi', *, amount=1):
global stop
stop = False
i = 0
while not stop and i < amount:
await ctx.send(msg)
i += 1
@commands.command()
async def stop(self, ctx):
global stop
stop = True
从这里,您可以添加有关您的命令所需的任何其他逻辑。
还建议在消息之间休眠线程,以免服务器过载。 这可以通过导入time
模块并在await ctx.send(msg)
行之后注入行 time.sleep time.sleep(1)
来完成。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.