Python Discord Bot:命令无法正常运行

时间:2017-07-24 04:18:23

标签: discord

所以最近发生的事情是我为我的机器人制作了这行代码:

@client.command(pass_context=True)
async def weewoo(ctx):
        for _ in range(number_of_times):
            await client.say('example command 1')
            if client.wait_for_message(content='~patched'):
                await client.say('example command 2')
                break

它的工作原理但是当我运行机器人并输入命令时它就像这样:

example command 1
example command 2

我要做的是输入一个开始发送垃圾邮件的命令'示例命令1'并尝试使用命令结束垃圾邮件,并发送一条消息,说明'示例命令2'。但它确实如此。如果有人可以提供帮助那就可以了。

1 个答案:

答案 0 :(得分:1)

您必须await client.wait_for_message。它返回一个消息对象。更好的方法是创建一个全局变量并在循环时将其设置为true,然后在使用命令patched时将其设置为false。因此停止循环。

checker = False

@client.command(pass_context=True)
async def weewoo(ctx):
    global checker
    checker = True

    for _ in range(number_of_times):
        await client.say('example command 1')
        if not checker:
            return await client.say('example command 2')


@client.command()
async def patched():
    global checker
    checker = False

然而,当然,机器人只会发送5条消息,然后停止然后再继续。您可以在垃圾邮件的间隔之间设置1.2秒的间隔。

@client.command(pass_context=True)
async def weewoo(ctx):
    global checker
    checker = True

    for _ in range(number_of_times):
        await client.say('example command 1')
        if not checker:
            return await client.say('example command 2')

        await asyncio.sleep(1.2)