找出是否有人有角色Discord.Js
问题描述:
我为服务器做了一个简单的引用bot,但管理员只希望mod +人员能够添加引号以避免垃圾邮件。我去了文档,并做了一切,但我无法得到这个工作。这是我有:找出是否有人有角色Discord.Js
//other code
else if (command === "addquote" && arg) {
let adminRole = message.guild.roles.find("name", "Admin");
let modRole = message.guild.roles.find("name", "Mod");
if(message.member.roles.has(adminRole) || message.member.roles.has(modRole)){
const hasArr = arr.some((el) => {
return el.toLowerCase().replace(/\s/g, '') === arg.toLowerCase().replace(/\s/g, '');
});
if(hasArr){
message.channel.send(arg.replace(/\s+/g,' ').trim() + " is already a Quote");
} else {
fs.appendFileSync('./Quotes.txt', '\r\n' + arg);
message.channel.send("Quote added: " + arg);
arr.push(arg);
}
}
}
这是非常挑剔。有时候,如果用户具有mod角色,大部分时间都不会运行,那么这种方式就会起作用。如果我做
console.log(message.memeber.roles.has(adminRole));
console.log(message.memeber.roles.has(modRole));
两者都会输出为false,但会起作用吗?老实说,我现在不知道这一点。
答
message.member.roles
是一个集合。不要获取角色对象,然后查找它,只需直接在集合中查找角色即可。试试这个:
else if (command === "addquote" && arg) {
if(message.member.roles.find("name", "Admin") || message.member.roles.find("name", "Mod")){
//Rest of your code
}
注意,角色名必须是你把发现,包括是否有任何的角色名称的任何表情符号的名称。
答
Map.has方法检查键而不是值,因此您必须改用角色的ID。
message.member.roles.has(adminRole.id)
message.member.roles.has(modRole.id)
+0
啊,谢谢,但是当我修改并添加了.id部分时,我得到一个错误,说当执行if语句时显示“找不到null的属性” –
我将对此进行测试,当我回家,太感谢你了! –