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);
4 Réponses :
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
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}); }
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.
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) } }
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é
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