Python Discord在命令后获取多个消息

时间:2018-08-17 07:07:42

标签: python discord.py

我想做的是创建一个当管理员输入!start时启动的机器人。此后,用户可以输入仅3个字符的消息。这些消息中的每一个将显示在嵌入式消息中。当管理员按下!stop时,消息将停止记录。现在,我可以!start和!stop了,但是我无法在两者之间获取消息。 msg2变量甚至都不会打印出来。

@client.event
async def on_message(message):
if message.content.startswith('!start'):
    await client.send_message(message.channel, "Starting")

    def check(msg):
         return len(msg.content) == 3

    while (not await client.wait_for_message(author=message.author, content='!stop')):
        msg2 = await client.wait_for_message(check=check)
        print (msg2.content)

    await client.send_message(message.channel, "Stopping")

1 个答案:

答案 0 :(得分:2)

您需要从同一wait_for_message获取所有消息,包括停止消息。否则,您将开始等待stop消息,而永远不会开始等待3个字母的消息。

@client.event
async def on_message(message):    
    if message.content.startswith('!start'):
        await client.send_message(message.channel, "Starting")

        def check(msg):
             return len(msg.content) == 3 or msg.content.startswith('!stop')

        msgs = []
        while True:
            msg2 = await client.wait_for_message(check=check)
            if msg2.content.startswith('!stop'): 
                break
            msgs.append(msg2.content)

        await client.send_message(message.channel, "\n".join(msgs))
        await client.send_message(message.channel, "Stopping")