我想做的是创建一个当管理员输入!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")
答案 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")