const Discord = require("discord.js");
const client = new Discord.Client();
const token = "";
client.login(token)
client.on("message", async(message) => {
let staffRole = message.guild.roles.find("name", "Staff");
let staff = message.guild.member(message.author);
if (message.author.id === "424974772959444993" ||
message.member.roles.has(staffRole.id)) {
return;
}
var badWords = [
'asd',
'legionmods',
'verga',
'vrga',
'nmms',
'alv',
'electromods',
'remake'
];
var words = message.content.toLowerCase().trim().match(/\w+|\s+|[^\s\w]+/g);
var containsBadWord = words.some(word => {
return badWords.includes(word);
});
if (containsBadWord) {
message.delete();
message.author.send({embed: {
color: 3447003,
description: `Has dicho una palabra que no esta permitida en este
servidor`
}});
message.channel.send(`${prefix}tempmute ${message.author}`+" 5m palabra
prohibida")
};
});
错误: (节点:4952)UnhandledPromiseRejectionWarning:TypeError:无法读取属性 空的“角色” 在Client.client.on(C:\ Users \ Francisco \ Desktop \ role \ app.js:8:33)
有人可以帮我吗?我不擅长调试错误。
答案 0 :(得分:0)
message.guild
可能返回null
,因为该消息是在dm对话而不是公会中发送的。
您可以通过以下方式避免此问题:
if (message.channel.type !== 'text') return;
此外,自discord.js
v12 +起,一些GuildMemberRoleManager
方法也有所改变。您应该替换:
let staffRole = message.guild.roles.find("name", "Staff");
使用:
let staffRole = message.guild.roles.cache.find(role => role.name === "Staff");
然后替换:
message.member.roles.has(staffRole.id)
使用:
message.member.roles.cache.has(staffRole.id)