Compare commits
7
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
7f675f4185 | ||
|
|
3c6faf7f75 | ||
|
|
64be8a5558 | ||
|
|
52c946bee5 | ||
|
|
14a8833f0d | ||
|
|
30acabde1d | ||
|
|
49e31ff44a |
No files matched your search
@@ -0,0 +1,38 @@
|
|||||||
|
---
|
||||||
|
name: Bug report
|
||||||
|
about: Create a report to help us improve
|
||||||
|
title: ''
|
||||||
|
labels: ''
|
||||||
|
assignees: ''
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
**Describe the bug**
|
||||||
|
A clear and concise description of what the bug is.
|
||||||
|
|
||||||
|
**To Reproduce**
|
||||||
|
Steps to reproduce the behavior:
|
||||||
|
1. Execute command '...'
|
||||||
|
2. Click on '....'
|
||||||
|
3. Scroll down to '....'
|
||||||
|
4. See error
|
||||||
|
|
||||||
|
**Expected behavior**
|
||||||
|
A clear and concise description of what you expected to happen.
|
||||||
|
|
||||||
|
**Screenshots**
|
||||||
|
If applicable, add screenshots to help explain your problem.
|
||||||
|
|
||||||
|
**Desktop (please complete the following information):**
|
||||||
|
- OS: [e.g. iOS]
|
||||||
|
- Browser [e.g. chrome, safari]
|
||||||
|
- Version [e.g. 22]
|
||||||
|
|
||||||
|
**Smartphone (please complete the following information):**
|
||||||
|
- Device: [e.g. iPhone6]
|
||||||
|
- OS: [e.g. iOS8.1]
|
||||||
|
- Browser [e.g. stock browser, safari]
|
||||||
|
- Version [e.g. 22]
|
||||||
|
|
||||||
|
**Additional context**
|
||||||
|
Add any other context about the problem here.
|
||||||
@@ -0,0 +1,20 @@
|
|||||||
|
---
|
||||||
|
name: Feature request
|
||||||
|
about: Suggest an idea for this project
|
||||||
|
title: ''
|
||||||
|
labels: ''
|
||||||
|
assignees: ''
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
**Is your feature request related to a problem? Please describe.**
|
||||||
|
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
|
||||||
|
|
||||||
|
**Describe the solution you'd like**
|
||||||
|
A clear and concise description of what you want to happen.
|
||||||
|
|
||||||
|
**Describe alternatives you've considered**
|
||||||
|
A clear and concise description of any alternative solutions or features you've considered.
|
||||||
|
|
||||||
|
**Additional context**
|
||||||
|
Add any other context or screenshots about the feature request here.
|
||||||
@@ -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] })
|
||||||
|
|||||||
@@ -20,6 +20,12 @@ module.exports = {
|
|||||||
value: "initialize",
|
value: "initialize",
|
||||||
type: CommandOptions.SubCommand,
|
type: CommandOptions.SubCommand,
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
name: "disconnect",
|
||||||
|
description: "Delete your Nitrado server from the bot database",
|
||||||
|
value: "disconnect",
|
||||||
|
type: CommandOptions.SubCommand,
|
||||||
|
},
|
||||||
{
|
{
|
||||||
name: "ban-player",
|
name: "ban-player",
|
||||||
description: "Ban a player from the DayZ server",
|
description: "Ban a player from the DayZ server",
|
||||||
@@ -150,6 +156,26 @@ module.exports = {
|
|||||||
|
|
||||||
return interaction.showModal(NitradoCredentials);
|
return interaction.showModal(NitradoCredentials);
|
||||||
|
|
||||||
|
} else if (args[0].name == 'disconnect') {
|
||||||
|
|
||||||
|
const prompt = new EmbedBuilder()
|
||||||
|
.setTitle(`Delete your Nitrado Server?`)
|
||||||
|
.setDescription('**Notice:** This will completely delete your configured Nitrado server from the bot database.')
|
||||||
|
.setColor(client.config.Colors.Yellow)
|
||||||
|
|
||||||
|
const opt = new ActionRowBuilder()
|
||||||
|
.addComponents(
|
||||||
|
new ButtonBuilder()
|
||||||
|
.setCustomId(`DeleteNitrado-yes-${interaction.member.user.id}`)
|
||||||
|
.setLabel("Yes")
|
||||||
|
.setStyle(ButtonStyle.Danger),
|
||||||
|
new ButtonBuilder()
|
||||||
|
.setCustomId(`DeleteNitrado-no-${interaction.member.user.id}`)
|
||||||
|
.setLabel("No")
|
||||||
|
.setStyle(ButtonStyle.Success)
|
||||||
|
)
|
||||||
|
|
||||||
|
return interaction.send({ embeds: [prompt], components: [opt], flags: (1 << 6) });
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!client.exists(GuildDB.Nitrado) || !client.exists(GuildDB.Nitrado.ServerID)) return interaction.send({ embeds: [new EmbedBuilder().setColor(client.config.Colors.Red).setDescription(`**Notice:**\nThis Discord guild has not been configured with a Nitrado DayZ server. To configure your guild, use </server initialize:1166877457559851011>`)] });
|
if (!client.exists(GuildDB.Nitrado) || !client.exists(GuildDB.Nitrado.ServerID)) return interaction.send({ embeds: [new EmbedBuilder().setColor(client.config.Colors.Red).setDescription(`**Notice:**\nThis Discord guild has not been configured with a Nitrado DayZ server. To configure your guild, use </server initialize:1166877457559851011>`)] });
|
||||||
@@ -312,7 +338,40 @@ module.exports = {
|
|||||||
return interaction.update({ embeds: [], components: [], content: 'Cancelled Overwriting Nitrado Server Information', flags: (1 << 6) });
|
return interaction.update({ embeds: [], components: [], content: 'Cancelled Overwriting Nitrado Server Information', flags: (1 << 6) });
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
DeleteNitrado: {
|
||||||
|
run: async(client, interaction, GuildDB) => {
|
||||||
|
if (!interaction.customId.endsWith(interaction.member.user.id))
|
||||||
|
return interaction.reply({ content: 'This interaction is not for you', flags: (1 << 6) });
|
||||||
|
|
||||||
|
if (interaction.customId.split('-')[1] == 'yes') {
|
||||||
|
await client.dbo.collection('guilds').updateOne({ "server.serverID": GuildDB.serverID }, { $set: { "Nitrado": null } }, (err, _) => {
|
||||||
|
if (err) client.sendInternalError(interaction, err);
|
||||||
|
});
|
||||||
|
|
||||||
|
return interaction.update({
|
||||||
|
embeds: [
|
||||||
|
new EmbedBuilder()
|
||||||
|
.setColor(client.config.Colors.Green)
|
||||||
|
.setDescription(`**Success**\n> Successfully removed your Nitrado credentials from the database.`)
|
||||||
|
],
|
||||||
|
components: [],
|
||||||
|
flags: (1 << 6)
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
return interaction.update({
|
||||||
|
embeds: [
|
||||||
|
new EmbedBuilder()
|
||||||
|
.setColor(client.config.Colors.Green)
|
||||||
|
.setDescription(`**Cancelled**\n> Your Nitrado credentials were not removed from the database.`)
|
||||||
|
],
|
||||||
|
components: [],
|
||||||
|
flags: (1 << 6)
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -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.2",
|
||||||
"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