javascript - 成员状态命令显示流式传输的人数
问题描述
我为我的不和谐机器人创建了会员状态命令。这是我的代码:
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。无论如何要解决这个问题?提前致谢
解决方案
PresenceStatus viamember.presence.status
只能是online
、idle
或。offline
dnd
要检查用户是否在流式传输,您需要使用Presence 的活动。
member.presence.activities
返回一个Array<Activity>
. 您可以使用ActivityType检查成员是否正在流式传输。
把它们放在一起:
member.presence.activities.forEach(activity => {
if (activity.type == "STREAMING") {
// member is currently streaming
}
});
推荐阅读
- r - 在将其降低到R中的阈值以下之前获取系列中的最后一个数字
- javascript - 如何使用 setTimeout 在 if 条件内返回 JSX 元素
- azure - VSCode:请求连接/GetChildrenForTreeItemRequest 失败,ECONNREFUSED 127.0.0.1:3306
- css - CSS border-bottom-left-radius 不适用于 :before 部分的 mozilla
- node.js - 如何通过剧作家导出 blob 文档来捕获下载事件
- c++ - 有没有办法重载类上所有可能的函数?
- python - 为什么在启动单个工作人员时 sanic 会产生多个线程?
- vba - 寻找更好的方法来设置表单控件的属性
- optimization - 使用 PROC OPTMODEL 创建 SAS 表
- javascript - 打字稿中的联合类型解决不兼容问题