2022-03-03 20:56:49 +07:00
import DiscordModule , { HybridInteractionMessage } from "../utils/DiscordModule" ;
2021-09-16 23:55:08 -07:00
import { CommandInteraction , Interaction , Message } from "discord.js" ;
2022-03-03 20:56:49 +07:00
import { sendHybridInteractionMessageResponse , makeInfoEmbed } from "../utils/DiscordMessage" ;
2021-09-15 06:05:57 -07:00
import DiscordProvider from "../providers/Discord" ;
2021-09-18 03:51:26 -07:00
import Cache from "../providers/Cache" ;
2021-09-15 06:05:57 -07:00
2021-09-18 03:51:26 -07:00
const EMBEDS = {
INFO : async ( data : Message | Interaction ) => {
2021-09-15 06:05:57 -07:00
2021-09-18 03:51:26 -07:00
let GuildCache = await Cache . getGuild ( data . guildId ! );
2022-01-27 17:59:07 +07:00
// TODO: Better error handling
if ( typeof GuildCache === 'undefined' )
throw new Error ( "Guild not found" );
2021-09-15 06:05:57 -07:00
2021-09-18 03:51:26 -07:00
let prefix = GuildCache . prefix || '>' ;
2021-09-15 06:05:57 -07:00
2021-09-18 03:51:26 -07:00
let _e = makeInfoEmbed ({
2021-09-15 06:05:57 -07:00
icon : "💌" ,
title : `Help - ${ DiscordProvider . client . user ? . username } ` ,
2022-06-06 02:18:41 +07:00
description : ` \ u200b \ n📰 **Info** \ nYumi is currently undergoing complete rewrite, as expected, losing many of her functionality. All of the features will be re-implemented. \ n \ n🏷️ **Prefix** \ nYou can call me using \`\` ${ prefix . replaceAll ( '`' , '` ' ) } \`\`, <@ ${ DiscordProvider . client . user ? . id } > or \`\`/slash command\`\` \ n \ n💻 **Available commands**` ,
2021-09-15 06:05:57 -07:00
fields : [
{
2022-01-30 21:50:18 +07:00
name : '☕ General' ,
2022-02-05 01:20:14 +07:00
value : `help, ping, invite, userinfo, stats` ,
2022-01-30 21:50:18 +07:00
inline : true
2021-09-15 06:05:57 -07:00
},
{
2022-01-30 21:50:18 +07:00
name : '🎵 Music' ,
2022-06-06 02:18:41 +07:00
value : `play (p), search, skip, pause, resume, queue (q), nowplaying (np), loop, join, leave (disconnect, dc)` ,
2022-01-30 21:50:18 +07:00
inline : true
2021-09-15 06:05:57 -07:00
},
2021-09-18 03:51:26 -07:00
{
2022-01-30 21:50:18 +07:00
name : '🎮 Games' ,
value : `osu` ,
inline : true
2021-09-18 03:51:26 -07:00
},
2021-09-15 06:05:57 -07:00
{
2022-01-30 21:50:18 +07:00
name : '🔐 Admin' ,
value : `settings, say, membershipscreening (ms)` ,
inline : true
},
{
name : '🔧 Developer' ,
2022-03-03 23:57:03 +07:00
value : 'debug, interactions, serviceannouncement' ,
2022-01-30 21:50:18 +07:00
inline : true
2022-02-02 22:13:27 +07:00
},
{
name : '\u200b' ,
value : '**Made with 💖 and [open source](https://github.com/YuzuZensai/Yumi)**' ,
inline : false
2021-09-15 06:05:57 -07:00
}
],
2021-09-18 03:51:26 -07:00
user : ( data instanceof Interaction ) ? data.user : data.author
2021-09-15 06:05:57 -07:00
});
2022-06-05 02:20:45 +07:00
_e . setThumbnail ( ` ${ DiscordProvider . client . user ? . displayAvatarURL () } ?size=4096` || '' );
2021-09-18 03:51:26 -07:00
return _e ;
}
}
2021-09-15 06:05:57 -07:00
2022-03-03 20:56:49 +07:00
export default class Help extends DiscordModule {
2021-09-15 06:05:57 -07:00
2022-03-03 20:56:49 +07:00
public id = "Discord_Help" ;
public commands = [ "help" ];
public commandInteractionName = "help" ;
async GuildOnModuleCommand ( args : any , message : Message ) {
await this . run ( new HybridInteractionMessage ( message ), args );
2021-09-18 03:51:26 -07:00
}
2022-03-03 20:56:49 +07:00
async GuildModuleCommandInteractionCreate ( interaction : CommandInteraction ) {
await this . run ( new HybridInteractionMessage ( interaction ), interaction . options );
2021-09-15 06:05:57 -07:00
}
2021-09-18 03:51:26 -07:00
2022-03-03 20:56:49 +07:00
async run ( data : HybridInteractionMessage , args : any ) {
const message = await sendHybridInteractionMessageResponse ( data , { embeds : [ await EMBEDS . INFO ( data . getRaw ())] });
2021-09-18 03:51:26 -07:00
2022-03-03 20:56:49 +07:00
if ( message && data . isMessage ())
return new HybridInteractionMessage ( message ). getMessage (). react ( "♥" );
2021-09-18 03:51:26 -07:00
}
2021-09-15 06:05:57 -07:00
}