我对这部分代码有疑问:
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)
});
}
}
}
每当其他机器人删除一条消息时,我的机器人将不再起作用。
有什么我可以解决的问题?
答案 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文档,然后看看可以做什么。