【问题标题】:Python Discord Bot cancel commandPython Discord Bot 取消命令
【发布时间】:2021-04-11 07:13:12
【问题描述】:

您好,我想用 Python 制作一个有趣的 Discord 机器人,我写了一个垃圾邮件命令。现在我想做一个新的命令来阻止它。

命令如下:

@commands.command()
async def spam(self,ctx, msg="hi", *, amount=1):
    for i in range(0, amount):
            await ctx.send(msg)

有没有办法做到这一点?

【问题讨论】:

    标签: python command discord bots


    【解决方案1】:

    有一个简单的解决方案。在函数spam 之外,声明一个具有任何名称(即stop)的bool 变量,并将该值实例化为False。在垃圾邮件功能中。在 spam 函数中,声明 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(1) 行来完成。

    【讨论】:

    • 非常感谢
    • 没问题!玩得开心!
    猜你喜欢
    • 1970-01-01
    • 2018-10-21
    • 2021-03-01
    • 2020-08-11
    • 2021-02-17
    • 2019-03-07
    • 2018-03-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多