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