从节点服务器将msg发布到通道后,是否可以获取Discord消息ID?

时间:2019-04-26 05:42:56

标签: node.js express discord.js

我正在Express / Node.js应用程序中使用Discord.js,我试图构建一个可以定期捕获外部数据并使用包含该数据某些元素的嵌入msg更新Discord的机器人。我正在尝试添加一项功能,该功能将检查是否从外部源中删除了该数据(在下一次抓取时不再存在),然后删除Discord中包含已发送数据的特定msg。

Discord中发布的某些msg可能具有重复的数据项,因此我想通过特定的msg ID进行删除,但似乎发布到Discord时已分配了msg ID。

从Discord.js发送时,是否有办法以编程方式获取或返回此味精ID,而不是从Discord GUI手动复制/粘贴味精ID?换句话说,如果发现不再获取msg的源数据,我需要让我的机器人知道要删除的消息。

// FOR-LOOP TO POST DATA TO DISCORD
// see if those IDs are found in persistent array
        for (var i = 0; i < newIDs.length; i++) {
            if (currentIDs.indexOf(newIDs[i]) == -1) {
                currentIDs.push(newIDs[i]); // add to persistent array
                TD.getTicket(33, newIDs[i]) // get ticket object
                .then(ticket => { postDiscord(ticket); }) // post to DISCORD!
            }
        }

        // if an ID in the persistent array is not in temp array,
        // delete from persistent array & existing DISCORD msg.
        // message.delete() - need message ID to get msg object...
        // var msg = channel.fetchMessage(messageID) ?

1 个答案:

答案 0 :(得分:0)

让我推荐您

https://discord.js.org/#/docs/main/stable/class/Message

假设您使用的是异步/等待,您将得到类似的内容:

async () => {
 let message = await channel.send(some message);
 //now you can grab the ID from it like
 console.log(message.id)
}

如果您要使用.then进行承诺,那是相同的想法:

channel.send(some message)
    .then(message => {
     console.log(message.id)
     });

ID是消息的属性,只有在收到Discord API的响应后才能获取ID。这意味着您必须异步处理它们。