【问题标题】:message filter for bot's messages undefined node.js机器人消息的消息过滤器 undefined node.js
【发布时间】:2019-07-18 07:24:55
【问题描述】:

我有一个机器人来设置游戏的开始。人类输入 /startbrawl 命令来启动游戏设置(创建套牌对象)。但首先需要确定这两名球员。我从另一个命令发送了一条消息,上面写着“玩家 A 是 @[用户名 A]。玩家 B 是 @[用户名 B]。”在这个游戏发生的频道中。我希望这个新命令中的机器人查看频道中发送的第一条消息,该消息始终是“玩家 A 是等等......”消息(并且总是由机器人发送) 并从中提取两个用户名,以便为这个新命令指定谁是玩家 A,谁是玩家 B。我最近的代码(在尝试了多件事之后)是这样的:

if (userInput.startsWith("!startbrawl") === true) {
  message.channel.fetchMessages().then(messages => {
  const botMessages = messages.filter(message => message.author.bot);
    console.log(botMessages.mentions.members.first()) //this will be Player A. I'd repeat same for Player B with .last instead.
  }
}

这给了我一个错误:

(node:15368) UnhandledPromiseRejectionWarning: TypeError: 无法读取 未定义的属性 'first'。

我已将最后一行设为 console.log(botMessages) 以获取有关过滤器找到的消息的所有信息。但是尝试仅提取其中的一部分会导致未定义的问题,或者只是未定义的结果而没有错误。无论哪种方式,有些东西并没有按我认为的那样工作。

我唯一争论过的另一件事是在这个新命令之前从命令中导出变量。播放器 A 和播放器 B 是在用于制作频道的命令中定义的,然后将在其中使用这个新命令。但是,当我在其他实例中使用它时,我从来没有导出变量的运气。我使用命令处理程序,所以我不确定这是否会影响导出变量的工作方式......哪种方法最适合设置纸牌游戏?总的来说,我是一个新手,只是边走边想,所以非常感谢一些建议(除了参加课程,查找基础知识等)。我已经参加了 javascript 的在线课程,并且我最擅长直接弄清楚事情。

提前感谢您的帮助!

【问题讨论】:

  • 从错误信息来看,botMessages.mentions.membersundefinedbotMessages.mentions 是您所期望的吗?您是否正确引用(检查拼写,确保您不需要使用方法等)?
  • 我在使用 botMessages.mentions 时收到一条“未定义”的控制台消息。没有错误信息。我很确定我正确地引用了所有内容。
  • botMessages 对象的结构如何?你真的打算访问这样的提及吗?你能发布你是如何构造botMessages的吗?
  • botMessages 是迄今为止机器人在通道中发送的一条消息的所有信息的集合。它将大量信息打印到控制台。 (i.gyazo.com/72392e56e93d0e5002e6ad4d63ad377e.png 看看它打印的内容)我基本上只需要通过先前发送“玩家 A 是 [用户名],玩家 B 是 [用户名] 的命令”在频道中提到的机器人 (ABBI) 提到的用户名。 "这样我就可以在命令之间保持牌组参考玩家 A 和 B 不变。如果这看起来效率低下(我认为确实如此),请告诉我您将如何处理它。

标签: node.js discord.js


【解决方案1】:

由于botMessages 是一个集合,您希望通过以下方式从中获取 Message 对象 botMessages.first()

所以尝试记录类似

botMessages.first().mentions.members.first()

【讨论】:

  • 这给了我一个名为“GuildMember”的完整集合(与我在 OP 中的图像不同的信息)。在它提供的所有信息中,它只表示一个用户 ID,这是我自己的,因为我在原始机器人帖子中被列为玩家 A,看起来它正在从中提取信息。所以,看起来这让我更接近了,但仍然给我提供了比我需要或认为我要求的更多的信息。
  • 那么你可以使用botMessages.first().mentions.members.first().id来获取ID
  • 完美!这样可行。在发布此之前,我在测试期间踮着脚尖绕过它,但无法完全理解它!非常感谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-09-16
  • 1970-01-01
  • 2022-11-17
  • 2020-07-28
  • 2017-01-17
  • 2018-06-05
  • 1970-01-01
相关资源
最近更新 更多