无法读取未定义的属性“角色”

时间:2018-08-05 21:50:10

标签: discord.js

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)

有人可以帮我吗?我不擅长调试错误。

1 个答案:

答案 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)