有没有办法直接在 Discord.py 中获取用户消息的内容?

时间:2021-03-19 22:17:07

标签: discord discord.py

我正在制作一个 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

1 个答案:

答案 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)