使用discord.js更改用户昵称

时间:2016-12-20 16:49:08

标签: 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');

13 个答案:

答案 0 :(得分:1)

根据Docs,您只能更改公会成员的昵称,因此您需要从其ID获取客户的成员对象,并设置其昵称,如文档中所示,像这样:

message.guild.members.get(bot.user.id).setNickname("some nickname");

请注意,这不会一直有效,您的客户需要changeNickname,否则无法使用

答案 1 :(得分:1)

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

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

但是,如果您的机器人没有权限设置用户的昵称,这根本不会发生。如果要设置用户的昵称,机器人本身必须具有设置昵称的权限。这需要更多的技巧,但您可以使用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,类似于我们检查权限的方式。这将改变机器人的昵称,而不是运行命令的用户。快乐的编码!

答案 2 :(得分:0)

像@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()获取用户,因此需要权限来编辑服务器上的昵称

答案 3 :(得分:0)

如果您使用此

,它应该有效
message.guild.members.get("Random ID or something").setNickname("RandomName")

答案 4 :(得分:0)

使用message.content.startsWith()message.author.setNickname()

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

答案 5 :(得分:0)

您应该使用discord.js GuildMember.setNickname函数而不是Client.setNickname ()

client.on ('message', async message => {
  var nickname = message.content.split (" ").slice (1).join (" ");
  if (message.content.startsWith ('setNickname')) {
    message.member.setNickname (nickname);
  }
});

答案 6 :(得分:0)

您可以像这样使用GuildMember#setNickname函数:

var nick = message.content.split(" ").slice(1).join(" ");
message.member.setNickname(nick);

答案 7 :(得分:0)

根据文档中的示例,类似

message.guild.members.get(message.author.id).setNickname("");

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

答案 8 :(得分:0)

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

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.toLowerCase().startsWith('changeNick')) {
       var newNickname = message.content.replace("changeNick ", "");
       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(message.content.toLowerCase().startsWith("changeNick")){
        if(!message.mentions.users.first()) return message.channel.send("You didn't specify a user!");
         const user = message.mentions.members.first();
         const username = message.guild.members.cache.find(userI => userI.id == user);
         var newNickname = message.content.replace("changeNick "+args[1], "");
         username.setNickname(newNickname);
    }
});

答案 9 :(得分:0)

尝试使用此功能: Docs Guild#Me

var newNickname = "Nickname !"
message.guild.me.setNickname(newNickname);

注意:漫游器应获取MANAGE_NICKNAMES

答案 10 :(得分:0)

首先,为了让你的命令更好,主要变量。

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

let cmd = messageArray[0];

let args = messageArray.slice(1)

要执行命令,请键入: if (cmd === 'changeNick') { }

在方括号内,我们需要输入成员变量。

let mentionedMember = message.mentions.members.first()

let mentionedUser = message.mentions.users.first()

let nickname = args.slice(1).join(' ')

之后,要查看它确实更改了成员的昵称,请键入:

message.channel.send(mentionedMember.setNickname(nickname)

答案 11 :(得分:0)

您可以为此使用 GuildMember#setNickname 方法。让我举一个简单的例子:

E_Shop

答案 12 :(得分:-2)

实际上比您想象的要容易。您所需要做的就是粘贴以下代码:

Gotem, I'm not pasting the code. Spoon-feeding is a sin, lmao.

无论如何,要做到这一点,我们需要获得第一个提到的用户。 这样做是:

let nickedUser = message.mentions.users.first();

执行完此操作后,我们需要获取想要给用户的名称。我只是使用nickReason,您可以做任何您想做的事。

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_NICKNAMES权限,这也很容易。我们还将检查所提到的用户是否具有MANAGE_NICKNAMES权限:

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!");

我不会只粘贴代码,如果您只想复制并粘贴代码,那么不妨阅读全部内容,希望对您有所帮助!