Added new db env management options
This commit is contained in:
@@ -1,219 +1,66 @@
|
|||||||
const { SlashCommandBuilder, PermissionFlagsBits, ButtonBuilder, ActionRowBuilder, ButtonStyle, } = require("discord.js");
|
const { SlashCommandBuilder, PermissionFlagsBits } = require('discord.js');
|
||||||
const { color } = require("../config/options.json");
|
const { color } = require("../config/options.json");
|
||||||
|
const settings = require("../schemas/settingsSchema.js");
|
||||||
|
const mongoose = require("mongoose");
|
||||||
|
|
||||||
module.exports = {
|
module.exports = {
|
||||||
name: "config",
|
name: "config",
|
||||||
description: "Configure the bot.",
|
description: "Configure the bot",
|
||||||
type: "slash",
|
|
||||||
|
|
||||||
data: new SlashCommandBuilder()
|
data: new SlashCommandBuilder()
|
||||||
.setName("config")
|
.setName("config")
|
||||||
.setDescription("Configure the bot.")
|
.setDescription("Configure the bot")
|
||||||
.addSubcommand((subcommand) =>
|
.addStringOption(option =>
|
||||||
subcommand
|
option
|
||||||
.setName("sendguildapplication")
|
.setName("setting")
|
||||||
.setDescription("Send the application message to a channel.")
|
.setDescription("The setting to configure")
|
||||||
.addChannelOption((option) =>
|
.setRequired(true))
|
||||||
option
|
.addStringOption(option =>
|
||||||
.setName("channel")
|
option
|
||||||
.setDescription("The channel to send the application to.")
|
.setName("value")
|
||||||
.setRequired(true))
|
.setDescription("The value to set")
|
||||||
|
.setRequired(true)
|
||||||
)
|
)
|
||||||
.addSubcommand((subcommand) =>
|
.setDMPermission(false)
|
||||||
subcommand
|
.setDefaultMemberPermissions(PermissionFlagsBits.Administrator),
|
||||||
.setName("sendstaffapplication")
|
|
||||||
.setDescription("Send the application message to a channel.")
|
|
||||||
.addChannelOption((option) =>
|
|
||||||
option
|
|
||||||
.setName("channel")
|
|
||||||
.setDescription("The channel to send the application to.")
|
|
||||||
.setRequired(true)))
|
|
||||||
.addSubcommand((subcommand) =>
|
|
||||||
subcommand
|
|
||||||
.setName("sendverfiymessage")
|
|
||||||
.setDescription("Send the verfiy message to a channel.")
|
|
||||||
.addChannelOption((option) =>
|
|
||||||
option
|
|
||||||
.setName("channel")
|
|
||||||
.setDescription("The channel to send the verfiy message to.")
|
|
||||||
.setRequired(true)))
|
|
||||||
.addSubcommand((subcommand) =>
|
|
||||||
subcommand
|
|
||||||
.setName("sendwaitinglistmessage")
|
|
||||||
.setDescription("Send the waiting list message to a channel.")
|
|
||||||
.addChannelOption((option) =>
|
|
||||||
option
|
|
||||||
.setName("channel")
|
|
||||||
.setDescription("The channel to send the waiting list message to.")
|
|
||||||
.setRequired(true)))
|
|
||||||
.addSubcommand((subcommand) =>
|
|
||||||
subcommand
|
|
||||||
.setName("sendinactivityapplication")
|
|
||||||
.setDescription("Send the application message to a channel.")
|
|
||||||
.addChannelOption((option) =>
|
|
||||||
option
|
|
||||||
.setName("channel")
|
|
||||||
.setDescription("The channel to send the application to.")
|
|
||||||
.setRequired(true)))
|
|
||||||
.setDefaultMemberPermissions(PermissionFlagsBits.Administrator)
|
|
||||||
.setDMPermission(false),
|
|
||||||
|
|
||||||
async execute(interaction) {
|
async execute(interaction) {
|
||||||
const user = interaction.user;
|
|
||||||
const guild = interaction.guild;
|
await interaction.deferReply();
|
||||||
const subcommand = interaction.options.getSubcommand();
|
|
||||||
|
const setting = interaction.options.getString("setting");
|
||||||
|
const value = interaction.options.getString("value");
|
||||||
const embedColor = Number(color.replace("#", "0x"));
|
const embedColor = Number(color.replace("#", "0x"));
|
||||||
|
|
||||||
|
const settingsData = await settings.findOne({ name: setting });
|
||||||
|
|
||||||
if (subcommand === "sendguildapplication") {
|
if (!settingsData) {
|
||||||
const channel = interaction.options.getChannel("channel");
|
|
||||||
|
|
||||||
await channel.send({
|
await settings.create({
|
||||||
embeds: [
|
_id: mongoose.Types.ObjectId(),
|
||||||
{
|
name: setting,
|
||||||
title: "Guild Application",
|
value: value
|
||||||
description: "You can apply for the guild by clicking the button below.",
|
|
||||||
color: embedColor,
|
|
||||||
footer: {
|
|
||||||
text: interaction.guild.name + " | Developed by @Taken#0002",
|
|
||||||
iconURL: interaction.guild.iconURL({ dynamic: true })
|
|
||||||
},
|
|
||||||
thumbnail: {
|
|
||||||
url: interaction.guild.iconURL({ dynamic: true })
|
|
||||||
}
|
|
||||||
}
|
|
||||||
],
|
|
||||||
components: [
|
|
||||||
new ActionRowBuilder()
|
|
||||||
.addComponents(new ButtonBuilder()
|
|
||||||
.setCustomId("guildapply")
|
|
||||||
.setLabel("Apply")
|
|
||||||
.setStyle(ButtonStyle.Primary)
|
|
||||||
.setEmoji({ name: "✅" }))
|
|
||||||
]
|
|
||||||
});
|
|
||||||
await interaction.reply({ content: "Message sent", ephemeral: true });
|
|
||||||
}
|
|
||||||
|
|
||||||
if (subcommand === "sendstaffapplication") {
|
|
||||||
const channel = interaction.options.getChannel("channel");
|
|
||||||
|
|
||||||
await channel.send({
|
|
||||||
embeds: [
|
|
||||||
{
|
|
||||||
title: "Staff Application",
|
|
||||||
description: "You can apply for the staff team by clicking the button below.",
|
|
||||||
color: embedColor,
|
|
||||||
footer: {
|
|
||||||
text: interaction.guild.name + " | Developed by @Taken#0002",
|
|
||||||
iconURL: interaction.guild.iconURL({ dynamic: true })
|
|
||||||
},
|
|
||||||
thumbnail: {
|
|
||||||
url: interaction.guild.iconURL({ dynamic: true })
|
|
||||||
}
|
|
||||||
}
|
|
||||||
],
|
|
||||||
components: [
|
|
||||||
new ActionRowBuilder()
|
|
||||||
.addComponents(new ButtonBuilder()
|
|
||||||
.setCustomId("staffapply")
|
|
||||||
.setLabel("Apply")
|
|
||||||
.setStyle(ButtonStyle.Primary)
|
|
||||||
.setEmoji({ name: "✅" }))
|
|
||||||
]
|
|
||||||
});
|
});
|
||||||
|
|
||||||
await interaction.reply({ content: "Message sent", ephemeral: true });
|
await interaction.editReply({
|
||||||
}
|
|
||||||
|
|
||||||
if (subcommand === "sendinactivityapplication") {
|
|
||||||
const channel = interaction.options.getChannel("channel");
|
|
||||||
|
|
||||||
await channel.send({
|
|
||||||
embeds: [
|
|
||||||
{
|
|
||||||
title: "Inactivity Log",
|
|
||||||
description: "You can send an inactivity log by clicking the button below.",
|
|
||||||
color: embedColor,
|
|
||||||
footer: {
|
|
||||||
text: interaction.guild.name + " | Developed by @Taken#0002",
|
|
||||||
iconURL: interaction.guild.iconURL({ dynamic: true })
|
|
||||||
},
|
|
||||||
thumbnail: {
|
|
||||||
url: interaction.guild.iconURL({ dynamic: true })
|
|
||||||
}
|
|
||||||
}
|
|
||||||
],
|
|
||||||
components: [
|
|
||||||
new ActionRowBuilder()
|
|
||||||
.addComponents(new ButtonBuilder()
|
|
||||||
.setCustomId("guildinactivitylog")
|
|
||||||
.setLabel("Submit")
|
|
||||||
.setStyle(ButtonStyle.Primary)
|
|
||||||
.setEmoji({ name: "✅" }))
|
|
||||||
]
|
|
||||||
});
|
|
||||||
|
|
||||||
await interaction.reply({ content: "Message sent", ephemeral: true });
|
|
||||||
}
|
|
||||||
|
|
||||||
if (subcommand === "sendverfiymessage") {
|
|
||||||
const channel = interaction.options.getChannel("channel");
|
|
||||||
|
|
||||||
await channel.send({
|
|
||||||
embeds: [{
|
embeds: [{
|
||||||
title: "Verification",
|
description: "Successfully created `" + setting + "` with value `" + value + "`.",
|
||||||
description: "You can verify by clicking the button below.",
|
color: embedColor
|
||||||
color: embedColor,
|
}]
|
||||||
footer: {
|
|
||||||
text: interaction.guild.name + " | Developed by @Taken#0002",
|
|
||||||
iconURL: interaction.guild.iconURL({ dynamic: true })
|
|
||||||
},
|
|
||||||
thumbnail: {
|
|
||||||
url: interaction.guild.iconURL({ dynamic: true })
|
|
||||||
}
|
|
||||||
}],
|
|
||||||
components: [
|
|
||||||
new ActionRowBuilder()
|
|
||||||
.addComponents(new ButtonBuilder()
|
|
||||||
.setCustomId("verifybutton")
|
|
||||||
.setLabel("Verify")
|
|
||||||
.setStyle(ButtonStyle.Primary)
|
|
||||||
.setEmoji({ name: "✅" }))
|
|
||||||
]
|
|
||||||
});
|
});
|
||||||
await interaction.reply({ content: "Message sent", ephemeral: true });
|
} else {
|
||||||
|
|
||||||
}
|
await settings.findOneAndUpdate(
|
||||||
|
{ name: setting },
|
||||||
|
{ value: value }
|
||||||
|
);
|
||||||
|
|
||||||
if (subcommand === "sendwaitinglistmessage") {
|
await interaction.editReply({
|
||||||
const channel = interaction.options.getChannel("channel");
|
|
||||||
|
|
||||||
await channel.send({
|
|
||||||
embeds: [{
|
embeds: [{
|
||||||
title: "Waiting List",
|
description: "Successfully updated `" + setting + "` to value `" + value + "`.",
|
||||||
description: "The people below were accepted into the guild\n" +
|
}]
|
||||||
"Try to invite them in order.",
|
})
|
||||||
color: embedColor,
|
|
||||||
footer: {
|
|
||||||
text: interaction.guild.name + " | Developed by @Taken#0002",
|
|
||||||
iconURL: interaction.guild.iconURL({ dynamic: true })
|
|
||||||
},
|
|
||||||
thumbnail: {
|
|
||||||
url: interaction.guild.iconURL({ dynamic: true })
|
|
||||||
}
|
|
||||||
}],
|
|
||||||
components: [
|
|
||||||
new ActionRowBuilder()
|
|
||||||
.addComponents(new ButtonBuilder()
|
|
||||||
.setCustomId("waitinglistupdate")
|
|
||||||
.setLabel("Update")
|
|
||||||
.setStyle(ButtonStyle.Primary)
|
|
||||||
.setEmoji({ name: "🔄" }))
|
|
||||||
]
|
|
||||||
});
|
|
||||||
await interaction.reply({ content: "Message sent", ephemeral: true });
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
};
|
}
|
||||||
|
|||||||
219
commands/setup.js
Normal file
219
commands/setup.js
Normal file
@@ -0,0 +1,219 @@
|
|||||||
|
const { SlashCommandBuilder, PermissionFlagsBits, ButtonBuilder, ActionRowBuilder, ButtonStyle, } = require("discord.js");
|
||||||
|
const { color } = require("../config/options.json");
|
||||||
|
|
||||||
|
module.exports = {
|
||||||
|
name: "setup",
|
||||||
|
description: "Used for setup of the bot.",
|
||||||
|
type: "slash",
|
||||||
|
|
||||||
|
data: new SlashCommandBuilder()
|
||||||
|
.setName("setup")
|
||||||
|
.setDescription("Configure the bot.")
|
||||||
|
.addSubcommand((subcommand) =>
|
||||||
|
subcommand
|
||||||
|
.setName("sendguildapplication")
|
||||||
|
.setDescription("Send the application message to a channel.")
|
||||||
|
.addChannelOption((option) =>
|
||||||
|
option
|
||||||
|
.setName("channel")
|
||||||
|
.setDescription("The channel to send the application to.")
|
||||||
|
.setRequired(true))
|
||||||
|
)
|
||||||
|
.addSubcommand((subcommand) =>
|
||||||
|
subcommand
|
||||||
|
.setName("sendstaffapplication")
|
||||||
|
.setDescription("Send the application message to a channel.")
|
||||||
|
.addChannelOption((option) =>
|
||||||
|
option
|
||||||
|
.setName("channel")
|
||||||
|
.setDescription("The channel to send the application to.")
|
||||||
|
.setRequired(true)))
|
||||||
|
.addSubcommand((subcommand) =>
|
||||||
|
subcommand
|
||||||
|
.setName("sendverfiymessage")
|
||||||
|
.setDescription("Send the verfiy message to a channel.")
|
||||||
|
.addChannelOption((option) =>
|
||||||
|
option
|
||||||
|
.setName("channel")
|
||||||
|
.setDescription("The channel to send the verfiy message to.")
|
||||||
|
.setRequired(true)))
|
||||||
|
.addSubcommand((subcommand) =>
|
||||||
|
subcommand
|
||||||
|
.setName("sendwaitinglistmessage")
|
||||||
|
.setDescription("Send the waiting list message to a channel.")
|
||||||
|
.addChannelOption((option) =>
|
||||||
|
option
|
||||||
|
.setName("channel")
|
||||||
|
.setDescription("The channel to send the waiting list message to.")
|
||||||
|
.setRequired(true)))
|
||||||
|
.addSubcommand((subcommand) =>
|
||||||
|
subcommand
|
||||||
|
.setName("sendinactivityapplication")
|
||||||
|
.setDescription("Send the application message to a channel.")
|
||||||
|
.addChannelOption((option) =>
|
||||||
|
option
|
||||||
|
.setName("channel")
|
||||||
|
.setDescription("The channel to send the application to.")
|
||||||
|
.setRequired(true)))
|
||||||
|
.setDefaultMemberPermissions(PermissionFlagsBits.Administrator)
|
||||||
|
.setDMPermission(false),
|
||||||
|
|
||||||
|
async execute(interaction) {
|
||||||
|
const user = interaction.user;
|
||||||
|
const guild = interaction.guild;
|
||||||
|
const subcommand = interaction.options.getSubcommand();
|
||||||
|
const embedColor = Number(color.replace("#", "0x"));
|
||||||
|
|
||||||
|
|
||||||
|
if (subcommand === "sendguildapplication") {
|
||||||
|
const channel = interaction.options.getChannel("channel");
|
||||||
|
|
||||||
|
await channel.send({
|
||||||
|
embeds: [
|
||||||
|
{
|
||||||
|
title: "Guild Application",
|
||||||
|
description: "You can apply for the guild by clicking the button below.",
|
||||||
|
color: embedColor,
|
||||||
|
footer: {
|
||||||
|
text: interaction.guild.name + " | Developed by @Taken#0002",
|
||||||
|
iconURL: interaction.guild.iconURL({ dynamic: true })
|
||||||
|
},
|
||||||
|
thumbnail: {
|
||||||
|
url: interaction.guild.iconURL({ dynamic: true })
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
components: [
|
||||||
|
new ActionRowBuilder()
|
||||||
|
.addComponents(new ButtonBuilder()
|
||||||
|
.setCustomId("guildapply")
|
||||||
|
.setLabel("Apply")
|
||||||
|
.setStyle(ButtonStyle.Primary)
|
||||||
|
.setEmoji({ name: "✅" }))
|
||||||
|
]
|
||||||
|
});
|
||||||
|
await interaction.reply({ content: "Message sent", ephemeral: true });
|
||||||
|
}
|
||||||
|
|
||||||
|
if (subcommand === "sendstaffapplication") {
|
||||||
|
const channel = interaction.options.getChannel("channel");
|
||||||
|
|
||||||
|
await channel.send({
|
||||||
|
embeds: [
|
||||||
|
{
|
||||||
|
title: "Staff Application",
|
||||||
|
description: "You can apply for the staff team by clicking the button below.",
|
||||||
|
color: embedColor,
|
||||||
|
footer: {
|
||||||
|
text: interaction.guild.name + " | Developed by @Taken#0002",
|
||||||
|
iconURL: interaction.guild.iconURL({ dynamic: true })
|
||||||
|
},
|
||||||
|
thumbnail: {
|
||||||
|
url: interaction.guild.iconURL({ dynamic: true })
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
components: [
|
||||||
|
new ActionRowBuilder()
|
||||||
|
.addComponents(new ButtonBuilder()
|
||||||
|
.setCustomId("staffapply")
|
||||||
|
.setLabel("Apply")
|
||||||
|
.setStyle(ButtonStyle.Primary)
|
||||||
|
.setEmoji({ name: "✅" }))
|
||||||
|
]
|
||||||
|
});
|
||||||
|
|
||||||
|
await interaction.reply({ content: "Message sent", ephemeral: true });
|
||||||
|
}
|
||||||
|
|
||||||
|
if (subcommand === "sendinactivityapplication") {
|
||||||
|
const channel = interaction.options.getChannel("channel");
|
||||||
|
|
||||||
|
await channel.send({
|
||||||
|
embeds: [
|
||||||
|
{
|
||||||
|
title: "Inactivity Log",
|
||||||
|
description: "You can send an inactivity log by clicking the button below.",
|
||||||
|
color: embedColor,
|
||||||
|
footer: {
|
||||||
|
text: interaction.guild.name + " | Developed by @Taken#0002",
|
||||||
|
iconURL: interaction.guild.iconURL({ dynamic: true })
|
||||||
|
},
|
||||||
|
thumbnail: {
|
||||||
|
url: interaction.guild.iconURL({ dynamic: true })
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
components: [
|
||||||
|
new ActionRowBuilder()
|
||||||
|
.addComponents(new ButtonBuilder()
|
||||||
|
.setCustomId("guildinactivitylog")
|
||||||
|
.setLabel("Submit")
|
||||||
|
.setStyle(ButtonStyle.Primary)
|
||||||
|
.setEmoji({ name: "✅" }))
|
||||||
|
]
|
||||||
|
});
|
||||||
|
|
||||||
|
await interaction.reply({ content: "Message sent", ephemeral: true });
|
||||||
|
}
|
||||||
|
|
||||||
|
if (subcommand === "sendverfiymessage") {
|
||||||
|
const channel = interaction.options.getChannel("channel");
|
||||||
|
|
||||||
|
await channel.send({
|
||||||
|
embeds: [{
|
||||||
|
title: "Verification",
|
||||||
|
description: "You can verify by clicking the button below.",
|
||||||
|
color: embedColor,
|
||||||
|
footer: {
|
||||||
|
text: interaction.guild.name + " | Developed by @Taken#0002",
|
||||||
|
iconURL: interaction.guild.iconURL({ dynamic: true })
|
||||||
|
},
|
||||||
|
thumbnail: {
|
||||||
|
url: interaction.guild.iconURL({ dynamic: true })
|
||||||
|
}
|
||||||
|
}],
|
||||||
|
components: [
|
||||||
|
new ActionRowBuilder()
|
||||||
|
.addComponents(new ButtonBuilder()
|
||||||
|
.setCustomId("verifybutton")
|
||||||
|
.setLabel("Verify")
|
||||||
|
.setStyle(ButtonStyle.Primary)
|
||||||
|
.setEmoji({ name: "✅" }))
|
||||||
|
]
|
||||||
|
});
|
||||||
|
await interaction.reply({ content: "Message sent", ephemeral: true });
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
if (subcommand === "sendwaitinglistmessage") {
|
||||||
|
const channel = interaction.options.getChannel("channel");
|
||||||
|
|
||||||
|
await channel.send({
|
||||||
|
embeds: [{
|
||||||
|
title: "Waiting List",
|
||||||
|
description: "The people below were accepted into the guild\n" +
|
||||||
|
"Try to invite them in order.",
|
||||||
|
color: embedColor,
|
||||||
|
footer: {
|
||||||
|
text: interaction.guild.name + " | Developed by @Taken#0002",
|
||||||
|
iconURL: interaction.guild.iconURL({ dynamic: true })
|
||||||
|
},
|
||||||
|
thumbnail: {
|
||||||
|
url: interaction.guild.iconURL({ dynamic: true })
|
||||||
|
}
|
||||||
|
}],
|
||||||
|
components: [
|
||||||
|
new ActionRowBuilder()
|
||||||
|
.addComponents(new ButtonBuilder()
|
||||||
|
.setCustomId("waitinglistupdate")
|
||||||
|
.setLabel("Update")
|
||||||
|
.setStyle(ButtonStyle.Primary)
|
||||||
|
.setEmoji({ name: "🔄" }))
|
||||||
|
]
|
||||||
|
});
|
||||||
|
await interaction.reply({ content: "Message sent", ephemeral: true });
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
};
|
||||||
9
schemas/settingsSchema.js
Normal file
9
schemas/settingsSchema.js
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
const { Schema, model } = require('mongoose');
|
||||||
|
|
||||||
|
const settingsSchema = new Schema({
|
||||||
|
_id: Schema.Types.ObjectId,
|
||||||
|
name: { type: String, required: true },
|
||||||
|
value: { type: String, required: true },
|
||||||
|
});
|
||||||
|
|
||||||
|
module.exports = model('settings', settingsSchema, 'settings');
|
||||||
Reference in New Issue
Block a user