import { SlashCommandBuilder } from '@discordjs/builders'; import { CommandInteraction } from 'discord.js'; import { subscriptions, timeAnnouncements } from '../lib/subscriptions'; module.exports = { data: new SlashCommandBuilder() .setName('subscribe') .setDescription('Subscribe/unsubscribe to a time announcement') .addStringOption(option => option .setName('type') .setChoices(...Object.keys(timeAnnouncements).map(l => ({name: l, value: l}))) .setDescription('The name of the time announcement') ) .setDefaultPermission(false), execute: async (interaction: CommandInteraction) => { await interaction.deferReply({ephemeral: true}); const announcementType = interaction.options.getString('type') as string; if (subscriptions[announcementType] && subscriptions[announcementType].includes(interaction.channelId)) { subscriptions[announcementType] = subscriptions[announcementType].filter(id => id !== interaction.channelId); await interaction.followUp({ content: `<#${interaction.channelId}> has been unsubscribed from \`${announcementType}\`` }); } else { subscriptions[announcementType] = subscriptions[announcementType] || []; subscriptions[announcementType].push(interaction.channelId); await interaction.followUp({ content: `<#${interaction.channelId}> has been subscribed to \`${announcementType}\`` }); } } };