过滤频道中所有消息的内容

时间:2020-05-14 11:51:17

标签: javascript node.js discord discord.js

我正在编写一个机器人,该机器人记录用户对特定消息(事件)的反应。每个事件都生成一条消息,其中包含它们在日志通道上对其作出反应的事件的ID。现在,如果反应已删除,我正在尝试让该机器人删除事件的所有生成消息。我的代码:

client.on("messageReactionRemove", (reaction, user) => {  

    if(user.bot) return;
    let message = reaction.message;

    ORid = message.id;
    ORid = ORid.toString();

    if(message.channel.id == '709887163084439555') {
        if(message.content.charAt(0) == '|'){

            var logChannel = client.channels.get('710092733254991893')
            logChannel.fetchMessages().then(messages => {
                var msgToRemove = messages.filter(m => message.content.includes(ORid))
                logChannel.bulkDelete(msgToRemove)
            }).catch(err => {
                console.log('Error while doing Bulk Delete');
                console.log(err);
            });                     
        } else return;  
    } else return;
});

第一个ID是事件通道,另一个是生成日志的位置。但是,它不检查日志通道上的所有消息,而是检查事件是否包含其ID,如果是,则清除所有日志。我该怎么做才能解决此问题?

1 个答案:

答案 0 :(得分:1)

您似乎在过滤消息的行中有一个错误:

    var msgToRemove = messages.filter(m => message.content.includes(ORid))

您正在检查message.content.includes(ORid),它将始终为false。 这是因为您使用的是先前定义的message变量,而不是过滤器中的m。编写该行的正确方法是:

    var msgToRemove = messages.filter(m => m.content.includes(ORid))