const { SlashCommandBuilder } = require ( '@discordjs/builders' ) ;
const { MessageEmbed } = require ( 'discord.js' ) ;
const gitlog = require ( 'gitlog' ) . default ;
const userScore = require ( '../models/userScore' ) ;
module . exports = {
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 ;
} ) ,
async execute ( interaction ) {
await interaction . deferReply ( ) ;
const client = interaction . client ;
const action = interaction . options . getSubcommand ( ) ;
if ( action === '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 ] } ) ;
}
else if ( action === 'changelog' ) {
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 ` ) ;
} ) ;
interaction . followUp ( { embeds : [ changelogEmbed ] } ) ;
}
else if ( action === '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 ( ) ;
interaction . followUp ( { embeds : [ aboutBotEmbed ] } ) ;
}
} ,
} ;