diff options
author | IRONM00N <64110067+IRONM00N@users.noreply.github.com> | 2021-06-14 22:51:48 -0400 |
---|---|---|
committer | IRONM00N <64110067+IRONM00N@users.noreply.github.com> | 2021-06-14 22:51:48 -0400 |
commit | d055e0dbb86ef7fd4ee96a1531b51181e825fb4b (patch) | |
tree | e2ed9e956f2d8167e7f225383f9917e66d2a2803 /src/lib | |
parent | 335f7c30994fc8c4e787f407dfd4c2de63b400e3 (diff) | |
download | tanzanite-d055e0dbb86ef7fd4ee96a1531b51181e825fb4b.tar.gz tanzanite-d055e0dbb86ef7fd4ee96a1531b51181e825fb4b.tar.bz2 tanzanite-d055e0dbb86ef7fd4ee96a1531b51181e825fb4b.zip |
made a few changes
Diffstat (limited to 'src/lib')
-rw-r--r-- | src/lib/extensions/BushClient.ts | 37 | ||||
-rw-r--r-- | src/lib/extensions/BushCommand.ts | 1 | ||||
-rw-r--r-- | src/lib/extensions/BushCommandHandler.ts | 15 | ||||
-rw-r--r-- | src/lib/extensions/BushInteractionMessage.ts | 15 | ||||
-rw-r--r-- | src/lib/extensions/BushListenerHandler.ts | 6 | ||||
-rw-r--r-- | src/lib/extensions/BushMessage.ts | 11 | ||||
-rw-r--r-- | src/lib/extensions/BushTaskHandler.ts | 12 | ||||
-rw-r--r-- | src/lib/extensions/Util.ts | 256 | ||||
-rw-r--r-- | src/lib/models/Ban.ts | 9 | ||||
-rw-r--r-- | src/lib/utils/Console.ts | 188 | ||||
-rw-r--r-- | src/lib/utils/Logger.ts | 4 |
11 files changed, 411 insertions, 143 deletions
diff --git a/src/lib/extensions/BushClient.ts b/src/lib/extensions/BushClient.ts index 8a0fc8c..e2e889b 100644 --- a/src/lib/extensions/BushClient.ts +++ b/src/lib/extensions/BushClient.ts @@ -1,14 +1,15 @@ -import { AkairoClient, CommandHandler, InhibitorHandler, ListenerHandler, TaskHandler } from 'discord-akairo'; -import { Guild } from 'discord.js'; +import chalk from 'chalk'; +import { AkairoClient, InhibitorHandler, ListenerHandler, TaskHandler } from 'discord-akairo'; +import { Guild, Intents, Snowflake } from 'discord.js'; import * as path from 'path'; -import { Sequelize } from 'sequelize'; -import * as Models from '../models'; -import { Util } from './Util'; import { exit } from 'process'; -import { Intents } from 'discord.js'; +import { Sequelize } from 'sequelize'; import * as config from '../../config/options'; -import { Logger } from '../utils/Logger'; -import chalk from 'chalk'; +import * as Models from '../models'; +import AllowedMentions from '../utils/AllowedMentions'; +import { BushLogger } from '../utils/Logger'; +import { BushCommandHandler } from './BushCommandHandler'; +import { BushUtil } from './Util'; export type BotConfig = typeof config; @@ -16,21 +17,21 @@ export class BushClient extends AkairoClient { public config: BotConfig; public listenerHandler: ListenerHandler; public inhibitorHandler: InhibitorHandler; - public commandHandler: CommandHandler; + public commandHandler: BushCommandHandler; public taskHandler: TaskHandler; - public util: Util; - public ownerID: string[]; + public util: BushUtil; + public ownerID: Snowflake[]; public db: Sequelize; - public logger: Logger; + public logger: BushLogger; constructor(config: BotConfig) { super( { ownerID: config.owners, - intents: Intents.NON_PRIVILEGED + intents: Intents.ALL }, { - allowedMentions: { parse: ['users'] }, // No everyone or role mentions by default - intents: Intents.NON_PRIVILEGED + allowedMentions: AllowedMentions.users(), // No everyone or role mentions by default + intents: Intents.ALL } ); @@ -58,7 +59,7 @@ export class BushClient extends AkairoClient { }); // Create command handler - this.commandHandler = new CommandHandler(this, { + this.commandHandler = new BushCommandHandler(this, { directory: path.join(__dirname, '..', '..', 'commands'), prefix: async ({ guild }: { guild: Guild }) => { const row = await Models.Guild.findByPk(guild.id); @@ -82,14 +83,14 @@ export class BushClient extends AkairoClient { automateCategories: true }); - this.util = new Util(this); + this.util = new BushUtil(this); this.db = new Sequelize(this.config.dev ? 'bushbot-dev' : 'bushbot', this.config.db.username, this.config.db.password, { dialect: 'postgres', host: this.config.db.host, port: this.config.db.port, logging: false }); - this.logger = new Logger(this); + this.logger = new BushLogger(this); } // Initialize everything diff --git a/src/lib/extensions/BushCommand.ts b/src/lib/extensions/BushCommand.ts index 4f9dc6e..2b34c69 100644 --- a/src/lib/extensions/BushCommand.ts +++ b/src/lib/extensions/BushCommand.ts @@ -13,6 +13,7 @@ export interface BushCommandOptions extends CommandOptions { export class BushCommand extends Command { public client: BushClient; + options: BushCommandOptions; constructor(id: string, options?: BushCommandOptions) { super(id, options); this.options = options; diff --git a/src/lib/extensions/BushCommandHandler.ts b/src/lib/extensions/BushCommandHandler.ts new file mode 100644 index 0000000..6ef44d7 --- /dev/null +++ b/src/lib/extensions/BushCommandHandler.ts @@ -0,0 +1,15 @@ +import { CommandHandler, CommandHandlerOptions } from 'discord-akairo'; +import { Collection } from 'discord.js'; +import { BushClient } from './BushClient'; +import { BushCommand } from './BushCommand'; + +export interface BushCommandHandlerOptions extends CommandHandlerOptions {} + +export class BushCommandHandler extends CommandHandler { + public constructor(client: BushClient, options: BushCommandHandlerOptions) { + super(client, options); + this.client = client; + } + + declare modules: Collection<string, BushCommand>; +} diff --git a/src/lib/extensions/BushInteractionMessage.ts b/src/lib/extensions/BushInteractionMessage.ts new file mode 100644 index 0000000..9bdc291 --- /dev/null +++ b/src/lib/extensions/BushInteractionMessage.ts @@ -0,0 +1,15 @@ +import { AkairoMessage } from 'discord-akairo'; +import { CommandInteraction } from 'discord.js'; +import { BushClient } from './BushClient'; + +export class BushInteractionMessage extends AkairoMessage { + public constructor( + client: BushClient, + interaction: CommandInteraction, + { slash, replied }: { slash?: boolean; replied?: boolean } + ) { + super(client, interaction, { slash, replied }); + this.client = client; + this.interaction = interaction; + } +} diff --git a/src/lib/extensions/BushListenerHandler.ts b/src/lib/extensions/BushListenerHandler.ts new file mode 100644 index 0000000..28615fc --- /dev/null +++ b/src/lib/extensions/BushListenerHandler.ts @@ -0,0 +1,6 @@ +import { ListenerHandler } from 'discord-akairo'; +import { BushClient } from './BushClient'; + +export class BushListenerHandler extends ListenerHandler { + declare client: BushClient; +} diff --git a/src/lib/extensions/BushMessage.ts b/src/lib/extensions/BushMessage.ts new file mode 100644 index 0000000..e7146f6 --- /dev/null +++ b/src/lib/extensions/BushMessage.ts @@ -0,0 +1,11 @@ +import { DMChannel, Message, NewsChannel, TextChannel } from 'discord.js'; +import { BushClient } from './BushClient'; + +export class BushMessage extends Message { + declare client: BushClient; + constructor(client: BushClient, data: unknown, channel: TextChannel | DMChannel | NewsChannel) { + super(client, data, channel); + this.client = client; + this.channel = channel; + } +} diff --git a/src/lib/extensions/BushTaskHandler.ts b/src/lib/extensions/BushTaskHandler.ts new file mode 100644 index 0000000..f783eb3 --- /dev/null +++ b/src/lib/extensions/BushTaskHandler.ts @@ -0,0 +1,12 @@ +import { AkairoHandlerOptions, TaskHandler } from 'discord-akairo'; +import { BushClient } from './BushClient'; + +export interface BushTaskHandlerOptions extends AkairoHandlerOptions {} + +export class BushTaskHandler extends TaskHandler { + public constructor(client: BushClient, options: BushTaskHandlerOptions) { + super(client, options); + this.client; + } + declare client: BushClient; +} diff --git a/src/lib/extensions/Util.ts b/src/lib/extensions/Util.ts index 78fba12..3913437 100644 --- a/src/lib/extensions/Util.ts +++ b/src/lib/extensions/Util.ts @@ -1,20 +1,33 @@ -import { ClientUtil } from 'discord-akairo'; -import { BushClient } from './BushClient'; -import { promisify } from 'util'; +import chalk from 'chalk'; import { exec } from 'child_process'; -import got from 'got'; -import { MessageEmbed, GuildMember, User } from 'discord.js'; -import { CommandInteractionOption } from 'discord.js'; +import { ClientUtil, Command } from 'discord-akairo'; import { - ApplicationCommandOptionType, - APIInteractionDataResolvedGuildMember, APIInteractionDataResolvedChannel, - APIRole + APIInteractionDataResolvedGuildMember, + APIRole, + ApplicationCommandOptionType } from 'discord-api-types'; -import { GuildChannel } from 'discord.js'; -import { Role } from 'discord.js'; -import chalk from 'chalk'; -import { Guild } from 'discord.js'; +import { + ButtonInteraction, + CommandInteractionOption, + Constants, + Guild, + GuildChannel, + GuildMember, + MessageActionRow, + MessageButton, + MessageComponentInteraction, + MessageEmbed, + MessageOptions, + Role, + Snowflake, + User, + Util +} from 'discord.js'; +import got from 'got'; +import { promisify } from 'util'; +import { BushClient } from './BushClient'; +import { BushMessage } from './BushMessage'; interface hastebinRes { key: string; @@ -23,11 +36,7 @@ interface hastebinRes { export interface uuidRes { uuid: string; username: string; - username_history?: - | { - username: string; - }[] - | null; + username_history?: { username: string }[] | null; textures: { custom: boolean; slim: boolean; @@ -54,7 +63,7 @@ export interface SlashCommandOption<T> { role?: Role | APIRole; } -export class Util extends ClientUtil { +export class BushUtil extends ClientUtil { /** * The client of this ClientUtil * @type {BushClient} @@ -92,7 +101,7 @@ export class Util extends ClientUtil { * @param ids The list of IDs to map * @returns The list of users mapped */ - public async mapIDs(ids: string[]): Promise<User[]> { + public async mapIDs(ids: Snowflake[]): Promise<User[]> { return await Promise.all(ids.map((id) => this.client.users.fetch(id))); } @@ -144,7 +153,7 @@ export class Util extends ClientUtil { const idMatch = text.match(idReg); if (idMatch) { try { - const user = await this.client.users.fetch(text); + const user = await this.client.users.fetch(text as Snowflake); return user; } catch { // pass @@ -154,7 +163,7 @@ export class Util extends ClientUtil { const mentionMatch = text.match(mentionReg); if (mentionMatch) { try { - const user = await this.client.users.fetch(mentionMatch.groups.id); + const user = await this.client.users.fetch(mentionMatch.groups.id as Snowflake); return user; } catch { // pass @@ -195,24 +204,37 @@ export class Util extends ClientUtil { */ public colors = { default: '#1FD8F1', - error: '#ff0000', - success: '#00ff02', + error: '#EF4947', + warn: '#FEBA12', + success: '#3BB681', red: '#ff0000', - blue: '#0055ff', + orange: '#E86100', + gold: '#b59400', + yellow: '#ffff00', + green: '#00ff1e', + darkGreen: '#008f11', aqua: '#00bbff', - purple: '#8400ff', + blue: '#0055ff', blurple: '#5440cd', + purple: '#8400ff', pink: '#ff00e6', - green: '#00ff1e', - darkgreen: '#008f11', - gold: '#b59400', - yellow: '#ffff00', white: '#ffffff', gray: '#a6a6a6', - lightgray: '#cfcfcf', - darkgray: '#7a7a7a', - black: '#000000', - orange: '#E86100' + lightGray: '#cfcfcf', + darkGray: '#7a7a7a', + black: '#000000' + }; + + public emojis = { + success: '<:checkmark:837109864101707807>', + warn: '<:warn:848726900876247050> ', + error: '<:error:837123021016924261>', + successFull: '<:checkmark_full:850118767576088646>', + warnFull: '<:warn_full:850118767391539312>', + errorFull: '<:error_full:850118767295201350>', + mad: '<:mad:783046135392239626>', + join: '<:join:850198029809614858>', + leave: '<:leave:850198048205307919>' }; /** @@ -238,7 +260,7 @@ export class Util extends ClientUtil { return apiRes.uuid.replace(/-/g, ''); } - public async syncSlashCommands(force = false, guild?: string): Promise<void> { + public async syncSlashCommands(force = false, guild?: Snowflake): Promise<void> { let fetchedGuild: Guild; if (guild) fetchedGuild = this.client.guilds.cache.get(guild); try { @@ -260,7 +282,7 @@ export class Util extends ClientUtil { for (const [, botCommand] of this.client.commandHandler.modules) { if (botCommand.execSlash) { const found = registered.find((i) => i.name == botCommand.id); - + Command; const slashdata = { name: botCommand.id, description: botCommand.description.content, @@ -332,6 +354,168 @@ export class Util extends ClientUtil { { name: 'No Giveaways', id: '808265422334984203' }, { name: 'No Support', id: '790247359824396319' } ]; + + private paginateEmojis = { + begging: '853667381335162910', + back: '853667410203770881', + stop: '853667471110570034', + forward: '853667492680564747', + end: '853667514915225640' + }; + + public async buttonPaginate( + message: BushMessage, + embeds: MessageEmbed[], + text: string | null = null, + deleteOnExit?: boolean + ): Promise<void> { + if (deleteOnExit === undefined) deleteOnExit = true; + embeds.forEach((_e, i) => { + embeds[i] = embeds[i].setFooter(`Page ${i + 1}/${embeds.length}`); + }); + + const style = Constants.MessageButtonStyles.PRIMARY; + let curPage = 0; + if (typeof embeds !== 'object') throw 'embeds must be an object'; + const msg = await message.util.reply({ content: text, embeds: [embeds[curPage]], components: [getPaginationRow()] }); + const filter = (interaction: ButtonInteraction) => + interaction.customID.startsWith('paginate_') && interaction.message == msg; + const collector = msg.createMessageComponentInteractionCollector(filter, { time: 300000 }); + collector.on('collect', async (interaction: MessageComponentInteraction) => { + if (interaction.user.id == message.author.id || message.client.config.owners.includes(interaction.user.id)) { + switch (interaction.customID) { + case 'paginate_beginning': { + curPage = 0; + await edit(interaction); + break; + } + case 'paginate_back': { + curPage--; + await edit(interaction); + break; + } + case 'paginate_stop': { + if (deleteOnExit) { + await interaction.deferUpdate(); + await msg.delete(); + } else { + await interaction?.update({ + content: `${text ? text + '\n' : ''}Command closed by user.`, + embeds: [], + components: [] + }); + } + return; + } + case 'paginate_next': { + curPage++; + await edit(interaction); + break; + } + case 'paginate_end': { + curPage = embeds.length - 1; + await edit(interaction); + break; + } + } + } else { + return await interaction?.deferUpdate(); + } + }); + + collector.on('end', async () => { + await msg.edit({ content: text, embeds: [embeds[curPage]], components: [getPaginationRow(true)] }).catch(() => {}); + }); + + async function edit(interaction: MessageComponentInteraction): Promise<void> { + return await interaction?.update({ content: text, embeds: [embeds[curPage]], components: [getPaginationRow()] }); + } + function getPaginationRow(disableAll = false): MessageActionRow { + return new MessageActionRow().addComponents( + new MessageButton({ + style, + customID: 'paginate_beginning', + emoji: this.paginateEmojis.begging, + disabled: disableAll || curPage == 0 + }), + new MessageButton({ + style, + customID: 'paginate_back', + emoji: this.paginateEmojis.back, + disabled: disableAll || curPage == 0 + }), + new MessageButton({ style, customID: 'paginate_stop', emoji: this.paginateEmojis.stop, disabled: disableAll }), + new MessageButton({ + style, + customID: 'paginate_next', + emoji: this.paginateEmojis.forward, + disabled: disableAll || curPage == embeds.length - 1 + }), + new MessageButton({ + style, + customID: 'paginate_end', + emoji: this.paginateEmojis.end, + disabled: disableAll || curPage == embeds.length - 1 + }) + ); + } + } + + public async sendWithDeleteButton(message: BushMessage, options: MessageOptions): Promise<void> { + updateOptions(); + const msg = await message.util.reply(options as MessageOptions & { split?: false }); + const filter = (interaction: ButtonInteraction) => interaction.customID == 'paginate__stop' && interaction.message == msg; + const collector = msg.createMessageComponentInteractionCollector(filter, { time: 300000 }); + collector.on('collect', async (interaction: MessageComponentInteraction) => { + if (interaction.user.id == message.author.id || message.client.config.owners.includes(interaction.user.id)) { + await interaction.deferUpdate(); + await msg.delete(); + return; + } else { + return await interaction?.deferUpdate(); + } + }); + + collector.on('end', async () => { + updateOptions(true, true); + await msg.edit(options); + }); + + function updateOptions(edit?: boolean, disable?: boolean) { + if (edit == undefined) edit = false; + if (disable == undefined) disable = false; + options.components = [ + new MessageActionRow().addComponents( + new MessageButton({ + style: Constants.MessageButtonStyles.PRIMARY, + customID: 'paginate__stop', + emoji: this.paginateEmojis.stop, + disabled: disable + }) + ) + ]; + if (edit) { + options.reply = undefined; + } + } + } + /** + * Surrounds text in a code block with the specified language and puts it in a haste bin if it too long. + * + * * Embed Description Limit = 2048 characters + * * Embed Field Limit = 1024 characters + */ + public async codeblock(code: string, length: number, language: 'ts' | 'js' | 'sh' | 'json' | '' = ''): Promise<string> { + let hasteOut = ''; + const tildes = '```'; + const formattingLength = 2 * tildes.length + language.length + 2 * '\n'.length; + if (code.length + formattingLength > length) hasteOut = 'Too large to display. Hastebin: ' + (await this.haste(code)); + + const code2 = code.length > length ? code.substring(0, length - (hasteOut.length + '\n'.length + formattingLength)) : code; + return ( + tildes + language + '\n' + Util.cleanCodeBlockContent(code2) + '\n' + tildes + (hasteOut.length ? '\n' + hasteOut : '') + ); + } } // I just copy pasted this code from stackoverflow don't yell at me if there is issues for it diff --git a/src/lib/models/Ban.ts b/src/lib/models/Ban.ts index 66c1be9..8ba55ec 100644 --- a/src/lib/models/Ban.ts +++ b/src/lib/models/Ban.ts @@ -1,7 +1,8 @@ +import { Snowflake } from 'discord.js'; import { DataTypes, Sequelize } from 'sequelize'; -import { BaseModel } from './BaseModel'; -import * as Models from './'; import { v4 as uuidv4 } from 'uuid'; +import * as Models from './'; +import { BaseModel } from './BaseModel'; export interface BanModel { id: string; @@ -28,11 +29,11 @@ export class Ban extends BaseModel<BanModel, BanModelCreationAttributes> impleme /** * The user who is banned */ - user: string; + user: Snowflake; /** * The guild they are banned from */ - guild: string; + guild: Snowflake; /** * The reason they are banned (optional) */ diff --git a/src/lib/utils/Console.ts b/src/lib/utils/Console.ts index b74ea07..a3bf326 100644 --- a/src/lib/utils/Console.ts +++ b/src/lib/utils/Console.ts @@ -1,93 +1,115 @@ -// import chalk from 'chalk'; -// import { BushClient } from '../extensions/BushClient'; +/* eslint-disable @typescript-eslint/no-explicit-any */ +/* eslint-disable @typescript-eslint/explicit-module-boundary-types */ +import chalk from 'chalk'; +import { BushClient } from '../extensions/BushClient'; -// export class CustomConsole { -// private client: BushClient; -// public constructor(client: BushClient) { -// this.client = client; -// } +export class Log { + client: BushClient; -// private parseColors(content: any, color: 'blueBright' | 'blackBright' | 'redBright' | 'yellowBright' | 'greenBright'): string | any { -// if (typeof content === 'string') { -// const newContent: Array<string> = content.split(/<<|>>/); -// const tempParsedArray: Array<string> = []; -// newContent.forEach((value, index) => { -// if (index % 2 !== 0) { -// tempParsedArray.push(chalk[color](value)); -// } else { -// tempParsedArray.push(value); -// } -// }); -// return tempParsedArray.join(''); -// } else { -// return content; -// } -// } + public constructor(client: BushClient) { + this.client = client; + } -// private timeStamp(): string { -// const now = new Date(); -// const hours = now.getHours(); -// const minute = now.getMinutes(); -// let hour = hours; -// let amOrPm: 'AM' | 'PM' = 'AM'; -// if (hour > 12) { -// amOrPm = 'PM'; -// hour = hour - 12; -// } + private parseColors( + content: any, + color: 'blueBright' | 'blackBright' | 'redBright' | 'yellowBright' | 'greenBright' + ): string | any { + if (typeof content === 'string') { + const newContent: Array<string> = content.split(/<<|>>/); + const tempParsedArray: Array<string> = []; + newContent.forEach((value, index) => { + if (index % 2 !== 0) { + tempParsedArray.push(chalk[color](value)); + } else { + tempParsedArray.push(value); + } + }); + return tempParsedArray.join(''); + } else { + return content; + } + } -// return `${hour >= 10 ? hour : `0${hour}`}:${minute >= 10 ? minute : `0${minute}`} ${amOrPm}`; -// } + private timeStamp(): string { + const now = new Date(); + const hours = now.getHours(); + const minute = now.getMinutes(); + let hour = hours; + let amOrPm: 'AM' | 'PM' = 'AM'; + if (hour > 12) { + amOrPm = 'PM'; + hour = hour - 12; + } -// /** -// * Logs debug information. -// * @param content - The content to log. -// */ -// public debug(content: any): void { -// console.log(`${chalk.bgGrey(this.timeStamp())} ${chalk.grey('[Debug]')}`, content); -// } + return `${hour >= 10 ? hour : `0${hour}`}:${minute >= 10 ? minute : `0${minute}`} ${amOrPm}`; + } -// /** -// * Logs verbose information. Highlight information by surrounding it in `<<>>`. -// * @param header - The header displayed before the content, displayed in grey. -// * @param content - The content to log, highlights displayed in bright black. -// */ -// public verbose(header: string, content: string): void { -// return console.info(`${chalk.bgGrey(this.timeStamp())} ${chalk.grey(`[${header}]`)} ` + this.parseColors(content, 'blackBright')); -// } + /** + * Logs debug information. Only works in dev is enabled in the config. + * @param content - The content to log. + */ + public debug(...content: any): void { + if (this.client.config.dev) { + console.log(`${chalk.bgGrey(this.timeStamp())} ${chalk.grey('[Debug]')}`, ...content); + } + } -// /** -// * Logs information. Highlight information by surrounding it in `<<>>`. -// * @param header - The header displayed before the content, displayed in cyan. -// * @param content - The content to log, highlights displayed in bright blue. -// */ -// public info(header: string, content: string): void { -// return console.info(`${chalk.bgCyan(this.timeStamp())} ${chalk.cyan(`[${header}]`)} ` + this.parseColors(content, 'blueBright')); -// } + /** + * Logs verbose information. Highlight information by surrounding it in `<<>>`. + * @param header - The header displayed before the content, displayed in grey. + * @param content - The content to log, highlights displayed in bright black. + */ + public verbose(header: string, content: any): void { + if (this.client.config.logging.verbose) { + return console.info( + `${chalk.bgGrey(this.timeStamp())} ${chalk.grey(`[${header}]`)} ` + this.parseColors(content, 'blackBright') + ); + } + } -// /** -// * Logs warnings. Highlight information by surrounding it in `<<>>`. -// * @param header - The header displayed before the content, displayed in yellow. -// * @param content - The content to log, highlights displayed in bright yellow. -// */ -// public warn(header: string, content: string): void { -// return console.warn(`${chalk.bgYellow(this.timeStamp())} ${chalk.yellow(`[${header}]`)} ` + this.parseColors(content, 'yellowBright')); -// } + /** + * Logs information. Highlight information by surrounding it in `<<>>`. + * @param header - The header displayed before the content, displayed in cyan. + * @param content - The content to log, highlights displayed in bright blue. + */ + public info(header: string, content: any): void { + if (this.client.config.logging.info) { + return console.info( + `${chalk.bgCyan(this.timeStamp())} ${chalk.cyan(`[${header}]`)} ` + this.parseColors(content, 'blueBright') + ); + } + } -// /** -// * Logs errors. Highlight information by surrounding it in `<<>>`. -// * @param header - The header displayed before the content, displayed in bright red. -// * @param content - The content to log, highlights displayed in bright red. -// */ -// public error(header: string, content: string): void { -// return console.error(`${chalk.bgRedBright(this.timeStamp())} ${chalk.redBright(`[${header}]`)} ` + this.parseColors(content, 'redBright')); -// } + /** + * Logs warnings. Highlight information by surrounding it in `<<>>`. + * @param header - The header displayed before the content, displayed in yellow. + * @param content - The content to log, highlights displayed in bright yellow. + */ + public warn(header: string, content: any): void { + return console.warn( + `${chalk.bgYellow(this.timeStamp())} ${chalk.yellow(`[${header}]`)} ` + this.parseColors(content, 'yellowBright') + ); + } -// /** -// * Logs successes. Highlight information by surrounding it in `<<>>`. -// * @param header - The header displayed before the content, displayed in green. -// * @param content - The content to log, highlights displayed in bright green. -// */ -// public success(header: string, content: string): void { -// return console.log(`${chalk.bgGreen(this.timeStamp())} ${chalk.greenBright(`[${header}]`)} ` + this.parseColors(content, 'greenBright')); -// } -// } + /** + * Logs errors. Highlight information by surrounding it in `<<>>`. + * @param header - The header displayed before the content, displayed in bright red. + * @param content - The content to log, highlights displayed in bright red. + */ + public error(header: string, content: any): void { + return console.error( + `${chalk.bgRedBright(this.timeStamp())} ${chalk.redBright(`[${header}]`)} ` + this.parseColors(content, 'redBright') + ); + } + + /** + * Logs successes. Highlight information by surrounding it in `<<>>`. + * @param header - The header displayed before the content, displayed in green. + * @param content - The content to log, highlights displayed in bright green. + */ + public success(header: string, content: any): void { + return console.log( + `${chalk.bgGreen(this.timeStamp())} ${chalk.greenBright(`[${header}]`)} ` + this.parseColors(content, 'greenBright') + ); + } +} diff --git a/src/lib/utils/Logger.ts b/src/lib/utils/Logger.ts index 96837b6..0675e3d 100644 --- a/src/lib/utils/Logger.ts +++ b/src/lib/utils/Logger.ts @@ -1,8 +1,8 @@ +import chalk from 'chalk'; import { TextChannel } from 'discord.js'; import { BushClient } from '../extensions/BushClient'; -import chalk from 'chalk'; -export class Logger { +export class BushLogger { private client: BushClient; public constructor(client: BushClient) { this.client = client; |