Discord Bot使用/get info member命令时出现TypeError: Cannot read properties of undefined (reading 'getMember')错误求助
Discord Bot使用/get info member命令时出现TypeError: Cannot read properties of undefined (reading 'getMember')错误求助
嘿,我帮你揪出了几个问题,咱们一个个来解决:
1. 最直接的错误:属性名拼写错误
你在info.js的member子命令里写了interaction.option.getMember("member"),这里的option是单数,但正确的属性名是复数的options!因为interaction对象里存储命令选项的是options属性,单数的option根本不存在,所以才会抛出“Cannot read properties of undefined”的错误——你在一个不存在的属性上调用getMember方法,自然会报错。
2. 隐藏的拼写小问题
还有个容易忽略的细节:member.user.avaterURL里的avater拼错了,正确的是avatar,写成avatarURL才对,不然后面生成嵌入消息的时候会因为找不到这个方法而报错。
3. 必要的权限意图补充
你的Bot客户端初始化时只加了GatewayIntentBits.Guilds意图,但要获取成员的加入时间这类信息,还需要添加GatewayIntentBits.GuildMembers意图,不然Discord API不会返回这些成员相关的敏感数据,后续可能还会出现其他报错。
修正后的代码片段
首先是index.js里的客户端初始化部分:
const client = new Client({ intents: [ GatewayIntentBits.Guilds, GatewayIntentBits.GuildMembers // 新增这个意图 ] })
然后是info.js里的member子命令部分:
case "member": { // 修正:用interaction.options(复数) const member = interaction.options.getMember("member") interaction.reply({embeds: [ new EmbedBuilder() .setTitle(`Infos über ${member.user.tag}`) // 修正拼写:avatarURL .setThumbnail(member.user.avatarURL({dynamic: true})) .addFields([ { name: "Account erstellt", value: `<t:${Math.round(member.user.createdTimestamp/1000)}>`, }, { name: "Joined Server", value: `<t:${Math.round(member.joinedTimestamp/1000)}>`, inline:true } ]) ]}) break }
把这些修改完之后,你的/info member命令应该就能正常工作啦!
备注:内容来源于stack exchange,提问作者Gilles
相关产品推荐
相关产品推荐

