discord.js avatar头像命令报错TypeError: Cannot read property 'members' of undefined
discord.js avatar命令报错解决方案
你遇到的报错为:
TypeError: Cannot read property 'members' of undefined
该报错触发自代码中const member = message.mentions.members.first() || message.member; 这一行,核心原因是message.mentions属性为undefined,尝试读取其下的members属性触发类型错误,对应可按以下场景排查修复:
传参顺序不匹配
你定义的execute函数参数顺序为(client, message, args),但绝大多数discord.js社区的命令处理模板,调用execute时默认传参顺序为(message, args, client),如果你的框架调用时参数顺序和定义不符,会导致函数内部拿到的message变量实际是其他值,自然不存在mentions属性。
修复方法:调整execute的参数顺序和调用逻辑对齐,通用写法为:execute: async(message, args, client) => { // 原有逻辑 }命令在私聊(DM)频道触发
只有服务器内的消息才会存在message.mentions.members属性,私聊场景下该属性不存在。
修复方法:在函数开头添加频道类型判断:execute: async(client, message, args) => { // 新增判断 if (!message.guild) return message.reply('该命令仅支持在服务器内使用'); // 原有逻辑 }增加属性读取兜底
你可以使用可选链操作符避免访问不存在的属性时报错,调整成员获取逻辑为:const member = message.mentions?.members?.first() || message.member;
内容的提问来源于stack exchange,提问作者Adam
相关产品推荐
相关产品推荐

