Discord.js开发机器人hug指令提及用户显示undefined问题求助
问题修复方案
你遇到的undefined报错是属性名大小写拼写错误导致的:
Discord.js中GuildMember对象的服务器内显示名称属性为驼峰命名的displayName,你代码中使用了全小写的displayname,属性名不匹配无法读取到对应值,因此返回undefined。
修复步骤
- 将
embed.setTitle中的mention.displayname修改为mention.displayName即可解决显示问题 - 如果你使用的是Discord.js v13及以上版本,原
message事件已被弃用,需要将事件监听改为messageCreate,否则指令无法正常触发
修正后代码
const Discord = require("discord.js"); const { UserAgent } = require("discord.js/src/util/Constants"); const ytdl = require("ytdl-core"); const Client = new Discord.Client({ intents : [ Discord.Intents.FLAGS.GUILDS, Discord.Intents.FLAGS.GUILD_MESSAGES ] }); const prefix ="<"; Client.on("ready", () => { console.log("bot opérationnel") }); // v13+版本将下方"message"改为"messageCreate" Client.on("message", message => { if (message.author.bot) return; if (message.content.startsWith (prefix + "hug")){ let mention = message.mentions.members.first(); if(mention == undefined){ message.channel.send("u have to hug someone who actually exists"); } else { const embed = new Discord.MessageEmbed() .setColor("DARK_RED") // 仅修改了此处的displayname为displayName .setTitle(":hugging: " + mention.displayName + " received a hug from " + message.author.username + " !") .setImage("https://cdn.weeb.sh/images/ryCG-OatM.gif"); message.channel.send({embeds: [embed]}); } } }); Client.login("token");
内容的提问来源于stack exchange,提问作者jaajsousse
相关产品推荐
相关产品推荐

