jillo-bot/src/commands/subscribe.ts

35 lines
1.5 KiB
TypeScript
Raw Normal View History

2023-03-22 11:50:13 +01:00
import { SlashCommandBuilder } from '@discordjs/builders';
import { CommandInteraction } from 'discord.js';
2023-03-22 12:00:59 +01:00
import { saveSubscriptions, subscriptions, timeAnnouncements } from '../lib/subscriptions';
2023-03-22 11:50:13 +01:00
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;
2023-03-22 11:53:54 +01:00
if (subscriptions[announcementType] && subscriptions[announcementType].includes(interaction.channelId)) {
2023-03-22 11:50:13 +01:00
subscriptions[announcementType] = subscriptions[announcementType].filter(id => id !== interaction.channelId);
await interaction.followUp({
content: `<#${interaction.channelId}> has been unsubscribed from \`${announcementType}\``
});
} else {
2023-03-22 11:53:54 +01:00
subscriptions[announcementType] = subscriptions[announcementType] || [];
2023-03-22 11:50:13 +01:00
subscriptions[announcementType].push(interaction.channelId);
await interaction.followUp({
content: `<#${interaction.channelId}> has been subscribed to \`${announcementType}\``
});
}
2023-03-22 12:00:59 +01:00
saveSubscriptions();
2023-03-22 11:50:13 +01:00
}
};