首页 > 解决方案 > discord.js v13 成员存在未定义

问题描述

我正在尝试使用新的 discord.js 版本 13 来获得用户的存在。我在连接中添加了以下意图:

const INTENTS = [
    Intents.FLAGS.GUILDS,
    Intents.FLAGS.GUILD_PRESENCES,
    Intents.FLAGS.GUILD_MEMBERS,
    Intents.FLAGS.GUILD_MESSAGES,
    Intents.FLAGS.GUILD_WEBHOOKS,
    Intents.FLAGS.DIRECT_MESSAGES
]

但是使用后guild.members.fetch()presence属性是undefined

这就是我试图访问它的方式

guild.members.fetch().then(members => { 
    const online = members.filter((member) => !member.user?.bot && member.user?.presence?.status != 'offline').map((member) => member); 
})

我错过了什么吗?这个用法与 v12 配合得很好,还有什么变化吗?

要添加更多信息,我会presence在活动中获取信息presenceUpdate

client.on('presenceUpdate', (oldMember, newMember) => {
    if (!newMember.user.bot && newMember.status != 'offline') {
        // do something
    }

标签: node.jsdiscorddiscord.js

解决方案


在 v13 中似乎User.presence不是属性。你会需要GuildMember.presence

guild.members.fetch().then(members => { 
    const online = members.filter((member) => !member.user?.bot && member.presence?.status != 'offline').map((member) => member); 
})

推荐阅读