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 文档,看看可以做什么。
我对这部分代码有疑问:
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 文档,看看可以做什么。