aboutsummaryrefslogtreecommitdiff
path: root/bot/src/commands/settings.js
diff options
context:
space:
mode:
Diffstat (limited to 'bot/src/commands/settings.js')
-rw-r--r--bot/src/commands/settings.js79
1 files changed, 71 insertions, 8 deletions
diff --git a/bot/src/commands/settings.js b/bot/src/commands/settings.js
index 00f7caf..5fdf0cd 100644
--- a/bot/src/commands/settings.js
+++ b/bot/src/commands/settings.js
@@ -1,5 +1,17 @@
-import { EmbedBuilder, MessageFlags, PermissionFlagsBits, SlashCommandBuilder, ButtonBuilder, ButtonStyle, ActionRowBuilder, ComponentType } from 'discord.js';
+import {
+ EmbedBuilder,
+ MessageFlags,
+ PermissionFlagsBits,
+ SlashCommandBuilder,
+ ButtonBuilder,
+ ButtonStyle,
+ ActionRowBuilder,
+ ComponentType,
+ ChannelType,
+ ChannelSelectMenuBuilder
+} from 'discord.js';
import { abEmbedColour } from '../storage/consts.js';
+import { guildSettings } from '../models/guild-settings.js';
export default {
data: new SlashCommandBuilder()
@@ -17,6 +29,17 @@ export default {
if (interaction.options.getSubcommand() === 'guild') {
//if (!interaction.member.permissions.has(PermissionFlagsBits.ManageGuild)) return await interaction.reply({ content: 'You do not have the permission to manage this guild.', flags: MessageFlags.Ephemeral });
+ const guildSetting = await guildSettings.findOne({ where: { guildID: interaction.guild.id } });
+
+ if (!guildSetting) {
+ await guildSettings.create({ guildID: interaction.guild.id });
+ }
+
+ const logMenu = new ChannelSelectMenuBuilder()
+ .setCustomId('logMenu')
+ .setPlaceholder('Select a channel')
+ .setChannelTypes(ChannelType.GuildText);
+
const logging = new ButtonBuilder()
.setCustomId('logging')
.setLabel('Logging')
@@ -27,18 +50,41 @@ export default {
.setLabel('Suggestions')
.setStyle(ButtonStyle.Primary);
+ const qotdChannel = new ButtonBuilder()
+ .setCustomId('qotdChannel')
+ .setLabel('QOTD Channel')
+ .setStyle(ButtonStyle.Primary);
+
+ const llmChatbot = new ButtonBuilder()
+ .setCustomId('llmChatbot')
+ .setLabel('LLM Chatbot')
+ .setStyle(ButtonStyle.Primary);
+
+ const qotdToggle = new ButtonBuilder()
+ .setCustomId('qotdToggle')
+ .setLabel('QOTD Toggle')
+ .setStyle(ButtonStyle.Primary);
+
+ const done = new ButtonBuilder()
+ .setCustomId('done')
+ .setLabel('Suggestions')
+ .setStyle(ButtonStyle.Success);
+
const row = new ActionRowBuilder()
- .addComponents(logging, suggestions);
+ .addComponents(logging, suggestions, qotdChannel, llmChatbot, qotdToggle);
+
+ const row2 = new ActionRowBuilder()
+ .addComponents(logMenu);
const guildEmbed = new EmbedBuilder()
.setAuthor({ name: 'AleeBot Guild Settings', iconURL: interaction.client.user.avatarURL() })
.setDescription('Select the options')
.addFields(
- { name: 'Logging', value: 'logchannel', inline: true },
- { name: 'Suggestions', value: 'channel', inline: true },
- { name: 'LLM Chatbot', value: 'Enabled', inline: true },
- { name: 'Quote of the Day', value: 'logchannel', inline: true },
- { name: 'QOTD Channel', value: 'logchannel', inline: true }
+ { name: 'Logging', value: guildSetting?.logChannelID ? `<#${guildSetting.logChannelID}>` : 'N/A', inline: true },
+ { name: 'Suggestions', value: guildSetting?.suggestionsChannelID ? `<#${guildSetting.suggestionsChannelID}>` : 'N/A', inline: true },
+ { name: 'QOTD Channel', value: guildSetting?.qotdChannelID ? `<#${guildSetting.qotdChannelID}>` : 'N/A', inline: true },
+ { name: 'LLM Chatbot', value: guildSetting?.ollamaEnabled ? 'Enabled' : 'Disabled', inline: true },
+ { name: 'Quote of the Day', value: guildSetting?.qotdToggle ? 'Enabled' : 'Disabled', inline: true }
)
.setColor(abEmbedColour);
@@ -54,7 +100,24 @@ export default {
guildCollector.on('collect', async (interaction) => {
if (interaction.customId === 'logging') {
- await interaction.reply({ content: 'Clicked on logging' });
+ await interaction.reply({ components: [row2] });
+
+ const logMenuInteraction = await interaction.channel.awaitMessageComponent({
+ componentType: ComponentType.ChannelSelectMenu,
+ filter: (i) => i.user.id === interaction.user.id,
+ time: 1000 * 120
+ });
+
+ if (logMenuInteraction.customId === 'logMenu') {
+ await logMenuInteraction.reply({ content: `Selected <#${logMenuInteraction.values}>` });
+ await guildSettings.update({ logChannelID: logMenuInteraction.values[0] }, { where: { guildID: interaction.guild.id } });
+ }
+
+ const logSetting = await guildSettings.findOne({ where: { guildID: interaction.guild.id } });
+ guildEmbed.spliceFields(0, 1, { name: 'Logging', value: logSetting?.logChannelID ? `<#${logSetting.logChannelID}>` : 'N/A', inline: true });
+
+ await interaction.editReply({ embeds: [guildEmbed], components: [row] });
+ await interaction.deleteReply();
}
if (interaction.customId === 'suggestions') {