我正在制作一个 Discord Bot,我需要它自动从发送者那里获取输入,该输入不需要前缀就可以输入“o-convo”。然后机器人将响应消息并准备再次等待问题。有没有办法直接获取用户消息的内容?我已经尝试过,但机器人没有响应。控制台中没有错误。如果有人能提供详细信息,将不胜感激!
if message.content.lower().startswith('o-convo'):
channel = message.channel
BotUser = message.author
await channel.send("Conversation locked with " + str(BotUser) + ". Type o-quit to exit.")
while True:
async def on_message(message):
if message.author == BotUser:
convo_message = message.content()
response = bot.get_response(convo_message)
await message.channel.send(response)
elif message.content.lower().startswith('o-quit'):
return
else:
return
break
答案 0 :(得分:0)
在循环内创建 async def on_message
将不起作用,因为没有任何东西告诉库调用它。
相反,库提供了一种通过 Bot.wait_for
执行此操作的方法其中提供了有关如何等待特定消息的示例,这与您当前的 if message.author == BotUser:
行非常相似。
因此,您可以执行类似于以下操作的操作,而不是创建异步定义:
if message.content.lower().startswith('o-convo'):
channel = message.channel
BotUser = message.author
await channel.send("Conversation locked with " + str(BotUser) + ". Type o-quit to exit.")
while True:
def check(m):
return m.author == BotUser or m.content.lower().startswith('o-quit')
response = await bot.wait_for("message",check=check)
if response.content.startswith("o-quit"):
break
else:
await message.channel.send(response.content)