更改discord.js中的昵称

时间:2018-06-30 04:46:51

标签: discord.js

所以我看了不少论坛帖子,找不到适合我的代码的东西。

我正在尝试做这样的事情...

          case "setnick":
         if (args[1]) {
            if (message.guild.me.hasPermission("MANAGE_NICKNAMES")) {
                if (message.member.hasPermission("CHANGE_NICKNAME"))
                  message.member.setNickname(args[1])
                  else message.channel.send("You do not have the permissions! **(CHANGE_NICKNAME)**")
            } 
             else message.channel.send("The bot does not have the permissions! **(MANAGE_NICKNAMES)**")
         }
          else message.channel.send("There's no argument to set your nickname too! **Eg. f!setnick NICKNAME**")
          break;

因此它检查是否存在类似的参数

f!setnick NICKNAME

然后检查该漫游器是否具有权限MANAGE_NICKNAMES

如果没有,则发送聊天消息。

然后检查用户是否具有权限CHANGE_NICKNAME 所以我想知道为什么它不起作用。

任何理由吗?

3 个答案:

答案 0 :(得分:1)

您是否尝试过检查它是否还能对您自己的其他用户起作用?如果您在层次结构中比它更高/相同,则机器人无法执行管理员命令(例如更改某人的昵称),并且看到所有者是最终的权力,它可能会返回权限错误。

尝试捕获它,看看错误是什么

message.member.setNickname(args[1]).catch(e=>console.log(e))

如果它返回DiscordAPIError:特权太低...那么我的理论是正确的。它应该适合较低的用户。

答案 1 :(得分:0)

message.member.me并没有吸引机器人的用户,而是让用户发送了消息。尝试message.guild.members.find("id", client.user.id).hasPermission("MANAGE_NICKNAMES")

答案 2 :(得分:-1)

也应该是args [0],因为第一个参数是0