2 javascript node.js discord discord.js
您好,我正在执行服务器状态命令,但我不知道如何在线/离线查找总成员,因此如果有人可以帮助我,那就太棒了。:)
client.on("message", message => {
if (message.author.bot) return false;
if (message.content.toLowerCase() == "stats") {
const Embed = new discord.MessageEmbed();
Embed.setTitle(`Server Stats`)
// Using Collection.filter() to separate the online members from the offline members.
Embed.addField("Online Members", message.guild.members.cache.filter(member => member.presence.status !== "offline").size);
Embed.addField("Offline Members", message.guild.members.cache.filter(member => member.presence.status == "offline").size);
message.channel.send(Embed);
};
});
Run Code Online (Sandbox Code Playgroud)
小智 5
最后,这就是我发现的工作,要求意图。
当涉及到您期望处理的数据量时,维护有状态的应用程序可能很困难,尤其是在规模上。Gateway Intents 是一个帮助您降低计算负担的系统。
无需任何额外努力即可获得有关公会的基本信息。但是在启用特权意图之前,在有效负载中找不到一些数据。作为这个答案的特权意图之一是GUILD_PRESENCES。在这里阅读文档
第 1 步:转到不和谐开发者门户 -> 您的应用程序 -> 机器人,然后选择存在意图
第2步:
const Discord = require('discord.js');
const intents = new Intents([
Intents.NON_PRIVILEGED, // include all non-privileged intents, would be better to specify which ones you actually need
"GUILD_MEMBERS", // lets you request guild members
"GUILD_PRESENCES"
]);
Run Code Online (Sandbox Code Playgroud)
let onlineMembers = (await guild.members.fetch()).filter((member) => !member.user.bot && member.user.presence.status == 'online'); // Remove the bot check as per use
Run Code Online (Sandbox Code Playgroud)
您现在可以检查 4 种状态,这与之前的答案online、offline、idle、 中所做的不同dnd。
| 归档时间: |
|
| 查看次数: |
5565 次 |
| 最近记录: |