使用 discord.js 更改用户昵称

新手上路,请多包涵

我想知道你是否可以提供帮助(我搜索了一下,什么也没有……)我正在学习如何使用 discord.js 节点,我想更改我的用户昵称(而不是用户名本身)

我的代码是

const Discord = require('discord.js');
const client = new Discord.Client();
client.on('ready', () => {
    console.log('I am ready!');
});

client.on('message', message => {
    if (message.content.includes('changeNick')) {
        client.setNickname({nick: message.content.replace('changeNick ', '')});
    }
});

client.login('token');

原文由 Bossa 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 324
1 个回答

Discord.js 通过从消息中获取 GuildMember 并使用 GuildMember#setNickname 方法来实现更改昵称。下面是设置运行消息的用户的昵称的简单示例:

 if (message.content.includes('changeNick')) {
    message.member.setNickname(message.content.replace('changeNick ', ''));
}

但如果您的机器人没有设置用户昵称的权限,这根本行不通。如果你想设置用户的昵称,bot 本身必须有设置昵称的权限。这需要更多技巧,但您可以使用 Guild#me 获取 GuildMember,然后使用 GuildMember#hasPermission 检查 Permissions#Flags 中的 MANAGE_NICKNAMES 权限。我知道这可能涉及很多内容,所以这里有一个将我刚才所说的所有内容放在一起的示例。

 if (message.content.includes('changeNick')) {
    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('changeNick ', ''));
}

这将用于设置运行该命令的用户的昵称。但是,如果我们想更改 BOT 的昵称,而不是用户的昵称怎么办?那很简单。我们可以将 message.member.setNickname 替换为 message.guild.me.setNickname ,类似于我们检查权限的方式。这将更改机器人的昵称,而不是运行命令的用户的昵称。编码愉快!

原文由 FireController1847 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题