web-dev-qa-db-fra.com

Changer le pseudo de l'utilisateur avec discord.js

Je me demande si vous pouvez aider (je ne cherche rien et rien ...). J'apprends à travailler avec le nœud discord.js et je souhaite changer mon pseudo d'utilisateur (pas le nom d'utilisateur lui-même).

Mon code est

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');
4
Bossa

Selon le Docs , vous ne pouvez changer qu'un pseudo de membre de guilde. Vous devez donc obtenir l'objet membre de votre client à partir de son identifiant et le définir comme indiqué dans la documentation, comme ceci:

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

Notez que cela ne fonctionnera pas toujours, votre client devra avoir changeNickname ou cela ne fonctionnera pas

1
Zaidhaan Hussain

Discord.js implémente des pseudonymes changeants en récupérant le GuildMember du message et en utilisant la méthode GuildMember # setNickname . Voici un exemple simple de définition du surnom de l'utilisateur qui a exécuté le message:

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

Mais cela ne fonctionnera tout simplement pas si votre bot n'a pas l'autorisation de définir le pseudo d'un utilisateur. Si vous voulez définir le pseudo d'un utilisateur, le bot lui-même devra être autorisé à définir des pseudonymes. Cela nécessite un peu plus de ruse, mais vous pouvez le faire en utilisant Guild # me pour obtenir GuildMember, puis utilisez GuildMember # hasPermission pour rechercher l’autorisation MANAGE_NICKNAMES trouvée dans Autorisations # Flags . Je sais que cela peut prendre beaucoup de temps, alors voici un exemple de ce que je viens de dire, mis ensemble.

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

Et cela fonctionnera pour définir l'utilisateur qui a exécuté le surnom de la commande. Mais que faire si nous voulons changer le pseudo du BOT, pas celui de l'utilisateur? Eh bien c'est simple. Nous pouvons simplement remplacer message.member.setNickname par message.guild.me.setNickname, de la même manière que nous avons vérifié les autorisations. Cela changera le pseudo du bot au lieu de l'utilisateur qui a exécuté la commande. Bonne codage!

1
FireController1847

Utilisez message.content.startsWith() et message.author.setNickname():

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

comme @Zaidhaan a dit, voici un petit extrait qui ne tente que de définir le pseudo s'il a les permanentes

    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.");
    }

depuis que vous obtenez l'utilisateur via message.guild.members.get(), il faut la perm pour éditer les pseudonymes sur le serveur

0
DEG0029

Cela devrait fonctionner si vous utilisez cette

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

C'est en fait plus facile que vous ne le pensez. Tout ce que vous avez à faire est de coller ce code:

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

Quoi qu'il en soit, pour ce faire, nous devons obtenir le premier utilisateur mentionné. Ce serait:

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

Après cela, nous devons obtenir ce que nous voulons appeler l'utilisateur. Je viens d'utiliser nickReason, vous pouvez faire ce que vous voulez faire.

let nickReason = args.join(" ").slice(22);

Bon, après cela, nous devons vérifier s'il n'y a pas eu d'utilisateur mentionné. C'est facile:

if(!nickedUser) return message.channel.send("No mentioned user.");

Une fois que nous avons ajouté cela, nous devons vérifier s’il existe un nom valide, c’est aussi simple:

if(!nickReason) return message.channel.send("Not having a name is not a good nickname.");

Nous vérifions maintenant s’ils disposent des autorisations MANAGE_NICKNAMES, ce qui est également facile. Nous vérifierons également si l'utilisateur mentionné a l'autorisation 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.");

Bon, maintenant que nous avons cela, nous changeons leur surnom!

nickedUser.setNickname(nickReason);

message.channel.send("Changed " + nickedUser + "'s nickname!");

Je ne vais pas simplement coller le code, vous pouvez aussi bien le lire en entier si vous voulez simplement le copier et le coller, en tout cas, j'espère que j'ai aidé!

0
Toku