javascript - 记录用户存在未识别的 discord.js
问题描述
我有一个名为 Timer Bot 的机器人,我希望它在离线和重新在线时登录。我已启用 Presence Intent 并将其添加到我的客户端
Intents = Discord.Intents
const client = new Discord.Client({ws:{intents: [Intents.FLAGS.GUILD_PRESENCES]}});
当我运行这个脚本时 -
client.on('presenceUpdate', (oldPresence, newPresence) => {
let member = newPresence.member;
if (member.id === '603517534720753686') {
if (oldPresence.status !== newPresence.status) {
let channel = member.guild.channels.cache.get('788547135234375712');
let text = "";
if (newPresence.status === "online") {
text = "**Hello @everyone, Timer Bot is now online! Thank you for your patience.**";
} else if (newPresence.status === "offline") {
text = "**@everyone Due to issues, Timer Bot is currently offline. We apologize for the inconvenience.**";
}
channel.send(text);
}
}
});
我的控制台显示 -
Logged in as Timer Bot Utilities#6525!
/home/runner/TimerUtilities/index.js:25
if (oldPresence.status !== newPresence.status) {
^
TypeError: Cannot read property 'status' of undefined
at Client.<anonymous> (/home/runner/TimerUtilities/index.js:25:25)
at Client.emit (events.js:315:20)
at Client.EventEmitter.emit (domain.js:483:12)
at PresenceUpdateAction.handle (/home/runner/TimerUtilities/node_modules/discord.js/src/client/actions/PresenceUpdate.js:39:19)
at Object.module.exports [as PRESENCE_UPDATE] (/home/runner/TimerUtilities/node_modules/discord.js/src/client/websocket/handlers/PRESENCE_UPDATE.js:4:33)
at WebSocketManager.handlePacket (/home/runner/TimerUtilities/node_modules/discord.js/src/client/websocket/WebSocketManager.js:384:31)
at Immediate.<anonymous> (/home/runner/TimerUtilities/node_modules/discord.js/src/client/websocket/WebSocketManager.js:379:14)
at processImmediate (internal/timers.js:456:21)
看起来 oldPresence 身份不明。有谁知道为什么?
谢谢,布赖恩
解决方案
因为oldPresence可能为 null,这就是 status 返回 undefined 的原因
if (oldPresence && oldPresence.status !== newPresence.status) {
...code
}
推荐阅读
- linux - 管道长标准输出到 tee 命令有时会导致截断
- c# - 是否有一种更有效的方法来进行测验并根据答案是否大部分为是/否而产生两种不同的结果?
- r - 如何从向量列表中的每个字符串向量中选择最长的字符串?
- c# - 在 XAML 中读取位于外部库中的资源文件
- javascript - 如何将背景 JS 动画集成到我的 react 应用程序中?
- java - 如何使用 JUnit4 跳过扫描仪输入
- powershell - 如何更改 PowerShell 提示符以仅显示父目录和当前目录?
- amcharts - 当用户鼠标悬停时,amcharts4 没有为每个系列显示单个工具提示,我该怎么做?
- swift - 阻止 SwiftUI 动画进行水平移动
- java - 如何将游标或记录列表传递给 pl/sql 中的 java 过程?