【问题标题】:Get a range of messages from a channel从频道获取一系列消息
【发布时间】:2018-12-15 09:35:28
【问题描述】:

我试图让用户在输入 !done 之前向机器人提交一堆信息,并让机器人在 init 消息和 !done 消息之间转发所有消息。换句话说,用户的消息日志可能如下所示:

!init
MessageA
MessageB
MessageC
!done

我想提取 !init 和 !done 之间的所有消息,假设我已经将它们的 ID 存储在 messageInitID 和 messageDoneID 中。我不知道可能有多少条消息。

我尝试过.fetchMessages([options]),但[options] 只允许在某个消息之前的消息、在某个消息之后的消息以及在某个消息周围的消息。

有什么方法可以在频道中按时间顺序接收所有消息?还是 ID 已经设计为按时间顺序排列?

编辑:我想我可以使用MessageCollector,并且只提取日期在 !init 日期之后和 !done 日期之前的消息,但这似乎效率很低,因为它会检查 DM 中的每条消息

【问题讨论】:

  • 你试过collected method吗?
  • 最终解决了 .fetchMessages(afterInit).keyArray() 并迭代消息直到找到 !done。似乎是最有效的

标签: javascript node.js discord discord.js


【解决方案1】:

或者 ID 是否已经设计为按时间顺序排列?

ID 的数据类型是“Snowflake”,它被定义为A Twitter snowflake, except the epoch is 2015-01-01T00:00:00.000Z (doc) 所以是的,如果一个 id 比另一个大,它会在以后发送。

我试过 .fetchMessages([options]) 但 [options] 只允许在某个消息之前的消息、在某个消息之后的消息以及在某个消息周围的消息。

但您可以检索!done 消息之前的消息,并过滤!init 之后发送的消息。

【讨论】:

  • 谢谢,现在正在测试,但你打败了我!感谢节省时间
  • 但是您可以检索 !done 消息之前的消息,并过滤 !init 之后发送的消息。 想到了这一点,但想知道是否有更清洁的解决方案。我可能会解决这个问题
猜你喜欢
  • 2020-06-29
  • 2020-12-23
  • 2022-07-17
  • 2016-09-08
  • 1970-01-01
  • 2021-01-19
  • 2020-09-24
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多