【问题标题】:Using Discord.js to get all of the messages sent since the bot went offline使用 Discord.js 获取机器人离线后发送的所有消息
【发布时间】:2020-05-16 11:30:07
【问题描述】:

所以我正在制作一个机器人,它将频道中发送的所有消息存储到我计算机上的 txt 文件中。由于我没有一直打开我的计算机并且我在我的计算机上运行机器人,它会在存储在 .txt 文件中的消息中留下空白。我正在努力做到这一点,以便我的机器人能够获取自离线以来发送的所有消息并将所有消息存储在我的文件中。我创建了一个保存每条消息的消息 ID 的 txt 文件,它将覆盖最后一条消息,因此它基本上只是一个包含一个消息 ID 的文件。当我的机器人启动时,一个布尔变量被实例化为 false,一旦启动过程完成,它将被设置为 true。这是我目前所拥有的:

var latest;
var beenRunning = false;

bot.on('message', msg => {
    latest = msg.id;
    if(beenRunning == false) {
      msg.channel.messages.fetch(latest, {limit: 100})
      .then(messages =>  
        //code to get messages since last online
        )
      .catch(console.error);
      beenRunning = true;
    }
    else {
      messageTest(msg);
    }
    fs.writeFile('lastMsg.txt', latest, (err) => { 
      if (err) throw err; 
  }) 
}); 

自从使用 fetch() 方法离线后,我不确定如何获取每条消息。我该怎么做?

【问题讨论】:

    标签: javascript discord.js


    【解决方案1】:

    不确定你是如何构建 lastMsg.txt 的,所以我只使用了 json。

    可能会有点慢,因为它会是一个更大的文件并且它使用很多数组更高的函数

    let logged = require("./lastMsg.json");
    let beenRunning;
    
    bot.on('message', msg => {
        if (!beenRunning) {
            msg.channel.messages.fetch({ limit: 100 })
                .then(messages => {
                    const reduced = messages
                        .map(e => ({ id: e.id, content: e.content }))
                        .filter(e => {
                            return logged.find(l => l.id === e.id && l.content === e.content);
                        });
    
                    logged = logged.concat(reduced.array());
                    beenRunning = true;
                })
                .catch(console.error);
        } else {
            messageTest(msg);
        }
    
        fs.writeFile('lastMsg.json', JSON.stringify(logged), (err) => {
            if (err) throw err;
        })
    });
    

    初始化你的./lastMsg.json []

    【讨论】:

      猜你喜欢
      • 2020-10-26
      • 2021-02-01
      • 2018-06-05
      • 2021-05-08
      • 2020-02-26
      • 1970-01-01
      • 2019-09-20
      • 1970-01-01
      • 2020-04-29
      相关资源
      最近更新 更多