我试图只允许具有 Staff 角色的人员运行此命令。
基本上该命令的作用是允许机器人访问 DM 用户
命令是 <prefix>send @RandomUserName <message>
我试图防止随机用户滥用此命令来淹没其他玩家的 DM。
client.on('message', message => {
if (!message.content.startsWith(prefix) || message.author.bot) return;
const args = message.content.slice(prefix.length).trim().split(/ +/);
const command = args.shift().toLowerCase();
if (message.member.roles.cache.some(role => role.name === 'Staff')) return;
if (command === 'send'){
function getUserFromMention(mention) {
if (!mention) return;
if (mention.startsWith('<@') && mention.endsWith('>')) {
mention = mention.slice(2, -1);
if (mention.startsWith('!')) {
mention = mention.slice(1);
}
return mention;
}
}
const user = getUserFromMention(args[0])
let MessageDM = args[1]
client.users.cache.get(user).send(MessageDM);
}
// ...
});
答案 0 :(得分:0)
您在角色检查中遗漏了一个否定 (function myFunction() {
document.getElementById("myDropdown").classList.toggle("show");
var x = document.getElementById("insights");
if (x.innerHTML === "INSIGHTS ▾") {
x.innerHTML = "INSIGHTS ▴";
} else {
x.innerHTML = "INSIGHTS ▾";
}
}
)。您当前的 !
仅在角色存在时评估为 true。但是如果角色不存在,您想if
。
换线
return
到
if (message.member.roles.cache.some(role => role.name === 'Staff')) return;
此外,正如我在评论中提到的,将 if (!message.member.roles.cache.some(role => role.name === 'Staff')) return;
放在 function
中从来都不是一个好主意。我只是把它放在上层范围:
if