我需要此清除命令才能仅在特定角色下工作。 我是JS的新手,很多类似的问题已经过时了 或与我的问题无关
bot.on('message', message => {
if (!message.content.startsWith(PREFIX)) return;
let args = message.content.substring(PREFIX.length).split(" ");
switch (args[0]) {
case 'clear':
if (!args[1]) return message.reply('Error, Please define a ammount of messages to delete')
message.channel.bulkDelete(args[1]);
break;
}
})
答案 0 :(得分:2)
如果您具有角色ID,则可以使用Collection#has()
检查用户是否具有该角色。
bot.on('message', message => {
if (!message.content.startsWith(PREFIX)) return;
let args = message.content.substring(PREFIX.length).split(" ");
switch (args[0]) {
case 'clear':
if (!message.member.roles.cache.has(ROLE_ID))
return;
if (!args[1]) return message.reply('Error, Please define a amount of messages to delete')
message.channel.bulkDelete(args[1]);
break;
}
});
即使您更改角色的名称/顺序,这也将继续起作用。您可以通过激活开发人员模式(在设置中的“外观”下),右键单击角色并选择“复制ID”来获取角色ID。
答案 1 :(得分:0)
您可以在some()
的角色上使用GuildMember
来查看他们是否具有角色
bot.on('message', message => {
if (!message.content.startsWith(PREFIX)) return;
let args = message.content.substring(PREFIX.length).split(" ");
switch (args[0]) {
case 'clear':
if (!message.member.roles.cache.some(role => role.name === 'RoleName')) return
if (!args[1]) return message.reply('Error, Please define a ammount of messages to delete')
message.channel.bulkDelete(args[1]);
break;
}
})