あなたが助けることができるのだろうか(私はそれを検索し、何も...)私は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');
Docs によると、ギルドメンバーのニックネームのみを変更できるため、クライアントIDからクライアントのメンバーオブジェクトを取得し、ドキュメントのようにニックネームを設定する必要があります。 :
message.guild.members.get(bot.user.id).setNickname("some nickname");
これは常に機能するとは限らないことに注意してください。クライアントはchangeNickname
を持っている必要があります。そうでないと機能しません。
Discord.jsは、メッセージから GuildMember を取得し、 GuildMember#setNickname メソッドを使用して、ニックネームの変更を実装します。メッセージを実行したユーザーのニックネームを設定する簡単な例を次に示します。
if (message.content.includes('changeNick')) {
message.member.setNickname(message.content.replace('changeNick ', ''));
}
しかし、ボットがユーザーのニックネームを設定する権限を持っていない場合、これは単に実行されません。ユーザーのニックネームを設定する場合、ボット自体にニックネームを設定する権限が必要です。これにはもう少し工夫が必要ですが、 Guild#me を使用してGuildMemberを取得し、次に GuildMember#hasPermission を使用してMANAGE_NICKNAMES権限を確認します- Permissions#Flags 。これは多くのことを理解できるので、ここで、先ほど述べたすべてをまとめた例を示します。
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
with message.guild.me.setNickname
、許可の確認方法と同様。これにより、コマンドを実行したユーザーの代わりにボットのニックネームが変更されます。ハッピーコーディング!
message.content.startsWith()
およびmessage.author.setNickname()
を使用します。
client.on('message', message => {
if (message.content.startsWith('changeNick')) {
message.author.setNickname({
nick: message.content.replace('changeNick ', '')
});
}
});
Client.setNickname ()
の代わりに discord.js GuildMember.setNickname functionを使用する必要があります
client.on ('message', async message => {
var nickname = message.content.split (" ").slice (1).join (" ");
if (message.content.startsWith ('setNickname')) {
message.member.setNickname (nickname);
}
});
@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()
経由でユーザーを取得するため、サーバー上のニックネームを編集するにはパーマが必要です。
これを使用すれば動作するはずです
message.guild.members.get("Random ID or something").setNickname("RandomName")
実際には思っているより簡単です。必要なのは、このコードを貼り付けるだけです。
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!");
コードを貼り付けるだけではありません。コピーして貼り付けるだけであれば、すべて読んでみてください。