Javascript discord.js v12检查用户是否开始流媒体
在崩溃之前,它一直按预期工作。每次用户开始流媒体时,它都会发布他们的流链接。 问题是,大约5分钟后,机器人崩溃,我得到下面的错误Javascript discord.js v12检查用户是否开始流媒体,javascript,discord,discord.js,Javascript,Discord,Discord.js,在崩溃之前,它一直按预期工作。每次用户开始流媒体时,它都会发布他们的流链接。 问题是,大约5分钟后,机器人崩溃,我得到下面的错误 let oldStreamingStatus = oldMember.activities.find(activity => activity.type === 'STREAMING') ? true : false; ^ TypeError: Cannot read property '
let oldStreamingStatus = oldMember.activities.find(activity => activity.type === 'STREAMING') ? true : false;
^
TypeError: Cannot read property 'activities' of undefined
下面是我的代码
client.on('presenceUpdate', (oldMember, newMember) => {
let oldStreamingStatus = oldMember.activities.find(activity => activity.type === 'STREAMING') ? true : false;
let newStreamingStatus = newMember.activities.find(activity => activity.type === 'STREAMING') ? true : false;
if (oldStreamingStatus == newStreamingStatus) {
return;
}
if (newStreamingStatus) {
if (newMember.member.roles.cache.some(r => ["Raider","Trial"].includes(r.name))) {
const activity = newMember.activities.find(activity => activity.type === 'STREAMING')
// console.log(newMember.activities)
client.channels.cache.get("731911793257087006").send(`Hey! ${activity.url} is streaming!`);
return;
} else
return;
}});
我试过下面的代码。但是如果有人改变了他们的活动或者他们正在播放流媒体,然后开始收听Spotify,它会发布另一条消息
client.on("presenceUpdate", (oldPresence, newPresence) => {
if (!newPresence.activities) return false;
newPresence.activities.forEach(activity => {
if (activity.type == "STREAMING") {
console.log(`${newPresence.user.tag} is streaming at ${activity.url}.`);
};
});
});
似乎我需要10个声誉来以正确的方式发布图片。对此我深表歉意。如果我们遵循discord.js文档,我们可以看到“oldMember”是可选的: 异常信息显示: 无法读取未定义的属性“活动” 添加附加检查:
client.on('presenceUpdate', (oldMember, newMember) => {
if(!oldMember){
//skip actions or get streaming status based only on newMember activities...
}
在代码的其余部分之前。欢迎使用StackOverflow!请你把问题中的代码换成图片好吗?我为它的外观道歉。我真的希望有人能帮助我。