Discord.js:TypeError:删除消息后无法读取null的属性“ some”

时间:2018-09-27 00:33:55

标签: javascript discord.js

我对这部分代码有疑问:

sh "applogin -u my_username -p ******"

实际上,当另一台自动程序删除了不和谐的内容时,我收到此错误:“ TypeError:无法读取属性'some'of null”的这部分代码:

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)
            });
        }
    }
}    

每当其他机器人删除一条消息时,我的机器人将不再起作用。

有什么我可以解决的问题?

1 个答案:

答案 0 :(得分:0)

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

似乎您知道您的问题所在,当删除一条消息并尝试阅读它时,您会收到一条错误消息,因为该消息不再存在,因此出现了错误null

如果您不关心解析已删除的消息,那么我假设您可以检查它是否为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文档,然后看看可以做什么。