Merge pull request #45 from SowinskiBraeden/update/support-discord-sharding
Update/support discord sharding
This commit is contained in:
4 files changed
+54
-37
No files matched your search
@@ -0,0 +1,33 @@
|
|||||||
|
const DayzR = require('./src/DayzRBot');
|
||||||
|
const config = require('./config/config');
|
||||||
|
const { GatewayIntentBits } = require('discord.js');
|
||||||
|
|
||||||
|
const path = require("path");
|
||||||
|
const fs = require('fs');
|
||||||
|
const { HandleActivePlayersList } = require('./util/LogsHandler');
|
||||||
|
|
||||||
|
// Log all uncaught exceptions before killing process.
|
||||||
|
process.on('uncaughtException', async (error) => {
|
||||||
|
console.trace(error);
|
||||||
|
let d = new Date();
|
||||||
|
// Asynchronously write the error message to a log file using Promises
|
||||||
|
await new Promise((resolve, reject) => {
|
||||||
|
if (HandleActivePlayersList.lastSendMessage) HandleActivePlayersList.lastSendMessage.delete().catch(error => client.sendError(channel, `HandleActivePlayersList Error: \n${error}`)); // Remove previous embed message before closing
|
||||||
|
fs.appendFile(path.join(__dirname, "./logs/Logs.log"),
|
||||||
|
`{"level":"error","message":"${d.getHours()}:${d.getMinutes()} - ${d.getMonth()+1}:${d.getDate()}:${d.getFullYear()} | uncaughtException: ${error.stack}"}`, (logErr) => {
|
||||||
|
if (logErr) {
|
||||||
|
console.error('Error writing uncaughtException to log file:', logErr);
|
||||||
|
reject(logErr);
|
||||||
|
process.exit()
|
||||||
|
} else {
|
||||||
|
resolve();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
// Now gracefully close the program
|
||||||
|
process.exit()
|
||||||
|
});
|
||||||
|
|
||||||
|
let client = new DayzR({ intents: [GatewayIntentBits.Guilds, GatewayIntentBits.GuildMessages, GatewayIntentBits.GuildMembers] }, config);
|
||||||
|
client.build()
|
||||||
+16
-7
@@ -133,17 +133,26 @@ module.exports = {
|
|||||||
return interaction.send({ embeds: [creditsEmbed] })
|
return interaction.send({ embeds: [creditsEmbed] })
|
||||||
} else if (args[0].name == 'stats') {
|
} else if (args[0].name == 'stats') {
|
||||||
const end = new Date().getTime();
|
const end = new Date().getTime();
|
||||||
|
|
||||||
|
const totalGuilds = await client.shard.fetchClientValues("guilds.cache.size").then(results => {
|
||||||
|
return results.reduce((acc, guildCount) => acc + guildCount, 0);
|
||||||
|
});
|
||||||
|
|
||||||
|
const totalUsers = await client.shard.broadcastEval(c => {
|
||||||
|
c.guilds.cache.reduce((acc, guild) => acc + guild.memberCount, 0);
|
||||||
|
}).then(data => data.reduce((acc, memberCount) => acc + memberCount, 0));
|
||||||
|
|
||||||
const stats = new EmbedBuilder()
|
const stats = new EmbedBuilder()
|
||||||
.setColor(client.config.Colors.Default)
|
.setColor(client.config.Colors.Default)
|
||||||
.setTitle('DayZ Reforger Bot Statistics')
|
.setTitle('DayZ Reforger Bot Statistics')
|
||||||
.addFields(
|
.addFields(
|
||||||
{ name: 'Guilds', value: `${client.guilds.cache.size}`, inline: true },
|
{ name: 'Guilds', value: `${totalGuilds}`, inline: false },
|
||||||
{ name: 'Users', value: `${client.users.cache.size}`, inline: true },
|
{ name: 'Users', value: `${totalUsers}`, inline: false },
|
||||||
{ name: 'Latency', value: `${end - start}ms`, inline: true },
|
{ name: 'Latency', value: `${end - start}ms`, inline: false },
|
||||||
{ name: 'Uptime', value: `${client.secondsToDhms(process.uptime().toFixed(2))}`, inline: true },
|
{ name: 'Uptime', value: `${client.secondsToDhms(process.uptime().toFixed(2))}`, inline: false },
|
||||||
{ name: 'Bot Version', value: `${client.config.Dev} v${client.config.Version}`, inline: true },
|
{ name: 'Bot Version', value: `${client.config.Dev} v${client.config.Version}`, inline: false },
|
||||||
{ name: 'Discord Version', value: `Discord.js ${package.dependencies["discord.js"]}`, inline: true },
|
{ name: 'Discord Version', value: `Discord.js ${package.dependencies["discord.js"]}`, inline: false },
|
||||||
{ name: 'MongoDB Version', value: `MongoDB ${package.dependencies.mongodb}`, inline: true},
|
{ name: 'MongoDB Version', value: `MongoDB ${package.dependencies.mongodb}`, inline: false },
|
||||||
);
|
);
|
||||||
|
|
||||||
return interaction.send({ embeds: [stats] })
|
return interaction.send({ embeds: [stats] })
|
||||||
|
|||||||
@@ -1,33 +1,8 @@
|
|||||||
const DayzR = require('./src/DayzRBot');
|
const { ShardingManager } = require('discord.js');
|
||||||
const config = require('./config/config');
|
const config = require('./config/config');
|
||||||
const { GatewayIntentBits } = require('discord.js');
|
|
||||||
|
|
||||||
const path = require("path");
|
const manager = new ShardingManager('./bot.js', { token: config.Token });
|
||||||
const fs = require('fs');
|
|
||||||
const { HandleActivePlayersList } = require('./util/LogsHandler');
|
|
||||||
|
|
||||||
// Log all uncaught exceptions before killing process.
|
manager.on('shardCreate', shard => console.log(`Launched shard ${shard.id}`));
|
||||||
process.on('uncaughtException', async (error) => {
|
|
||||||
console.trace(error);
|
|
||||||
let d = new Date();
|
|
||||||
// Asynchronously write the error message to a log file using Promises
|
|
||||||
await new Promise((resolve, reject) => {
|
|
||||||
if (HandleActivePlayersList.lastSendMessage) HandleActivePlayersList.lastSendMessage.delete().catch(error => client.sendError(channel, `HandleActivePlayersList Error: \n${error}`)); // Remove previous embed message before closing
|
|
||||||
fs.appendFile(path.join(__dirname, "./logs/Logs.log"),
|
|
||||||
`{"level":"error","message":"${d.getHours()}:${d.getMinutes()} - ${d.getMonth()+1}:${d.getDate()}:${d.getFullYear()} | uncaughtException: ${error.stack}"}`, (logErr) => {
|
|
||||||
if (logErr) {
|
|
||||||
console.error('Error writing uncaughtException to log file:', logErr);
|
|
||||||
reject(logErr);
|
|
||||||
process.exit()
|
|
||||||
} else {
|
|
||||||
resolve();
|
|
||||||
}
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
// Now gracefully close the program
|
manager.spawn();
|
||||||
process.exit()
|
|
||||||
});
|
|
||||||
|
|
||||||
let client = new DayzR({ intents: [GatewayIntentBits.Guilds, GatewayIntentBits.GuildMessages, GatewayIntentBits.GuildMembers] }, config);
|
|
||||||
client.build()
|
|
||||||
+1
-1
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "dayzr-bot",
|
"name": "dayzr-bot",
|
||||||
"version": "13.2.0",
|
"version": "13.3.1",
|
||||||
"description": "A General Purpose Discord Bot for DayZ Nitrado Servers.",
|
"description": "A General Purpose Discord Bot for DayZ Nitrado Servers.",
|
||||||
"main": "index.js",
|
"main": "index.js",
|
||||||
"nodemonConfig": {
|
"nodemonConfig": {
|
||||||
|
|||||||
Reference in new issue
Block a user