Skip to main content

Cluster Stats

In this example, we will be building off of what was done in the Sharding Example.

Stats Command​

To keep it simple we are going to make a chat command that responds with the bots stats.

src/cluster.js
// Import Client And Intents.
const { Client, Intents } = require('djseed');

// Construct New Bot.
const bot = new Client('replace-with-bot-token', {
intents: [
Intents.FLAGS.GUILDS,
Intents.FLAGS.GUILD_MESSAGES
]
});

...

// Add Listener For Message Create
bot.on('messageCreate', async (msg) => {
// If Message Is !stats.
if (msg.content.toLowerCase() === '!stats') {
// Fetch Fresh Stats.
const stats = await bot.cluster.util.getStats();

// Map Clusters Into Embed Fields.
const mappedStats = stats.map((cluster) => {
let value = `\`\`\``;
value += `Shards: ${cluster.shards.length}\n`;
value += `Guilds: ${cluster.guilds}\n`;
value += `Users: ${cluster.users}`;
value += `\`\`\``;

return {
inline: true,
name: `Cluster ${cluster.id}`,
value: value
}
});

// Send Message.
msg.reply({ embeds: [{
title: "Stats",
fields: mappedStats
}] });
}
});

// Log Bot Into Gateway.
bot.login();

Wrapping Up​

If you send !stats in a channel the bot is in, it should respond with a dynamic embed with imformation on your cluster(s).