From c1b886a2261d5f964fac92a3495cc5c852bcb20e Mon Sep 17 00:00:00 2001 From: Bildcraft1 Date: Wed, 5 Jun 2024 22:12:03 +0200 Subject: [PATCH] Add initial configuration files and code structure --- README.md | 20 ++++++++++++++++++++ config.example.json | 1 - deploy-globally.js | 46 +++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 66 insertions(+), 1 deletion(-) create mode 100644 README.md create mode 100644 deploy-globally.js diff --git a/README.md b/README.md new file mode 100644 index 0000000..786af85 --- /dev/null +++ b/README.md @@ -0,0 +1,20 @@ +# AI Discord Bot + +## Configuration (config.json) + +The `config.json` file contains the configuration settings for your AI Discord bot. It is used to store sensitive information and customize the behavior of your bot. + +### Fields in config.json + +- `token`: The Discord bot token. This is a secret key that allows your bot to authenticate with the Discord API. Make sure to keep this token private and never share it publicly. + +- `clientID`: The bot userID + +- `ownerID`: The Discord user ID of the bot owner. This is used to restrict certain commands or actions to the bot owner only. You can find your user ID by enabling Developer Mode in Discord and right-clicking on your username. + +### Setting up the config.json file + +Before running your bot, make sure to fill in the appropriate values for each field in the `config.json` file. Replace the placeholder values with your own Discord bot token, command prefix, owner ID, status message, activity type, and activity name. + +Once you have filled in the necessary information, you can start your AI Discord bot and it will use the configuration settings specified in the `config.json` file. + diff --git a/config.example.json b/config.example.json index 99400c2..116b6c2 100644 --- a/config.example.json +++ b/config.example.json @@ -1,7 +1,6 @@ { "token": "bot-token", "clientId": "bot-id", - "guildId": "server-id", "ownerId": "owner-id", "whitelist": [] } \ No newline at end of file diff --git a/deploy-globally.js b/deploy-globally.js new file mode 100644 index 0000000..b16e74a --- /dev/null +++ b/deploy-globally.js @@ -0,0 +1,46 @@ +const { REST, Routes } = require('discord.js'); +const { clientId, token } = require('./config.json'); +const fs = require('node:fs'); +const path = require('node:path'); + +const commands = []; +// Grab all the command folders from the commands directory you created earlier +const foldersPath = path.join(__dirname, 'commands'); +const commandFolders = fs.readdirSync(foldersPath); + +for (const folder of commandFolders) { + // Grab all the command files from the commands directory you created earlier + const commandsPath = path.join(foldersPath, folder); + const commandFiles = fs.readdirSync(commandsPath).filter(file => file.endsWith('.js')); + // Grab the SlashCommandBuilder#toJSON() output of each command's data for deployment + for (const file of commandFiles) { + const filePath = path.join(commandsPath, file); + const command = require(filePath); + if ('data' in command && 'execute' in command) { + commands.push(command.data.toJSON()); + } else { + console.log(`[WARNING] The command at ${filePath} is missing a required "data" or "execute" property.`); + } + } +} + +// Construct and prepare an instance of the REST module +const rest = new REST().setToken(token); + +// and deploy your commands! +(async () => { + try { + console.log(`Started refreshing ${commands.length} application (/) commands.`); + + // The put method is used to fully refresh all commands in the guild with the current set + const data = await rest.put( + Routes.applicationCommands(clientId), + { body: commands }, + ); + + console.log(`Successfully reloaded ${data.length} application (/) commands.`); + } catch (error) { + // And of course, make sure you catch and log any errors! + console.error(error); + } +})();