Merge branch 'dev' into 'main'

Added autodeploy function to developmet mode

See merge request illegitimate/illegitimate-bot!58
This commit is contained in:
2023-11-19 12:46:04 +00:00
5 changed files with 81 additions and 2 deletions

View File

@@ -7,6 +7,7 @@ module.exports = {
name: "config", name: "config",
description: "Configure the bot", description: "Configure the bot",
type: "slash", type: "slash",
dev: true,
data: new SlashCommandBuilder() data: new SlashCommandBuilder()
.setName("config") .setName("config")

View File

@@ -5,6 +5,7 @@ module.exports = {
name: "setup", name: "setup",
description: "Used for setup of the bot.", description: "Used for setup of the bot.",
type: "slash", type: "slash",
dev: true,
data: new SlashCommandBuilder() data: new SlashCommandBuilder()
.setName("setup") .setName("setup")

View File

@@ -8,7 +8,6 @@ module.exports = {
execute(client) { execute(client) {
if (process.env.NODE_ENV !== 'dev') { if (process.env.NODE_ENV !== 'dev') {
console.log("Logged in as " + client.user.tag + "!");
const channel = client.channels.cache.get(botLogChannel); const channel = client.channels.cache.get(botLogChannel);
const embedColor = Number(color.replace('#', '0x')) const embedColor = Number(color.replace('#', '0x'))

View File

@@ -1,5 +1,6 @@
const { Client, GatewayIntentBits, Partials, ActivityType, Events, Collection } = require('discord.js'); const { Client, GatewayIntentBits, Partials, Collection } = require('discord.js');
const { loadSlashCommands, loadMessageEvents, loadContextMenu, loadModalEvents, loadButtonEvents, loadReadyEvents, loadInteractionEvents } = require('./utils/eventHandler.js') const { loadSlashCommands, loadMessageEvents, loadContextMenu, loadModalEvents, loadButtonEvents, loadReadyEvents, loadInteractionEvents } = require('./utils/eventHandler.js')
const { autoDeployCommands } = require('./utils/autodeploy.js');
require('dotenv').config(); require('dotenv').config();
const mongoURI = process.env.MONGOURI; const mongoURI = process.env.MONGOURI;
const { connect } = require('mongoose'); const { connect } = require('mongoose');
@@ -7,6 +8,7 @@ const { connect } = require('mongoose');
if (process.env.NODE_ENV === 'dev') { if (process.env.NODE_ENV === 'dev') {
console.log("Running in development mode."); console.log("Running in development mode.");
var token = process.env.DEVTOKEN; var token = process.env.DEVTOKEN;
autoDeployCommands()
} else { } else {
console.log("Running in production mode."); console.log("Running in production mode.");
var token = process.env.PRODTOKEN; var token = process.env.PRODTOKEN;

76
utils/autodeploy.js Normal file
View File

@@ -0,0 +1,76 @@
const { REST, Routes } = require('discord.js');
const fs = require('fs');
require('dotenv').config();
const token = process.env.DEVTOKEN;
const clientId = process.env.DEVID;
const guildId = process.env.GUILDID;
async function autoDeployCommands() {
const commands = [];
const commandFiles = fs.readdirSync('./commands/').filter(file => file.endsWith('.js'));
const contentMenuCommands = fs.readdirSync('./commands-contextmenu/').filter(file => file.endsWith('.js'));
const commandsTesting = fs.readdirSync('./commands-testing/').filter(file => file.endsWith('.js'));
for (const file of commandFiles) {
const command = require(`../commands/${file}`);
if (command.dev) {
commands.push(command.data.toJSON());
}
}
for (const file of contentMenuCommands) {
const command = require(`../commands-contextmenu/${file}`);
if (command.dev) {
commands.push(command.data.toJSON());
}
}
for (const file of commandsTesting) {
const command = require(`../commands-testing/${file}`);
if (command.dev) {
commands.push(command.data.toJSON());
}
}
const rest = new REST({ version: '10' }).setToken(token);
const currentCommands = await rest.get(
Routes.applicationGuildCommands(clientId, guildId),
)
const currentCommandsInfo = currentCommands.map(command => {
return {
name: command.name,
description: command.description,
}
})
const newCommandsInfo = commands.map(command => {
return {
name: command.name,
description: command.description,
}
})
if (JSON.stringify(currentCommandsInfo) === JSON.stringify(newCommandsInfo)) {
console.log('Commands are the same, skipping deploy.')
return
}
(async () => {
try {
console.log(`Started refreshing ${commands.length} application (/) commands.`);
const data = await rest.put(
Routes.applicationGuildCommands(clientId, guildId),
{ body: commands },
);
console.log(`Successfully reloaded ${data.length} application (/) commands.`);
} catch (error) {
console.error(error);
}
})()
}
module.exports = { autoDeployCommands }