Channel Set/Get added
This commit is contained in:
@@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user