Javascript 如果用户没有其他角色,则应用角色

Javascript 如果用户没有其他角色,则应用角色,javascript,discord.js,Javascript,Discord.js,无论用户所扮演的角色是什么,他们仍然可以获得公共角色 如果这里的答案很明显,我很抱歉,但我在编写这个机器人时正在学习javascript。我的目标是让用户能够做到!命名并获得一个名为“public”的角色,只要他们没有代码中列出的角色(将军、队长等) 我敢肯定代码是非常难看的。我还在学习。现在,不管他们是否拥有将军/上尉/中尉/等等角色,他们仍然获得了公共角色 client.on('message', async message => { if(message.channel.id ===

无论用户所扮演的角色是什么,他们仍然可以获得公共角色

如果这里的答案很明显,我很抱歉,但我在编写这个机器人时正在学习javascript。我的目标是让用户能够做到!命名并获得一个名为“public”的角色,只要他们没有代码中列出的角色(将军、队长等)

我敢肯定代码是非常难看的。我还在学习。现在,不管他们是否拥有将军/上尉/中尉/等等角色,他们仍然获得了公共角色

client.on('message', async message => {
if(message.channel.id === '535226845654810624') {
    if (message.content.startsWith('!name')) {
        const newname = message.content.split(' ').slice(1).join(' ');
        message.member.setNickname(newname);
        const newrole = message.guild.roles.find(x => x.name === 'Public');
        message.member.addRole(newrole);
        message.delete();
    }
}

这是我在尝试忽略角色add(如果他们有其他角色)之前添加的代码。我不确定如何将此更改为我所要查找的内容。

请查看下面的代码,尝试一下,并让我知道结果是什么。你的代码中有几个错误,我很惊讶你的编辑没有发现(或者至少没有把代码弄错),比如在定义
if
语句之后有一个分号,在
else
语句之后有额外的花括号,等等

无论如何,下面的代码检查输入的命令是否为
!名称
,如果是,则将新昵称分配给用户。之后,它会检查用户是否具有任何指定的角色,如果没有,则会获得一个新角色“Public”

client.on('message', async message => {
  if (message.channel.id === '535226845654810624') {
    if(message.content.startsWith('!name')) {

      // Users are allowed to change their nicknames no matter their roles
      const newname = message.content.split(' ').slice(1).join(' ');
      message.member.setNickname(newname);

      // Define the roles which need to be checked
      const roleNames = ['General', 'Captain', 'Lieutenant', 'Sergeant', 'Corporal', 'Recruit'];

      // If the user does not have any of the roles above, assign them the role 'Public'
      if (!message.member.roles.some(role => roleNames.includes(role.name))) {
        const newrole = message.guild.roles.find(x => x.name === 'Public');
        message.member.addRole(newrole);
        message.delete();
      }
    }
  }
});

看看下面的代码,试试看,让我知道结果是什么。你的代码中有几个错误,我很惊讶你的编辑没有发现(或者至少没有把代码弄错),比如在定义
if
语句之后有一个分号,在
else
语句之后有额外的花括号,等等

无论如何,下面的代码检查输入的命令是否为
!名称
,如果是,则将新昵称分配给用户。之后,它会检查用户是否具有任何指定的角色,如果没有,则会获得一个新角色“Public”

client.on('message', async message => {
  if (message.channel.id === '535226845654810624') {
    if(message.content.startsWith('!name')) {

      // Users are allowed to change their nicknames no matter their roles
      const newname = message.content.split(' ').slice(1).join(' ');
      message.member.setNickname(newname);

      // Define the roles which need to be checked
      const roleNames = ['General', 'Captain', 'Lieutenant', 'Sergeant', 'Corporal', 'Recruit'];

      // If the user does not have any of the roles above, assign them the role 'Public'
      if (!message.member.roles.some(role => roleNames.includes(role.name))) {
        const newrole = message.guild.roles.find(x => x.name === 'Public');
        message.member.addRole(newrole);
        message.delete();
      }
    }
  }
});