Bos*_*ssa 7 javascript node.js discord 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');
Run Code Online (Sandbox Code Playgroud)
Fir*_*847 10
Discord.js 通过从消息中获取GuildMember并使用GuildMember#setNickname方法来实现更改昵称。这是设置运行消息的用户的昵称的简单示例:
if (message.content.includes('changeNick')) {
message.member.setNickname(message.content.replace('changeNick ', ''));
}
Run Code Online (Sandbox Code Playgroud)
但这在您的机器人无权设置用户昵称的情况下是行不通的。如果您想设置用户的昵称,则机器人本身必须具有设置昵称的权限。这需要更多技巧,但您可以使用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 ', ''));
}
Run Code Online (Sandbox Code Playgroud)
这将用于设置运行命令的昵称的用户。但是如果我们想改变 BOT 的昵称,而不是用户的昵称呢?嗯,这很简单。我们只需更换message.member.setNickname用message.guild.me.setNickname,类似于我们如何检查的权限。这将更改机器人的昵称,而不是运行命令的用户的昵称。快乐编码!
小智 6
根据Docs,您只能更改公会成员的昵称,因此您需要从其 id 中获取客户端的成员对象,并按照文档中所示设置其昵称,如下所示:
message.guild.members.get(bot.user.id).setNickname("some nickname");
Run Code Online (Sandbox Code Playgroud)
请注意,这并不总是有效,您的客户需要拥有changeNickname否则将无法正常工作
| 归档时间: |
|
| 查看次数: |
21265 次 |
| 最近记录: |