diff --git a/commands/discord/channel.js b/commands/discord/channel.js new file mode 100644 index 0000000..addf6de --- /dev/null +++ b/commands/discord/channel.js @@ -0,0 +1,123 @@ +const { SlashCommandBuilder, ChannelType, MessageFlags } = require('discord.js') +const { mClient } = require('../..') + +async function setChannel(interaction) { + const event = interaction.options.getString('event') + const channel = interaction.options.getChannel('channel') + const db = mClient.db('guilds') + const coll = db.collection(interaction.guild.id) + + try { + const res = await coll.findOneAndUpdate({ + event: event + }, { + $set: { + channel: channel.id + } + }, { + upsert: true + }) + + return interaction.editReply({ + content: `${channel} now set for Event: ${event}`, + flags: MessageFlags.Ephemeral + }) + } catch (error) { + return interaction.editReply({ + content: `**[ERROR]:** There was an error updating the database: ${error}`, + flags: MessageFlags.Ephemeral + }).then(setTimeout(() => { + interaction.deleteReply() + }, 5000)) + } +} +async function getChannel(interaction) { + const event = interaction.options.getString('event') + const db = mClient.db('guilds') + const coll = db.collection(interaction.guild.id) + + try { + const res = await coll.findOne({ + event: event + }) + + return interaction.editReply({ + content: `#${res.channel} previously set for Event: ${event}`, + flags: MessageFlags.Ephemeral + }) + } catch (error) { + return interaction.editReply({ + content: `**[ERROR]:** There was an error updating the database: ${error}`, + flags: MessageFlags.Ephemeral + }).then(setTimeout(() => { + interaction.deleteReply() + }, 5000)) + } +} +module.exports = { + data: new SlashCommandBuilder() + .setName('channel') + .setDescription('channel manager') + .addSubcommand(s => + s + .setName('set') + .setDescription('set channel for certain events') + .addStringOption(o => + o + .setName('event') + .setDescription('choose the event') + .addChoices([ + { "name": "When a user joins this server", "value": "GuildMemberAdd" }, + { "name": "When a user left this server", "value": "GuildMemberRemove" }, + { "name": "When it's a users birthday", "value": "Discord/Birthday" }, + { "name": "When debug logs are sent", "value": "Discord/Logs" }, + { "name": "When stream is live", "value": "Twitch/Live" } + ]) + .setRequired(true) + ) + .addChannelOption(o => + o + .setName('channel') + .setDescription('where should it be sent to') + .setRequired(true) + .addChannelTypes(ChannelType.GuildText) + ) + ) + .addSubcommand(s => + s + .setName('get') + .setDescription('get channel for certain events') + .addStringOption(o => + o + .setName('event') + .setDescription('choose the event') + .addChoices([ + { "name": "When a user joins this server", "value": "GuildMemberAdd" }, + { "name": "When a user left this server", "value": "GuildMemberRemove" }, + { "name": "When it's a users birthday", "value": "Discord/Birthday" }, + { "name": "When debug logs are sent", "value": "Discord/Logs" }, + { "name": "When stream is live", "value": "Twitch/Live" } + ]) + .setRequired(true) + ) + ), + async execute(interaction) { + if (!interaction.member.permissions.has("ADMINISTRATOR")) { + return await interaction.reply({ + content: "Unprivileged Access!", + flags: MessageFlags.Ephemeral + }) + } + await interaction.deferReply({ flags: MessageFlags.Ephemeral }) + switch (interaction.options._subcommand) { + case "set": + setChannel(interaction) + break; + case "get": + getChannel(interaction) + break; + default: + break; + } + } +} \ No newline at end of file diff --git a/commands/discord/simJoin.js b/commands/discord/simJoin.js index 5876bbb..8e23a0e 100644 --- a/commands/discord/simJoin.js +++ b/commands/discord/simJoin.js @@ -1,4 +1,4 @@ -const { SlashCommandBuilder, Events } = require('discord.js') +const { SlashCommandBuilder, Events, MessageFlags } = require('discord.js') module.exports = { data: new SlashCommandBuilder() .setName('simjoin') @@ -10,7 +10,7 @@ module.exports = { if(!interaction.member.permissions.has("ADMINISTRATOR")){ return await interaction.reply({ content: "Unprivileged Access!", - ephemeral: true + flags: MessageFlags.Ephemeral }) } @@ -23,13 +23,13 @@ module.exports = { interaction.client.emit(Events.GuildMemberAdd, target) await interaction.reply({ content: "Done!", - ephemeral: true + flags: MessageFlags.Ephemeral }) } } catch (error) { await interaction.reply({ content: "Invalid Mentionable!", - ephemeral: true + flags: MessageFlags.Ephemeral }) } diff --git a/commands/discord/simLive.js b/commands/discord/simLive.js index 3eaf057..9185a9b 100644 --- a/commands/discord/simLive.js +++ b/commands/discord/simLive.js @@ -1,4 +1,4 @@ -const { SlashCommandBuilder, Events } = require('discord.js') +const { SlashCommandBuilder, Events, MessageFlags } = require('discord.js') module.exports = { data: new SlashCommandBuilder() @@ -8,7 +8,7 @@ module.exports = { if(!interaction.member.permissions.has("ADMINISTRATOR")){ return await interaction.reply({ content: "Unprivileged Access!", - ephemeral: true + flags: MessageFlags.Ephemeral }) } @@ -16,7 +16,7 @@ module.exports = { interaction.client.emit('TwitchLive', streamer) await interaction.reply({ content: "Done!", - ephemeral: true + flags: MessageFlags.Ephemeral }) } diff --git a/commands/discord/simShoutout.js b/commands/discord/simShoutout.js deleted file mode 100644 index f8e2a59..0000000 --- a/commands/discord/simShoutout.js +++ /dev/null @@ -1,42 +0,0 @@ -const { SlashCommandBuilder } = require('discord.js') -const { mClient } = require('../..') - -module.exports = { - data: new SlashCommandBuilder() - .setName('simshoutout') - .setDescription('simulates a shoutout event'), - async execute(interaction) { - await interaction.deferReply() - if (!interaction.member.permissions.has("ADMINISTRATOR")) { - return await interaction.editReply({ - content: "Unprivileged Access!", - ephemeral: true - }) - } - let channel = '#desq_blocki' - let username = 'desq_blocki' - - let db = mClient.db("shoutouts") - let col = db.collection(channel) - - let query = { user: username } - let status = await col.findOne(query) - if (!status) { - interaction.client.emit("TwitchShoutout", "TEST", channel, username) - await col.insertOne({ - user: username - }) - await interaction.editReply({ - content: "Done!", - ephemeral: true - }) - } else { - await interaction.editReply({ - content: "Already in Database", - ephemeral: true - }) - } - - - } -} \ No newline at end of file diff --git a/commands/mongo/settings.js b/commands/mongo/settings.js deleted file mode 100644 index e69de29..0000000 diff --git a/commands/twitch/chatmode.js b/commands/twitch/chatmode.js deleted file mode 100644 index e69de29..0000000 diff --git a/events/Discord/InteractionCreate.js b/events/Discord/InteractionCreate.js index 3c0ac23..983c384 100644 --- a/events/Discord/InteractionCreate.js +++ b/events/Discord/InteractionCreate.js @@ -1,4 +1,4 @@ -const { Events } = require('discord.js') +const { Events, MessageFlags } = require('discord.js') module.exports = { name: Events.InteractionCreate, @@ -17,9 +17,9 @@ module.exports = { } catch (error) { console.error(error); if (interaction.replied || interaction.deferred) { - await interaction.followUp({ content: 'There was an error while executing this command!', ephemeral: true }); + await interaction.followUp({ content: 'There was an error while executing this command!', flags: MessageFlags.Ephemeral }); } else { - await interaction.reply({ content: 'There was an error while executing this command!', ephemeral: true }); + await interaction.reply({ content: 'There was an error while executing this command!', flags: MessageFlags.Ephemeral }); } } } diff --git a/handlers/events.js b/handlers/events.js index 6a8f2de..83f957b 100644 --- a/handlers/events.js +++ b/handlers/events.js @@ -1,6 +1,6 @@ const fs = require('node:fs') const path = require('node:path'); -const { dClient, mClient, tClient } = require('..'); +var { dClient, mClient, tClient } = require('..'); const { refreshAccessToken } = require('../functions'); const tmi = require('tmi.js')