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

2024-04-20 11:32:47 发布

您现在位置:Python中文网/ 问答频道 /正文

我要做的是创建一个机器人,当管理员输入时,它将启动!开始。之后,用户可以输入长度只能为3个字符的消息。这些消息中的每一条都将显示在嵌入的消息中。当管理员命中!停止,消息将停止录制。现在,我可以!开始吧!停下来,但我不能在中间收到信息。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")

Tags: clientsend消息messagefor管理员defcheck
1条回答
网友
1楼 · 发布于 2024-04-20 11:32:47

您需要从同一个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")

相关问题 更多 >