Discord.js: TypeError: Cannot read property 'some' of null when message is deleted

Discord.js: TypeError: Cannot read property 'some' of null when message is deleted

我对这部分代码有疑问:

message.content = message.content.toLowerCase();

var badWords = ["some bad words"];

const rpsInsulte = ["some funny answer"]

var words = message.content.toLowerCase().trim().match(/\w+|\s+|[^\s\w]+/g);

var containsBadWord = words.some(word => { return badWords.includes(word); });

if (containsBadWord) {
    if(message.member.roles.some(r=>["role1"].includes(r.name)) || message.member.roles.some(r=>["role2"].includes(r.name)) || message.member.roles.some(r=>["role3"].includes(r.name))) {                   
        message.channel.send("My message").then(msg => {
            msg.delete(10000)
        });

        if (message.author.bot) return;
        } else {
            var response = rpsInsulte[Math.floor(Math.random()*rpsInsulte .length)];

            message.channel.send(response).then().catch(console.error).then(msg => {
                msg.delete(10000)
            });
        }
    }
}    

实际上,当另一个机器人在 discord 上删除某些内容时,我得到了这个错误:"TypeError: Cannot read property 'some' of null" 这部分代码:

var containsBadWord = words.some(word => {
    return badWords.includes(word);
});

只要消息被另一个机器人删除,我的机器人就不再工作。

我能为这个问题做点什么吗?

作为免责声明,我从未使用过 Discord.js 但这是我的意见。

看来你知道你的问题是什么,当一条消息被删除并且你试图阅读它时,你会得到一个错误,因为该消息不再存在,因此错误中的 null

如果您不关心解析已删除的消息,那么我假设您可以只检查它是否为 null,如果是,则不检查它,如下所示:

// Here is where you get the message, it can either be a message or null because it was deleted.
var words = message.content.toLowerCase().trim().match(/\w+|\s+|[^\s\w]+/g);

// Only use .some on it if it's not null. 
// Basically if there's a message stored in words, do the following and if not, it just gets passed over.
// If you'll notice, it looks just like the lines below where you check for if (containsBadWord).
if (words) {
    var containsBadWord = words.some(word => { return badWords.includes(word); });
}

如果这仍然不能解决您的问题,或者您是否真的需要检查已删除的消息,请告诉我,我将进一步查看 Discord.js 文档,看看可以做什么。