diff --git a/src/commands/about.ts b/src/commands/about.ts index d539c49..39618ae 100644 --- a/src/commands/about.ts +++ b/src/commands/about.ts @@ -5,83 +5,54 @@ import gitlog from 'gitlog'; import userScore from '../models/userScore'; +import { paginateInteraction } from '../helpers/util/pagination'; + export const data = new SlashCommandBuilder() .setName('about') - .setDescription('Commands regarding the creation/development of the bot') - .addSubcommand(subcommand => { - subcommand - .setName('contributors') - .setDescription('Lists contributors to the AwesomeSciBo bot'); - return subcommand; - }) - .addSubcommand(subcommand => { - subcommand - .setName('changelog') - .setDescription('Lists the 5 most recent changes in a "git log" type format'); - return subcommand; - }) - .addSubcommand(subcommand => { - subcommand - .setName('bot') - .setDescription('Lists information about AwesomeSciBo'); - return subcommand; - }); + .setDescription('Commands regarding the creation/development of the bot'); export async function execute(interaction : CommandInteraction) { await interaction.deferReply(); const client = interaction.client; + const embeds : MessageEmbed[] = []; - switch (interaction.options.getSubcommand()) { - case 'contributors': { - const contributorEmbed = new MessageEmbed().setTitle('Contributors') - .addField('Creator', '<@745063586422063214> [ADawesomeguy#3602]', true) - .addField('Contributors', '<@650525101048987649> [tEjAs#8127]\n<@426864344463048705> [tetrident#9396]', true) // Add more contributors here, first one is Abheek, second one is Tejas - .setTimestamp() - .setColor('#ffffff'); - - interaction.followUp({ embeds: [contributorEmbed] }); - - break; - } + const contributorEmbed = new MessageEmbed().setTitle('Contributors') + .addField('Creator', '<@745063586422063214> [ADawesomeguy#3602]', true) + .addField('Contributors', '<@650525101048987649> [tEjAs#8127]\n<@426864344463048705> [tetrident#9396]', true) // Add more contributors here, first one is Abheek, second one is Tejas + .setTimestamp() + .setColor('#ffffff'); + embeds.push(contributorEmbed); - case 'changelog': { - const gitRepoLocation = __dirname; + const gitRepoLocation = __dirname; - const commits = gitlog({ - repo: gitRepoLocation, - number: 5, - fields: ['hash', 'abbrevHash', 'subject', 'authorName', 'authorDateRel'], - }); - - const changelogEmbed = new MessageEmbed() - .setAuthor({ name: interaction.user.tag, iconURL: interaction.user.displayAvatarURL() }) - .setTitle('Changelog') - .setColor('#ffffff') - .setTimestamp(); - - commits.forEach(commit => { - changelogEmbed.addField(commit.abbrevHash, `> \`Hash:\`${commit.hash}\n> \`Subject:\`${commit.subject}\n> \`Author:\`${commit.authorName}\n> \`Date:\`${commit.authorDateRel}\n> \`Link\`: [GitHub](https://github.com/ADawesomeguy/AwesomeSciBo/commit/${commit.hash})\n`); - }); + const commits = gitlog({ + repo: gitRepoLocation, + number: 5, + fields: ['hash', 'abbrevHash', 'subject', 'authorName', 'authorDateRel'], + }); - interaction.followUp({ embeds: [changelogEmbed] }); + const changelogEmbed = new MessageEmbed() + .setAuthor({ name: interaction.user.tag, iconURL: interaction.user.displayAvatarURL() }) + .setTitle('Changelog') + .setColor('#ffffff') + .setTimestamp(); - break; - } + commits.forEach(commit => { + changelogEmbed.addField(commit.abbrevHash, `> \`Hash:\`${commit.hash}\n> \`Subject:\`${commit.subject}\n> \`Author:\`${commit.authorName}\n> \`Date:\`${commit.authorDateRel}\n> \`Link\`: [GitHub](https://github.com/ADawesomeguy/AwesomeSciBo/commit/${commit.hash})\n`); + }); + embeds.push(changelogEmbed); - case 'bot': { - await client.guilds.fetch(); - const trainingDocuments = await userScore.countDocuments({}); - const aboutBotEmbed = new MessageEmbed() - .setAuthor({ name: interaction.user.tag, iconURL: interaction.user.displayAvatarURL() }) - .setTitle('About AwesomeSciBo') - .addField('Servers', `${client.guilds.cache.size}`, true) - .addField('Training Users', `${trainingDocuments}`, true) - .setTimestamp(); + await client.guilds.fetch(); + const trainingDocuments = await userScore.countDocuments({}); + const aboutBotEmbed = new MessageEmbed() + .setAuthor({ name: interaction.user.tag, iconURL: interaction.user.displayAvatarURL() }) + .setTitle('About AwesomeSciBo') + .addField('Servers', `${client.guilds.cache.size}`, true) + .addField('Training Users', `${trainingDocuments}`, true) + .setTimestamp(); - interaction.followUp({ embeds: [aboutBotEmbed] }); + embeds.push(aboutBotEmbed); - break; - } - } + paginateInteraction(interaction, embeds); }