首页 > 解决方案 > Discord.js 无法读取未定义的属性“活动”

问题描述

我的 discord bot 中有以下 discord.js 代码:

client.on('presenceUpdate', (oldPresence, newPresence) => {
  let member = newPresence.member

  if (member.id === '471501478071238656') {
    if (oldPresence.activities !== newPresence.activities) {

      if (newPresence.status === "online") {
        client.channels.cache.get('860885953765048342').messages.fetch('860892525996539905').then(msg => {
          msg.edit('Online')
        })
      } else if (newPresence.status === "idle") {
        client.channels.cache.get('860885953765048342').messages.fetch('860892525996539905').then(msg => {
          msg.edit('Online')
        })
      } else if (newPresence.status === "dnd") {
        client.channels.cache.get('860885953765048342').messages.fetch('860892525996539905').then(msg => {
          msg.edit('Online')
        })
      } else if (newPresence.status === "offline") {
        client.channels.cache.get('860885953765048342').messages.fetch('860892525996539905').then(msg => {
          msg.edit('Offline')
        })
      }
    }
  } else if (member.id === '578054170628718612') {
    if (oldPresence.activities !== newPresence.activities) {

      if (newPresence.status === "online") {
        client.channels.cache.get('860885953765048342').messages.fetch('860892636235694080').then(msg => {
          msg.edit('Online')
        })
      } else if (newPresence.status === "idle") {
        client.channels.cache.get('860885953765048342').messages.fetch('860892636235694080').then(msg => {
          msg.edit('Online')
        })
      } else if (newPresence.status === "dnd") {
        client.channels.cache.get('860885953765048342').messages.fetch('860892636235694080').then(msg => {
          msg.edit('Online')
        })
      } else if (newPresence.status === "offline") {
        client.channels.cache.get('860885953765048342').messages.fetch('860892636235694080').then(msg => {
          msg.edit('Offline')
        })
      }
    }
  }
})

但是,当运行时(或当用户状态之一发生变化时,不完全确定),代码总是给出以下错误:

/home/runner/Awow/index.js:30 if (oldPresence.activities !== newPresence.activities) { ^ TypeError: Cannot read property 'activities' of undefined

我怎样才能解决这个问题?

注意:客户端在代码开头定义(未显示)

标签: javascriptnode.jsdiscorddiscord.js

解决方案


问题是,当它被调用时,newPresence 始终是 Presence 对象,但 oldPresence 变量可以是未定义的或 Presence 对象。

我不确切知道 oldPresence 何时未定义,因为我在文档中找不到它,但我假设它是在用户之前离线时。

编辑:在这里找到文档


推荐阅读