Javascript 如何在presence.activities中定义活动?
我试图让机器人在某人上线时为他们添加一个流媒体角色。每个人都告诉我我的代码是正确的,但当我启动bot时,我得到“无法读取未定义的属性‘活动’”。oldMember和newMember过去是oldPresence和newPresence,两者都不起作用Javascript 如何在presence.activities中定义活动?,javascript,node.js,discord,discord.js,Javascript,Node.js,Discord,Discord.js,我试图让机器人在某人上线时为他们添加一个流媒体角色。每个人都告诉我我的代码是正确的,但当我启动bot时,我得到“无法读取未定义的属性‘活动’”。oldMember和newMember过去是oldPresence和newPresence,两者都不起作用 client.on('presenceUpdate', (oldMember, newMember) => { const guild = client.guilds.cache.get('614134721533968484');
client.on('presenceUpdate', (oldMember, newMember) => {
const guild = client.guilds.cache.get('614134721533968484');
const streamingRole = guild.roles.cache.find(role => role.id === '720050658149138444');
const oldGame = oldMember.activities.find(activity => activity.type === 'STREAMING') ? true : false;
const newGame = newMember.activities.find(activity => activity.type === 'STREAMING') ? true : false;
//if (newMember.user.bot || oldMember.presence.activities !== newMember.presence.activities) return;
if (!oldGame && newGame) { // Started playing.
newMember.roles.add(streamingRole)
.then(() => console.log(`${streamingRole.name} added to ${newMember.user.tag}.`))
.catch(console.error);
} else if (oldGame && !newGame) { // Stopped playing.
newMember.roles.remove(streamingRole)
.then(() => console.log(`${streamingRole.name} removed from ${newMember.user.tag}.`))
.catch(console.error);
}
});
您需要使用
presence
属性来访问GuildMember的活动
constoldGame=oldMember.presence.activities.find(activity=>activity.type==='STREAMING')?真:假;
const newGame=newMember.presence.activities.find(activity=>activity.type==='STREAMING')?真:假;
我也试过了,我也遇到了同样的问题。我发现有人说你不需要它,所以我把它拿走了。