我想知道你是否可以提供帮助(我搜索它没有...)我正在学习如何使用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');
答案 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)
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!");
我不会只粘贴代码,如果您只想复制并粘贴代码,那么不妨阅读全部内容,希望对您有所帮助!