【发布时间】:2021-03-08 21:09:13
【问题描述】:
我试图只允许具有 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);
}
// ...
});
【问题讨论】:
-
您缺少
!:if (!message.member.roles.cache.some(role => role.name === 'Staff')) return;- 当员工角色存在时,您拥有它的方式不允许使用。此外,在if中包含函数绝不是一个好主意。 -
嗯,我在哪里放 cahe 角色名称
-
哦,等一下,让我对我的代码做一个快速测试
-
好吧,我明白你的意思了。另外我应该把函数 instedt 放在哪里?
-
在上限范围内的某处。如果确实解决了您的问题,我会将其发布为答案
标签: node.js discord.js