Python Discord Bot 取消命令

问题描述 投票:0回答:2

你好,我想用 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
2个回答
0
投票

对此有一个简单的解决方案。在函数

spam
之外,声明一个具有任意名称的
bool
变量(即
stop
),并将该值实例化为
False
。里面有垃圾邮件功能。在垃圾邮件函数中,声明
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
模块并在
time.sleep(1)
行之后注入
await ctx.send(msg)
行来完成。


0
投票

只是厌恶。咄咄逼人。说我的孩子坏话,蛇也生病了。我会提供一张我健康宝宝的照片。这家伙太犯规了

© www.soinside.com 2019 - 2024. All rights reserved.