如何使此命令仅适用于某些角色

时间:2020-06-03 17:16:40

标签: discord.js

我需要此清除命令才能仅在特定角色下工作。 我是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;

  }
})

2 个答案:

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