diff --git a/package.json b/package.json index 1eafecc..b760a81 100644 --- a/package.json +++ b/package.json @@ -2,7 +2,7 @@ "name": "cx-oss", "version": "0.0.1", "description": "ConnectX Xantic", - "main": "index.js", + "main": "src/index.js", "scripts": { "test": "nodemon src/index", "start": "node src/index" diff --git a/src/commands/servers/setup.js b/src/commands/servers/setup.js new file mode 100644 index 0000000..d95ab67 --- /dev/null +++ b/src/commands/servers/setup.js @@ -0,0 +1,22 @@ +const { SlashCommandBuilder } = require('discord.js'); + +module.exports = { + data: new SlashCommandBuilder() + .setName('setup') + .addChannelOption((o) => o + .setName("channel") + .setDescription("Channel to Chat with Xantic") + .setRequired(true) + ).setDescription('Setup a Discord Server'), + /** + * + * @param {import('discord.js').Interaction} interaction + */ + async execute(interaction) { + var channel = interaction.options.getChannel("channel"); + + console.log(channel); + + await interaction.reply('Pong!'); + }, +}; \ No newline at end of file diff --git a/src/index.js b/src/index.js index 81817b8..a7f3843 100644 --- a/src/index.js +++ b/src/index.js @@ -6,27 +6,31 @@ const path = require('node:path'); const { MongoClient } = require("mongodb"); const { Client, Events, GatewayIntentBits, Collection } = require('discord.js'); -const client = new Client({ intents: [ - GatewayIntentBits.Guilds, - GatewayIntentBits.GuildMessages, - GatewayIntentBits.DirectMessages, - GatewayIntentBits.MessageContent -] }); +const client = new Client({ + intents: [ + GatewayIntentBits.Guilds, + GatewayIntentBits.GuildMessages, + GatewayIntentBits.DirectMessages, + GatewayIntentBits.MessageContent + ] +}); -async function main(){ - if(config.database_adapter == "mongod"){ +async function main() { + if (config.database_adapter == "mongod") { const mongo_client = new MongoClient(config.database_uri); await mongo_client.connect(); console.log("Using MongoDB Connection for Database"); - require("../database/mongod").initMongoDBInstance(mongo_client, config , (back) => initMessageManager(back)); - }else if(config.database_adapter == "mysqld"){ - + require("../database/mongod").initMongoDBInstance(mongo_client, config, (back) => initMessageManager(back)); + } else if (config.database_adapter == "mysqld") { + } } -async function initMessageManager(database){ +async function initMessageManager(database) { + client.database = database; + database.build(); } @@ -37,51 +41,51 @@ client.once(Events.ClientReady, readyClient => { main(); - client.user.setActivity({ - name: `Minecraft`, - state: "2.0" - }); -}); + client.user.setActivity({ + name: `Minecraft`, + state: "2.0" + }); -const foldersPath = path.join(__dirname, 'commands'); -const commandFolders = fs.readdirSync(foldersPath); + const foldersPath = path.join(__dirname, 'commands'); + const commandFolders = fs.readdirSync(foldersPath); -for (const folder of commandFolders) { - const commandsPath = path.join(foldersPath, folder); - const commandFiles = fs.readdirSync(commandsPath).filter(file => file.endsWith('.js')); - for (const file of commandFiles) { - const filePath = path.join(commandsPath, file); - const command = require(filePath); - // Set a new item in the Collection with the key as the command name and the value as the exported module - if ('data' in command && 'execute' in command) { - client.commands.set(command.data.name, command); - console.log("Loaded /" + command.data.name); - } else { - console.log(`[WARNING] The command at ${filePath} is missing a required "data" or "execute" property.`); + for (const folder of commandFolders) { + const commandsPath = path.join(foldersPath, folder); + const commandFiles = fs.readdirSync(commandsPath).filter(file => file.endsWith('.js')); + for (const file of commandFiles) { + const filePath = path.join(commandsPath, file); + const command = require(filePath); + // Set a new item in the Collection with the key as the command name and the value as the exported module + if ('data' in command && 'execute' in command) { + client.commands.set(command.data.name, command); + console.log("Loaded /" + command.data.name); + } else { + console.log(`[WARNING] The command at ${filePath} is missing a required "data" or "execute" property.`); + } } } -} -client.on(Events.InteractionCreate, async interaction => { - if (!interaction.isChatInputCommand()) return; + client.on(Events.InteractionCreate, async interaction => { + if (!interaction.isChatInputCommand()) return; - const command = interaction.client.commands.get(interaction.commandName); + const command = interaction.client.commands.get(interaction.commandName); - if (!command) { - console.error(`No command matching ${interaction.commandName} was found.`); - return; - } - - try { - await command.execute(interaction); - } catch (error) { - console.error(error); - if (interaction.replied || interaction.deferred) { - await interaction.followUp({ content: 'There was an error while executing this command!', ephemeral: true }); - } else { - await interaction.reply({ content: 'There was an error while executing this command!', ephemeral: true }); + if (!command) { + console.error(`No command matching ${interaction.commandName} was found.`); + return; } - } + + try { + await command.execute(interaction); + } catch (error) { + console.error(error); + if (interaction.replied || interaction.deferred) { + await interaction.followUp({ content: 'There was an error while executing this command!', ephemeral: true }); + } else { + await interaction.reply({ content: 'There was an error while executing this command!', ephemeral: true }); + } + } + }); }); // Login to ConnectX