首页 > 解决方案 > 成员状态命令显示流式传输的人数

问题描述

我为我的不和谐机器人创建了会员状态命令。这是我的代码:

const { stripIndent } = require('common-tags');
client.on("message", (message) => {
    if (message.content.toLocaleLowerCase().startsWith("+members")) {
        const members = message.guild.members.cache.array();
        const online = members.filter((m) => m.presence.status === 'online').length;
        const offline = members.filter((m) => m.presence.status === 'offline').length;
        const dnd = members.filter((m) => m.presence.status === 'dnd').length;
        const afk = members.filter((m) => m.presence.status === 'idle').length;
        const streaming = members.filter((m) => m.presence.status === 'streaming').length;
        const embed = new MessageEmbed()
            .setTitle(`Member Status [${message.guild.members.cache.size}]`)
            .setThumbnail(message.guild.iconURL({ dynamic: true }))
            .setDescription(stripIndent`
           **Online:** \`${online}\` members
             **Busy:** \`${dnd}\` members
            **AFK:** \`${afk}\` members
             **Offline:** \`${offline}\` members
             **Streaming:** \`${streaming}\` members
          `)
            .setFooter(message.member.displayName, message.author.displayAvatarURL({ dynamic: true }))
            .setTimestamp()
            .setColor(message.guild.me.displayHexColor);
        message.channel.send(embed);
    }
});

我也希望显示正在流式传输的人数。然而,即使有用户在流式传输我的机器人在流式传输人数中显示为 0。无论如何要解决这个问题?提前致谢

标签: javascriptnode.jsdiscorddiscord.js

解决方案


PresenceStatus viamember.presence.status只能是onlineidle或。offlinednd

要检查用户是否在流式传输,您需要使用Presence 的活动

member.presence.activities返回一个Array<Activity>. 您可以使用ActivityType检查成员是否正在流式传输。

把它们放在一起:

member.presence.activities.forEach(activity => {
        if (activity.type == "STREAMING") {
            // member is currently streaming
        }
});

推荐阅读