代码之家  ›  专栏  ›  技术社区  ›  Sean

特权太低,setNickname())

  •  1
  • Sean  · 技术社区  · 6 年前
                if (message.content.startsWith(prefix + "nickname ")) {
                var nick = message.content.replace(prefix + "nickname ", "");
                message.member.setNickname("nick");
                message.channel.send('You have *changed* your **nickname** to "' + nick + '" **!**');
            }
    

    我正试图发出命令,通过文本更改作者的昵称。不幸的是,它抛出了一个“特权太低…”的错误,即使我的bot有管理昵称的权限,管理员,甚至在服务器设置中的角色列表的顶部。有人有什么想法吗?

    编辑: 根据答案,服务器的bot不允许修改服务器superior的昵称,尽管它具有最高的角色。我在另一个帐户上运行代码,它运行得完美无瑕。我只是没有给自己取绰号的特权(这基本上可以通过discord实现的/nick命令来完成)。

    1 回复  |  直到 5 年前
        1
  •  5
  •   R4y    5 年前

    discord.js通过从消息中获取帮会成员并使用 GuildMember#setNickname 方法。下面是一个设置运行消息的用户昵称的简单示例:

    if (message.content.includes('changeName')) {
    if (!message.guild.me.hasPermission('MANAGE_NICKNAMES')) return message.channel.send('I don/'t have permission to change your nickname!');
    message.member.setNickname(message.content.replace('changeName ', ''));
    

    }