javascript - 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
我怎样才能解决这个问题?
注意:客户端在代码开头定义(未显示)
解决方案
问题是,当它被调用时,newPresence 始终是 Presence 对象,但 oldPresence 变量可以是未定义的或 Presence 对象。
我不确切知道 oldPresence 何时未定义,因为我在文档中找不到它,但我假设它是在用户之前离线时。
编辑:在这里找到文档
推荐阅读
- javascript - 如何使用 Javascript 或 ExtJs 删除 HTML 块中没有属性的 span 标签
- php - 在 PHP 中通过 foreach 和 mysql 创建分组行
- javascript - 我已经安装了 opusscript / @discordjs/opus 似乎找不到 Opus 引擎
- regex - 正则表达式匹配行,其中第一个单词在该行的其他地方重复
- c# - 如何让visual studio高亮关键词
- cuda - ptxas 抱怨(输入)我悲伤的设备功能
- python - 叶图返回“TypeError:int64 类型的对象不是 JSON 可序列化的”
- android - 在 Android Studio 中打开对话框时,如何让我的活动保持运行?
- ruby-on-rails - 为什么 User.count 返回 0,直到 bin/spring 在 Ruby on Rails 中重新启动?
- laravel - 在 laravel 中设置的变量没有值