DiscordJS v14获取服务器所有者报错:Cannot read properties of undefined (reading 'user')
Discord.JS v14 解决guildCreate事件获取服务器所有者标签报错问题
错误原因
报错Cannot read properties of undefined (reading 'user')的核心问题是:机器人刚加入服务器时,guild.members.cache并未加载服务器所有者的成员数据,直接用get(ownerId)会返回undefined,自然无法读取user属性。
解决方案
不要依赖成员缓存,改用Discord.js v14提供的fetchOwner()方法直接获取所有者信息,或者显式fetch成员数据。
修正后的代码
module.exports = { name: 'guildCreate', execute: async (guild, client) => { try { // 推荐方法:直接获取所有者成员对象 const owner = await guild.fetchOwner(); console.log(owner.user.tag); // 可选:若需单独获取成员对象,显式fetch // const ownerMember = await guild.members.fetch(guild.ownerId); // console.log(ownerMember.user.tag); } catch (e) { console.error('获取所有者信息失败:', e); } } };
关键说明
guild.fetchOwner()是v14官方推荐的方法,内部会自动处理缓存和网络请求,确保能拿到最新的所有者数据- 所有fetch操作都是异步的,必须加
await关键字 - 避免在新加入服务器的场景下直接读取
members.cache,此时缓存大概率不完整
内容的提问来源于stack exchange,提问作者SadSenpai
相关产品推荐
相关产品推荐

