Skip to content
This repository was archived by the owner on Sep 28, 2024. It is now read-only.
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
165 changes: 87 additions & 78 deletions index.js
Original file line number Diff line number Diff line change
Expand Up @@ -9,102 +9,111 @@ const package = require("./package.json");

require("dotenv").config();

// Register Bot Commands
handleCommands();

// Sharding Manager
const manager = new ShardingManager("bot.js", {
token: process.env.TOKEN,
totalShards: parseInt(process.env.SHARDS) || process.env.SHARDS || "auto"
});

manager.on("shardCreate", shard => {
shard.on("death", () => {
console.log(`[${shard.id}] is Death`);
console.log(`[${shard.id}] Reswawning...`);
(async () => {
// Console Log
console.log("\n");
console.log("🤖 Bot is starting...");
console.log(`📦 HStudioSource@${package.version}`);
console.log(`🤖 Bot is running on version ${package.version}`);
console.log("\n");

// Register Bot Commands
await handleCommands();

// Sharding Manager
const manager = new ShardingManager("bot.js", {
token: process.env.TOKEN,
totalShards: parseInt(process.env.SHARDS) || process.env.SHARDS || "auto"
});
console.log(`Launched shard ${shard.id}`);
});

manager.spawn();
manager.on("shardCreate", shard => {
shard.on("death", () => {
console.log(`[${shard.id}] is Death`);
console.log(`[${shard.id}] Reswawning...`);
});
console.log(`🔎 Launched shard ${shard.id}`);
});

// API Manager
const port = process.env.PORT || 8233;
manager.spawn();

const api = express();
api.use(cors());
api.use(express.json());
// API Manager
const port = process.env.PORT || 8233;

const rest = new REST({
version: "10"
}).setToken(process.env.TOKEN);
const api = express();
api.use(cors());
api.use(express.json());

api.get("/invite", async (req, res) => {
return res.redirect(`https://discord.com/oauth2/authorize?client_id=${process.env.CLIENT_ID}`);
});
const rest = new REST({
version: "10"
}).setToken(process.env.TOKEN);

api.get("/status", async (req, res) => {
const shards = manager.shards.map((shard) => { return { id: shard.id, online: shard.ready }; });
api.get("/invite", async (req, res) => {
return res.redirect(`https://discord.com/oauth2/authorize?client_id=${process.env.CLIENT_ID}`);
});

const status = {
version: package.version,
totalShards: manager.totalShards,
shards: shards
};
api.get("/status", async (req, res) => {
const shards = manager.shards.map((shard) => { return { id: shard.id, online: shard.ready }; });

return res.status(200).json(status);
});
const status = {
version: package.version,
totalShards: manager.totalShards,
shards: shards
};

api.get("/status/all", async (req, res) => {
const shards = manager.shards.map((shard) => { return { id: shard.id, online: shard.ready }; });
return res.status(200).json(status);
});

const guilds = await rest.get(Routes.userGuilds());
const user = await rest.get(Routes.user());
api.get("/status/all", async (req, res) => {
const shards = manager.shards.map((shard) => { return { id: shard.id, online: shard.ready }; });

const guildsList = guilds.map((val) => val.id);
const guilds = await rest.get(Routes.userGuilds());
const user = await rest.get(Routes.user());

const status = {
name: user.username,
version: package.version,
totalShards: manager.totalShards,
shards: shards,
guilds: {
total: guildsList.length,
list: guildsList
}
};
const guildsList = guilds.map((val) => val.id);

return res.status(200).json(status);
});
const status = {
name: user.username,
version: package.version,
totalShards: manager.totalShards,
shards: shards,
guilds: {
total: guildsList.length,
list: guildsList
}
};

api.get("/guilds", async (req, res) => {
let guildsList = [];
let after = null;
return res.status(200).json(status);
});

try {
while (true) {
const queryParams = after ? { after, limit: 200 } : { limit: 200 };
const guilds = await rest.get(Routes.userGuilds(), { query: queryParams });
api.get("/guilds", async (req, res) => {
let guildsList = [];
let after = null;

if (guilds.length === 0) break;
try {
while (true) {
const queryParams = after ? { after, limit: 200 } : { limit: 200 };
const guilds = await rest.get(Routes.userGuilds(), { query: queryParams });

guildsList.push(...guilds.map((val) => val.id));
if (guilds.length === 0) break;

if (guilds.length < 200) break;
guildsList.push(...guilds.map((val) => val.id));

after = guilds[guilds.length - 1].id;
};
if (guilds.length < 200) break;

return res.status(200).json({
total: guildsList.length,
list: guildsList
});
} catch (error) {
console.error(error);
return res.status(500).json({ error: "An error occurred while fetching guilds" });
}
});

api.listen(port, () => {
console.log(`Status page server is running at http://localhost:${port}/status`);
});
after = guilds[guilds.length - 1].id;
};

return res.status(200).json({
total: guildsList.length,
list: guildsList
});
} catch (error) {
console.error(error);
return res.status(500).json({ error: "An error occurred while fetching guilds" });
}
});

api.listen(port, () => {
console.log(`\n\n🚀 Status page server is running at http://localhost:${port}/status\n\n`);
});
})();
14 changes: 11 additions & 3 deletions utils/commands.js
Original file line number Diff line number Diff line change
Expand Up @@ -28,16 +28,24 @@ module.exports = async function () {
version: "10"
}).setToken(process.env.TOKEN);

(async () => {
await (async () => {
try {
console.log("Started refreshing application (/) commands.");

console.log("📃 Commands Process");
console.log("🔒 Started refreshing application (/) commands.");

const data = await rest.put(
Routes.applicationCommands(process.env.CLIENT_ID), {
body: commandArray
});

console.log(`Successfully reloaded ${data.length} application (/) commands.`);
console.log(`🔓 Successfully reloaded ${data.length} application (/) commands.`);

console.log("\n");

const commands = data.map(command => `🟢 /${command.name} Operational`);

console.log(commands.join("\n"));
} catch (error) {
console.error(error);
}
Expand Down