应用一个角色,如果用户没有其他角色

问题描述 投票:1回答:1

用户仍然得到公众的作用,无论他们的作用,

我很抱歉,如果这里的答案是相当明显的,但我学习JavaScript我写这篇文章的机器人。我的目标用户能够做到!名,并获得了一个名为“公共”只要他们没有在代码(一般,船长等)中列出的角色的作用。

client.on('message', async message => {
if (message.channel.id === '535226845654810624'); {
    if(message.content.startsWith('!name')) {
        if (message.member.roles.some(role => role.name === 'General', 'Captain', 'Lieutenant', 'Sergeant', 'Corporal', 'Recruit'));
        const newname = message.content.split(' ').slice(1).join(' ');
        message.member.setNickname(newname);
    }

    else {(message.content.startsWith('!name'));} {
        if(message.channel.id === '535226845654810624') {
            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();
        }
    }

我敢肯定的代码是完全丑陋。我还在学习。现在,不管他们有根/上尉/中尉/等角色,他们仍然获得了公众的作用。

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();
    }
}

这是我在试图忽视的作用前加入了代码,如果他们有其他角色添加。我不知道如何改变这就是我要找的。

javascript discord.js
1个回答
0
投票

看看下面的代码,给它一个尝试,让我知道结果是什么。有几个错误你的代码,我很惊讶你的编辑器没有拿起(或至少没有错误出来的代码),例如有,后定义if声明之后额外的大括号分号你else等语句

无论如何,下面检查代码,如果输入的命令是!name并且如果是这样,它分配新的昵称给用户。之后,它会检查,如果用户有任何指定的角色,如果他没有,他得到一个新角色“公共”。

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();
      }
    }
  }
});
© www.soinside.com 2019 - 2024. All rights reserved.