【问题标题】:Discord.js get an array of all messages in a channelDiscord.js 获取频道中所有消息的数组
【发布时间】:2020-11-29 00:00:56
【问题描述】:

我正在编写一个 Discord 机器人,我想在其中执行命令 !quote,它会从 ID 为 quotesID 的特定频道中提取随机消息(可能是也可能不是不同的频道) !quote 已发送)。我一直在查看 Discord.js 的文档,但我找不到通过其 ID 获取 TextChannel 的方法,然后使用 TextChannels .messages 函数,从而获取 MessageManager 和消息的集合.

我知道我可以使用msg.guild 获得公会(其中msg!quote 的触发器)或获得tex

我是 JavaScript 和 Discord.js 的新手,所以任何信息都会有所帮助。 (我使用的是 Discord.js 版本 12.2.0)

【问题讨论】:

    标签: javascript node.js discord discord.js


    【解决方案1】:

    如果你想得到一个特定的频道,你需要这样做:

    const channel = client.channels.cache.get("Your channel ID");
    

    然后,在此频道中收集消息(限制设置为最多 100 条消息,因此您不能在此频道中收集超过 100 条消息,除非您有自己的消息存储系统)。

    channel.messages.fetch({ limit: 100 }).then(messages => {
      console.log(`Received ${messages.size} messages`);
      //Iterate through the messages here with the variable "messages".
      messages.forEach(message => console.log(message.content))
    })
    

    【讨论】:

      【解决方案2】:

      正如https://discord.js.org/#/docs/collection/master/class/Collection?scrollTo=array 中所说,您可以使用方法<Collection>.array() 来获取集合中的值数组。就像[...Collection.values()]Array.from(Collection.values())

      【讨论】:

        猜你喜欢
        • 2020-10-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-12-23
        • 1970-01-01
        相关资源
        最近更新 更多