Javascript 使用discord.js更改用户昵称

Javascript 使用discord.js更改用户昵称,javascript,node.js,discord,discord.js,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 =>

我想知道你是否能帮忙(我搜索了一下,什么都没有…)我正在学习如何使用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');
根据,您只能更改帮会成员的昵称,因此您需要从其id获取客户端的成员对象,并设置其昵称,如文档所示,如下所示:

message.guild.members.get(bot.user.id).set昵称(“某个昵称”);

请注意,这并不总是有效的,您的客户将需要
更改昵称
,否则它将不起作用

,就像@Zaidhaan所说的,这里有一个小片段,只有当它有烫发时才尝试设置昵称

    if (message.guild.members.get(bot.user.id).hasPermission("MANAGE_NICKNAMES") && message.guild.members.get(bot.user.id).hasPermission("CHANGE_NICKNAME")) {
        message.guild.members.get(bot.user.id).setNickname("Nickname Here");
    } else {
        message.channel.sendMessage("I dont have the permissons to change my nickname in this server.");
    }

由于您是通过
message.guild.members.get()获取用户的
,因此需要Perm在服务器上编辑昵称

如果您使用此选项,它应该可以工作

message.guild.members.get("Random ID or something").setNickname("RandomName")

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

if (message.content.includes('changeNick')) {
    message.member.setNickname(message.content.replace('changeNick ', ''));
}
但是,如果你的机器人没有设置用户昵称的权限,这就不行了。如果要设置用户的昵称,则bot本身必须具有设置昵称的权限。这需要更多的技巧,但您可以使用来获取GuildMember,然后使用来检查中的MANAGE_昵称权限。我知道这有很多可以理解的地方,所以这里有一个例子,把我刚才说的每件事都放在一起

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 ', ''));
}

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

使用
message.content.startsWith()和
message.author.set昵称()


为此,我们需要获得第一个提到的用户。 这样做将是:

let nickedUser = message.mentions.users.first();
在我们这样做之后,我们需要得到我们想要调用的用户。我只是用尼克雷森,你可以做任何你想做的事

let nickReason = args.join(" ").slice(22);
好的,在那之后我们需要检查是否没有提到用户。这很简单:

if(!nickedUser) return message.channel.send("No mentioned user.");
添加后,我们需要检查是否有有效名称,这也很简单:

if(!nickReason) return message.channel.send("Not having a name is not a good nickname.");
现在我们检查他们是否有
MANAGE_昵称
权限,这也很简单。我们还将检查提到的用户是否具有
MANAGE\u昵称
权限:

if(!message.member.hasPermission("MANAGE_NICKNAMES")) return message.channel.send("No permissions!");

if(nick.hasPermission("MANAGE_NICKNAMES")) return message.channel.send("No need to change the nickname of someone that can change nicknames as well.");
好的,现在我们有了这个,我们改变他们的昵称

nickedUser.setNickname(nickReason);

message.channel.send("Changed " + nickedUser + "'s nickname!");
您是否应该使用函数而不是
Client.set昵称()


您可以像这样使用GuildMember#set昵称函数:

var nick=message.content.split(“”).slice(1.join(“”);
message.member.set昵称(nick);

根据文档中的示例,类似

message.guild.members.get(message.author.id).set昵称(“”)


如果您希望用户只能通过该命令更改其nick,则将为您提供所需的结果。

看起来是您试图给您的机器人一个昵称 要更改机器人的昵称,请使用以下命令:

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

client.on('message', message => {
    let args = message.content.split(" ");

    if (args[0].toLowerCase() === "changenick") { //command is 'changeNick <new nickname>
       var newNickname = args.slice(1).join(" ");
       message.guild.me.setNickname(newNickname);
    }
});
const Discord = require('discord.js');
const client = new Discord.Client();
client.on('ready', () => {
    console.log('I am ready!');
});

client.on('message', message => {

    let args = message.content.split(" ");

    if(args[0].toLowerCase() === "changenick"){ //command is 'changeNick <@usertag> <new nickname>'
        if(!message.mentions.users.first()) return message.channel.send("You didn't specify a user!");
         const user = message.mentions.members.first();
         var newNickname = args.slice(2).join(" ");
         user.setNickname(newNickname);
    }
});
const Discord=require('Discord.js');
const client=new Discord.client();
client.on('ready',()=>{
console.log('我准备好了!');
});
client.on('message',message=>{
设args=message.content.split(“”);
if(args[0].toLowerCase()==“changenick”){//命令为“changenick
var new昵称=args.slice(1).join(“”);
message.guild.me.set昵称(new昵称);
}
});
如果要更改用户昵称,应使用以下命令:

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

client.on('message', message => {
    let args = message.content.split(" ");

    if (args[0].toLowerCase() === "changenick") { //command is 'changeNick <new nickname>
       var newNickname = args.slice(1).join(" ");
       message.guild.me.setNickname(newNickname);
    }
});
const Discord = require('discord.js');
const client = new Discord.Client();
client.on('ready', () => {
    console.log('I am ready!');
});

client.on('message', message => {

    let args = message.content.split(" ");

    if(args[0].toLowerCase() === "changenick"){ //command is 'changeNick <@usertag> <new nickname>'
        if(!message.mentions.users.first()) return message.channel.send("You didn't specify a user!");
         const user = message.mentions.members.first();
         var newNickname = args.slice(2).join(" ");
         user.setNickname(newNickname);
    }
});
const Discord=require('Discord.js');
const client=new Discord.client();
client.on('ready',()=>{
console.log('我准备好了!');
});
client.on('message',message=>{
设args=message.content.split(“”);
if(args[0].toLowerCase()==“changenick”){//命令为“changenick”
if(!message.indications.users.first())返回message.channel.send(“您没有指定用户!”);
const user=message.indications.members.first();
var new昵称=args.slice(2.join)(“”);
user.set昵称(new昵称);
}
});
尝试使用以下方法:


注意:bot应该首先获得
MANAGE_昵称

,以便更好地使用命令,主要变量

let messageArray=message.content.split(“”)

let cmd=messageArray[0]

let args=messageArray.slice(1)

要生成命令,请键入以下内容:
if(cmd=='changeNick'){}

在括号内,我们需要键入成员变量

let-sindedMember=message.sindements.members.first()

let-sindedUser=message.sindements.users.first()

let昵称=args.slice(1).join(“”)

之后,要查看它是否更改了成员的昵称,请键入以下内容:


message.channel.send(提及成员.set昵称)(昵称)

您可以使用GuildMember#set昵称方法进行此操作。让我举一个简单的示例:

const nickName = "PREFERRED NICKNAME"
message.member.setNickname(nickName)
const nickName = "PREFERRED NICKNAME"
message.member.setNickname(nickName)