1
votes

J'essaie de créer une commande d'avatar discord.js et la partie mentionnée ne fonctionne pas correctement

J'ai une commande d'avatar dans mon bot discord. Lorsque l'utilisateur utilise h.avatar , il génère son avatar, ce qui fonctionne très bien. Chaque fois qu'ils essaient d'utiliser h.avatar @user , rien ne se passe.
Voici mon code:

 } if (message.content.startsWith(config.prefix + "avatar")) {
      if (!message.mentions.users.size) {
        const avatarAuthor = new Discord.RichEmbed()
      .setColor(0x333333)
      .setAuthor(message.author.username)
      .setImage(message.author.avatarURL)
        message.channel.send(avatarAuthor);
        let mention = message.mentions.members.first();
        const avatarMention = new Discord.RichEmbed()
        .setColor(0x333333)
        .setAuthor(mention.user.username)
        .setImage(mention.user.avatarURL)
        message.channel.send(avatarMention);


1 commentaires

Cette question semble toujours non résolue, pourriez-vous s'il vous plaît marquer une réponse comme acceptée, ou une réponse autonome si vous avez trouvé la solution? @cyliim


4 Réponses :


6
votes

Vous avez une vérification if (! message.mentions.users.size) { qui ne lance la commande que si vous ne mentionnez personne. Vous devez soit utiliser un else { dans votre code, soit faire:

if (!message.mentions.users.size) {
    message.channel.send('Nobody was mentioned');
    return;
}
// continue command here, after guard clause

Le const user = message.mentions.users.first () || message.author; essaie d'obtenir l'utilisateur qui a été mentionné mais s'il ne trouve personne, il utilisera celui utilisé par l'auteur.

Ceci peut également être utilisé comme ceci:

XXX


0 commentaires

0
votes
 if (message.content.startsWith(prefix + 'avatar')) {
   let user = message.mentions.users.first();
   if(!user) user = message.author;
   let color = message.member.displayHexColor;
   if (color == '#000000') color = message.member.hoistRole.hexColor;
   const embed = new Discord.RichEmbed()
                   .setImage(user.avatarURL)
                   .setColor(color)
    message.channel.send({embed});
 }

1 commentaires

Bienvenue dans Stack Overflow! Bien que ce code puisse résoudre la question, y compris une explication expliquant comment et pourquoi cela résout le problème aiderait vraiment à améliorer la qualité de votre post, et entraînera probablement plus de votes à la hausse. N'oubliez pas que vous répondez à la question des lecteurs à l'avenir, pas seulement à la personne qui la pose maintenant. Veuillez modifier votre réponse pour ajouter des explications et donner une indication des limitations et hypothèses applicables.



0
votes
if(message.content.startsWith(prefix+'av')){
    
        
        if(message.mentions.users.size){
            let member=message.mentions.users.first()
        if(member){
            const emb=new Discord.MessageEmbed().setImage(member.displayAvatarURL()).setTitle(member.username)
            message.channel.send(emb)
            
        }
        else{
            message.channel.send("Sorry none found with that name")

        }
        }else{
            const emb=new Discord.MessageEmbed().setImage(message.author.displayAvatarURL()).setTitle(message.author.username)
            message.channel.send(emb)
        }
}

0 commentaires

0
votes

Il n'y a rien de tel que avatarUrl à moins que vous ne l'ayez défini.
Utilisez ce code pour obtenir l'url d'un utilisateur:

message.channel.send("https://cdn.discordapp.com/avatars/"+message.author.id+"/"+message.author.avatar+".jpeg");

Remplacez simplement message.author par l'utilisateur qui est mentionné


0 commentaires