繁体   English   中英

Python Discord 机器人取消命令

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM