diff options
| author | IRONM00N <64110067+IRONM00N@users.noreply.github.com> | 2021-07-14 21:22:09 -0400 |
|---|---|---|
| committer | IRONM00N <64110067+IRONM00N@users.noreply.github.com> | 2021-07-14 21:22:09 -0400 |
| commit | 53d2b18f7f73d5696fb7cd86d1c164a790dfdcc3 (patch) | |
| tree | f95f23aad382879b35860d4d3be3642068fac8a2 /src/commands | |
| parent | eaaae08aeee1fa16a4e1ad0b26fceb42885bfcde (diff) | |
| download | tanzanite-53d2b18f7f73d5696fb7cd86d1c164a790dfdcc3.tar.gz tanzanite-53d2b18f7f73d5696fb7cd86d1c164a790dfdcc3.tar.bz2 tanzanite-53d2b18f7f73d5696fb7cd86d1c164a790dfdcc3.zip | |
started moving over some other commands
Diffstat (limited to 'src/commands')
32 files changed, 1711 insertions, 79 deletions
diff --git a/src/commands/config/autoPublishChannel.ts b/src/commands/config/autoPublishChannel.ts new file mode 100644 index 0000000..421e030 --- /dev/null +++ b/src/commands/config/autoPublishChannel.ts @@ -0,0 +1,53 @@ +import { BushCommand, BushMessage } from '@lib'; +import { Channel } from 'discord.js'; + +export default class AutoPublishChannelCommand extends BushCommand { + public constructor() { + super('autopublishchannel', { + aliases: ['autopublishchannel', 'apc', 'publishchannel', 'autopublishchannels', 'publishchannels', 'autopublish'], + category: 'config', + description: { + content: 'A command to add/remove channels from being automatically published.', + usage: 'autopublishchannel <channel>', + examples: ['autopublishchannel #github'] + }, + args: [ + { + id: 'channel', + type: 'channel', + match: 'content', + prompt: { + start: 'What channel would you like to toggle auto publishing in?', + retry: '{error} Choose a valid channel.', + optional: false + } + } + ], + slash: true, + slashOptions: [ + { + name: 'channel', + description: 'What channel would you like me to send welcome messages in?', + type: 'CHANNEL', + required: false + } + ], + channel: 'guild', + clientPermissions: ['SEND_MESSAGES'], + userPermissions: ['MANAGE_GUILD', 'SEND_MESSAGES'] + }); + } + + public async exec(message: BushMessage, { channel }: { channel: Channel }): Promise<unknown> { + const autoPublishChannels = await message.guild.getSetting('autoPublishChannels'); + autoPublishChannels.includes(channel.id) + ? autoPublishChannels.splice(autoPublishChannels.indexOf(channel.id), 1) + : autoPublishChannels.push(channel.id); + await message.guild.setSetting('autoPublishChannels', autoPublishChannels); + return await message.util.reply( + `${this.client.util.emojis.success} Successfully ${ + autoPublishChannels.includes(channel.id) ? 'disabled' : 'enabled' + } auto publishing in <#${channel.id}>.` + ); + } +} diff --git a/src/commands/config/muteRole.ts b/src/commands/config/muteRole.ts index 1bec4a9..9074a1d 100644 --- a/src/commands/config/muteRole.ts +++ b/src/commands/config/muteRole.ts @@ -11,8 +11,6 @@ export default class MuteRoleCommand extends BushCommand { usage: 'muterole <role>', examples: ['muterole 748912426581229690'] }, - clientPermissions: ['SEND_MESSAGES'], - userPermissions: ['SEND_MESSAGES', 'MANAGE_GUILD'], args: [ { id: 'role', @@ -32,7 +30,10 @@ export default class MuteRoleCommand extends BushCommand { type: 'ROLE', required: true } - ] + ], + channel: 'guild', + clientPermissions: ['SEND_MESSAGES'], + userPermissions: ['SEND_MESSAGES', 'MANAGE_GUILD'] }); } diff --git a/src/commands/config/prefix.ts b/src/commands/config/prefix.ts index 4624e99..79956be 100644 --- a/src/commands/config/prefix.ts +++ b/src/commands/config/prefix.ts @@ -10,8 +10,6 @@ export default class PrefixCommand extends BushCommand { usage: 'prefix [prefix]', examples: ['prefix', 'prefix -'] }, - clientPermissions: ['SEND_MESSAGES'], - userPermissions: ['SEND_MESSAGES', 'MANAGE_GUILD'], args: [ { id: 'prefix', @@ -31,7 +29,10 @@ export default class PrefixCommand extends BushCommand { type: 'STRING', required: false } - ] + ], + channel: 'guild', + clientPermissions: ['SEND_MESSAGES'], + userPermissions: ['SEND_MESSAGES', 'MANAGE_GUILD'] }); } diff --git a/src/commands/config/punishmentFooter.ts b/src/commands/config/punishmentFooter.ts index 3a246df..6b2759a 100644 --- a/src/commands/config/punishmentFooter.ts +++ b/src/commands/config/punishmentFooter.ts @@ -11,8 +11,6 @@ export default class PunishmentFooterCommand extends BushCommand { usage: 'punishmentfooter [message]', examples: ['punishmentfooter', 'prefix you can appeal at https://example.com.'] }, - clientPermissions: ['SEND_MESSAGES'], - userPermissions: ['SEND_MESSAGES', 'MANAGE_GUILD'], args: [ { id: 'ending', @@ -33,7 +31,10 @@ export default class PunishmentFooterCommand extends BushCommand { type: 'STRING', required: false } - ] + ], + channel: 'guild', + clientPermissions: ['SEND_MESSAGES'], + userPermissions: ['SEND_MESSAGES', 'MANAGE_GUILD'] }); } diff --git a/src/commands/config/welcomeChannel.ts b/src/commands/config/welcomeChannel.ts index 71d59f8..488a0a9 100644 --- a/src/commands/config/welcomeChannel.ts +++ b/src/commands/config/welcomeChannel.ts @@ -11,8 +11,6 @@ export default class WelcomeChannelCommand extends BushCommand { usage: 'welcomechannel [channel]', examples: ['welcomechannel #welcome'] }, - clientPermissions: ['SEND_MESSAGES'], - userPermissions: ['SEND_MESSAGES', 'MANAGE_GUILD'], args: [ { id: 'channel', @@ -32,7 +30,10 @@ export default class WelcomeChannelCommand extends BushCommand { type: 'CHANNEL', required: false } - ] + ], + channel: 'guild', + clientPermissions: ['SEND_MESSAGES'], + userPermissions: ['SEND_MESSAGES', 'MANAGE_GUILD'] }); } public async exec(message: BushMessage | BushSlashMessage, args: { channel: Channel }): Promise<unknown> { diff --git a/src/commands/dev/_testDuration.ts b/src/commands/dev/_testDuration.ts new file mode 100644 index 0000000..3ad9aff --- /dev/null +++ b/src/commands/dev/_testDuration.ts @@ -0,0 +1,53 @@ +// import { BushCommand, BushSlashMessage } from '@lib'; +// import { stripIndents } from 'common-tags'; +// import { Message } from 'discord.js'; + +// export default class TestDurationCommand extends BushCommand { +// public constructor() { +// super('testduration', { +// aliases: ['testduration'], +// category: 'dev', +// description: { +// content: 'Tests duration parsing.', +// usage: 'testduration [reason]', +// examples: ['testduration'] +// }, +// args: [ +// { +// id: 'reason', +// type: 'contentWithDuration', +// match: 'rest', +// prompt: { +// start: 'Enter text and a duration here.', +// retry: '{error} Error parsing duration and text.', +// optional: true +// } +// } +// ], +// slash: true, +// slashOptions: [ +// { +// name: 'reason', +// description: 'Enter text and a duration here.', +// type: 'STRING', +// required: false +// } +// ], +// hidden: true, +// ownerOnly: true +// }); +// } + +// async exec( +// message: Message | BushSlashMessage, +// { reason }: { reason?: { duration: number; contentWithoutTime: string } } +// ): Promise<unknown> { +// const rawDuration = reason.duration; +// const text = reason.contentWithoutTime; +// const humanizedDuration = this.client.util.humanizeDuration(rawDuration); +// return await message.util.reply(stripIndents` +// **rawDuration:** ${rawDuration} +// **text:** ${text} +// **humanizedDuration:** ${humanizedDuration}`); +// } +// } diff --git a/src/commands/dev/say.ts b/src/commands/dev/say.ts new file mode 100644 index 0000000..9dc2632 --- /dev/null +++ b/src/commands/dev/say.ts @@ -0,0 +1,58 @@ +import { AllowedMentions, BushCommand, BushMessage } from '@lib'; +import { AkairoMessage } from 'discord-akairo'; + +export default class SayCommand extends BushCommand { + public constructor() { + super('say', { + aliases: ['say'], + category: 'dev', + description: { + content: 'A command make the bot say something.', + usage: 'say <message>', + examples: ['say hello'] + }, + args: [ + { + id: 'say', + type: 'string', + match: 'rest', + prompt: { + start: 'What would you like the bot to say?', + retry: '{error} Choose something valid to say.' + } + } + ], + slashOptions: [ + { + name: 'content', + description: 'What would you like the bot to say?', + type: 'STRING' + } + ], + ownerOnly: true, + clientPermissions: ['SEND_MESSAGES'], + slash: true + }); + } + + public async exec(message: BushMessage, { say }: { say: string }): Promise<unknown> { + if (!message.author.isOwner()) + return await message.util.reply(`${this.client.util.emojis.error} Only my developers can run this command.`); + + if (message.deletable) { + await message.delete(); + } + await message.util.send({ content: say, allowedMentions: AllowedMentions.none() }); + } + + public async execSlash(message: AkairoMessage, { content }: { content: string }): Promise<unknown> { + if (!this.client.config.owners.includes(message.author.id)) { + return await message.interaction.reply({ + content: `${this.client.util.emojis.error} Only my developers can run this command.`, + ephemeral: true + }); + } + await message.interaction.reply({ content: 'Attempting to send message.', ephemeral: true }); + return message.channel.send({ content, allowedMentions: AllowedMentions.none() }); + } +} diff --git a/src/commands/dev/setLevel.ts b/src/commands/dev/setLevel.ts index db0cfab..f2ae6c7 100644 --- a/src/commands/dev/setLevel.ts +++ b/src/commands/dev/setLevel.ts @@ -29,21 +29,21 @@ export default class SetLevelCommand extends BushCommand { } } ], - ownerOnly: true, slashOptions: [ { name: 'user', - description: 'The user to change the level of', + description: 'What user would you like to change the level of?', type: 'USER', required: true }, { name: 'level', - description: 'The level to set the user to', + description: 'What level would you like to set the user to?', type: 'INTEGER', required: true } ], + ownerOnly: true, slash: true }); } diff --git a/src/commands/dev/testDuration.ts b/src/commands/dev/testDuration.ts deleted file mode 100644 index 2d636d2..0000000 --- a/src/commands/dev/testDuration.ts +++ /dev/null @@ -1,53 +0,0 @@ -import { BushCommand, BushSlashMessage } from '@lib'; -import { stripIndents } from 'common-tags'; -import { Message } from 'discord.js'; - -export default class TestDurationCommand extends BushCommand { - public constructor() { - super('testduration', { - aliases: ['testduration'], - category: 'dev', - description: { - content: 'Tests duration parsing.', - usage: 'testduration [reason]', - examples: ['testduration'] - }, - args: [ - { - id: 'reason', - type: 'contentWithDuration', - match: 'rest', - prompt: { - start: 'Enter text and a duration here.', - retry: '{error} Error parsing duration and text.', - optional: true - } - } - ], - slash: true, - slashOptions: [ - { - name: 'reason', - description: 'Enter text and a duration here.', - type: 'STRING', - required: false - } - ], - hidden: true, - ownerOnly: true - }); - } - - async exec( - message: Message | BushSlashMessage, - { reason }: { reason?: { duration: number; contentWithoutTime: string } } - ): Promise<unknown> { - const rawDuration = reason.duration; - const text = reason.contentWithoutTime; - const humanizedDuration = this.client.util.humanizeDuration(rawDuration); - return await message.util.reply(stripIndents` - **rawDuration:** ${rawDuration} - **text:** ${text} - **humanizedDuration:** ${humanizedDuration}`); - } -} diff --git a/src/commands/fun/coinflip.ts b/src/commands/fun/coinflip.ts new file mode 100644 index 0000000..68484bb --- /dev/null +++ b/src/commands/fun/coinflip.ts @@ -0,0 +1,26 @@ +import { BushCommand, BushMessage, BushSlashMessage } from '@lib'; + +export default class CoinFlipCommand extends BushCommand { + public constructor() { + super('coinflip', { + aliases: ['coinflip', 'cf'], + category: 'fun', + description: { + content: 'Flip a virtual coin.', + usage: 'coinflip', + examples: ['coinflip'] + }, + clientPermissions: ['SEND_MESSAGES'] + }); + } + + public async exec(message: BushMessage | BushSlashMessage): Promise<void> { + const random = Math.random(); + let result: string; + const fall = message.author.id === '322862723090219008' ? 0.1 : 0.001; + if (random < fall) result = 'The coin fell off the table :('; + else if (random <= 0.5 + fall / 2) result = 'Heads'; + else result = 'Tails'; + await message.util.reply(result); + } +} diff --git a/src/commands/fun/dice.ts b/src/commands/fun/dice.ts new file mode 100644 index 0000000..46b159b --- /dev/null +++ b/src/commands/fun/dice.ts @@ -0,0 +1,23 @@ +import { BushCommand, BushMessage, BushSlashMessage } from '@lib'; + +export default class EightBallCommand extends BushCommand { + public constructor() { + super('dice', { + aliases: ['dice', 'die'], + category: 'fun', + description: { + content: 'Roll virtual dice.', + usage: 'dice', + examples: ['dice'] + }, + clientPermissions: ['SEND_MESSAGES'], + slash: true + }); + } + + public async exec(message: BushMessage | BushSlashMessage): Promise<unknown> { + const responses = ['1', '2', '3', '4', '5', '6']; + const answer = responses[Math.floor(Math.random() * responses.length)]; + return await message.util.reply(`You rolled a **${answer}**.`); + } +} diff --git a/src/commands/fun/eightBall.ts b/src/commands/fun/eightBall.ts new file mode 100644 index 0000000..7b7d39c --- /dev/null +++ b/src/commands/fun/eightBall.ts @@ -0,0 +1,64 @@ +import { BushCommand, BushMessage, BushSlashMessage } from '../../lib'; + +export default class EightBallCommand extends BushCommand { + public constructor() { + super('eightBall', { + aliases: ['8ball', 'eightball'], + category: 'fun', + description: { + content: 'Ask questions for a randomly generated response.', + usage: '8Ball <question>', + examples: ['8Ball does anyone love me?'] + }, + args: [ + { + id: 'question', + type: 'string', + match: 'rest', + prompt: { + start: 'What question would you like answered?', + retry: '{error} Invalid question.' + } + } + ], + slash: true, + slashOptions: [ + { + name: 'question', + description: 'What question would you like answered?', + type: 'STRING', + required: true + } + ], + clientPermissions: ['SEND_MESSAGES'], + userPermissions: ['SEND_MESSAGES'] + }); + } + + public async exec(message: BushMessage | BushSlashMessage): Promise<void> { + const responses = [ + 'It is certain', + 'Without a doubt', + 'You may rely on it', + 'Yes definitely', + 'It is decidedly so', + 'As I see it, yes', + 'Most likely', + 'Yes', + 'Outlook good', + 'Signs point to yes', + 'Reply hazy try again', + 'Better not tell you now', + 'Ask again later', + 'Cannot predict now', + 'Concentrate and ask again', + "Don't count on it", + 'Outlook not so good', + 'My sources say no', + 'Very doubtful', + 'My reply is no' + ]; + const answer = responses[Math.floor(Math.random() * responses.length)]; + await message.util.reply(answer); + } +} diff --git a/src/commands/fun/minesweeper.ts b/src/commands/fun/minesweeper.ts new file mode 100644 index 0000000..2b46e34 --- /dev/null +++ b/src/commands/fun/minesweeper.ts @@ -0,0 +1,123 @@ +import { BushCommand, BushMessage, BushSlashMessage } from '@lib'; +import Minesweeper from 'discord.js-minesweeper'; + +export default class MinesweeperCommand extends BushCommand { + public constructor() { + super('minesweeper', { + aliases: ['minesweeper'], + category: 'fun', + description: { + content: 'minesweeper command.', + usage: 'minesweeper <rows> <columns> <mines> [--spaces] [--revealFirstCell]', + examples: ['minesweeper 10 10 2'] + }, + args: [ + { + id: 'rows', + type: 'integer', + prompt: { + start: 'How many rows would you like?', + retry: '{error} Choose a valid number of rows', + optional: true + }, + default: 9 + }, + { + id: 'columns', + type: 'integer', + prompt: { + start: 'How many columns would you like?', + retry: '{error} Choose a valid number of columns', + optional: true + }, + default: 9 + }, + { + id: 'mines', + type: 'integer', + prompt: { + start: 'How many mines would you like?', + retry: '{error} Choose a valid number of mines', + optional: true + }, + default: 10 + }, + { + id: 'spaces', + match: 'flag', + flag: '--spaces' + }, + { + id: 'reveal_first_cell', + match: 'flag', + flag: '--revealFirstCell' + } + ], + slash: true, + slashOptions: [ + { + name: 'rows', + description: 'How many rows would you like?', + type: 'INTEGER', + required: false + }, + { + name: 'columns', + description: 'How many rows would you like?', + type: 'INTEGER', + required: false + }, + { + name: 'mines', + description: 'How many rows would you like?', + type: 'INTEGER', + required: false + }, + { + name: 'spaces', + description: 'Would you like there to be spaces?', + type: 'BOOLEAN', + required: false + }, + { + name: 'reveal_first_cell', + description: 'Would you like to automatically reveal the first cell?', + type: 'BOOLEAN', + required: false + } + ], + clientPermissions: ['SEND_MESSAGES'], + userPermissions: ['SEND_MESSAGES'] + }); + } + + public async exec( + message: BushMessage | BushSlashMessage, + { + rows, + columns, + mines, + spaces, + reveal_first_cell + }: { + rows: number; + columns: number; + mines: number; + spaces: boolean; + reveal_first_cell: boolean; + } + ): Promise<unknown> { + const minesweeper = new Minesweeper({ + rows: rows ?? 9, + columns: columns ?? 9, + mines: mines ?? 10, + emote: 'boom', + revealFirstCell: reveal_first_cell ?? false, + zeroFirstCell: true, + spaces: spaces ?? false, + returnType: 'emoji' + }); + const matrix = minesweeper.start(); + return await message.util.reply(matrix.toString()); + } +} diff --git a/src/commands/info/avatar.ts b/src/commands/info/avatar.ts new file mode 100644 index 0000000..3d1776f --- /dev/null +++ b/src/commands/info/avatar.ts @@ -0,0 +1,51 @@ +import { Constants } from 'discord-akairo'; +import { MessageEmbed, User } from 'discord.js'; +import { BushCommand, BushMessage, BushSlashMessage } from '../../lib'; + +export default class AvatarCommand extends BushCommand { + constructor() { + super('avatar', { + aliases: ['avatar', 'av'], + category: 'info', + description: { + content: "A command to get a user's avatar", + usage: 'avatar [user]', + examples: 'avatar' + }, + args: [ + { + id: 'user', + type: Constants.ArgumentTypes.USER, + match: Constants.ArgumentMatches.PHRASE, + prompt: { + start: 'Who would you like to see the avatar of?', + retry: '{error} Choose a valid user.', + optional: true + } + } + ], + clientPermissions: ['SEND_MESSAGES', 'EMBED_LINKS'], + slash: true, + slashOptions: [ + { + name: 'user', + description: 'The user you would like to find the avatar of.', + type: 'USER', + required: false + } + ] + }); + } + + async exec(message: BushMessage | BushSlashMessage, { user }: { user: User }): Promise<void> { + user = user ?? message.author; + + const embed = new MessageEmbed() + .setTimestamp() + .setColor(this.client.util.colors.default) + .setTitle(user.tag) + .setImage(user.avatarURL({ size: 2048, format: 'png', dynamic: true })); + + await message.util.reply({ embeds: [embed] }); + } +} diff --git a/src/commands/info/botInfo.ts b/src/commands/info/botInfo.ts index d5941b2..986bd01 100644 --- a/src/commands/info/botInfo.ts +++ b/src/commands/info/botInfo.ts @@ -4,7 +4,7 @@ import { MessageEmbed, version as discordJSVersion } from 'discord.js'; export default class BotInfoCommand extends BushCommand { public constructor() { super('botinfo', { - aliases: ['botinfo'], + aliases: ['botinfo', 'stats'], category: 'info', description: { content: 'Shows information about the bot', diff --git a/src/commands/info/color.ts b/src/commands/info/color.ts new file mode 100644 index 0000000..4db20e7 --- /dev/null +++ b/src/commands/info/color.ts @@ -0,0 +1,42 @@ +import { BushCommand, BushMessage, BushSlashMessage } from '@lib'; +import { Constants } from 'discord-akairo'; +import { ColorResolvable, MessageEmbed } from 'discord.js'; + +export default class ColorCommand extends BushCommand { + public constructor() { + super('color', { + aliases: ['color'], + category: 'info', + description: { + content: 'See what color a hex code is.', + usage: 'color <color>', + examples: ['color #0000FF'] + }, + args: [ + { + id: 'color', + type: /^#?(?<code>[0-9A-F]{6})$/i, + match: Constants.ArgumentMatches.PHRASE, + prompt: { + start: 'What color value would you like to see the color of', + retry: '{error} Choose a valid hex color code.' + } + } + ], + channel: 'guild', + clientPermissions: ['EMBED_LINKS', 'SEND_MESSAGES'] + }); + } + + public async exec( + message: BushMessage | BushSlashMessage, + { color: { match } }: { color: { match: RegExpMatchArray; matches: RegExpMatchArray[] } } + ): Promise<unknown> { + const embed = new MessageEmbed() + .addField('Hex', match.groups.code, false) + .addField('RGB', this.client.util.hexToRgb(match.groups.code), false) + .setColor(match.groups.code as ColorResolvable); + + return await message.util.reply({ embeds: [embed] }); + } +} diff --git a/src/commands/info/guildInfo.ts b/src/commands/info/guildInfo.ts new file mode 100644 index 0000000..a3e7405 --- /dev/null +++ b/src/commands/info/guildInfo.ts @@ -0,0 +1,171 @@ +import { Argument, Constants } from 'discord-akairo'; +import { Guild, GuildPreview, MessageEmbed, Snowflake, Vanity } from 'discord.js'; +import { BushCommand, BushMessage, BushSlashMessage } from '../../lib'; + +// TODO: Implement regions and security +export default class GuildInfoCommand extends BushCommand { + public constructor() { + super('guildInfo', { + aliases: ['guildinfo', 'serverinfo', 'guild', 'server', 'g'], + category: 'info', + description: { + content: 'Get info about a server.', + usage: 'guildinfo [guild]', + examples: ['guildinfo 516977525906341928'] + }, + args: [ + { + id: 'guild', + type: Argument.union(Constants.ArgumentTypes.GUILD, Constants.ArgumentTypes.BIGINT), + match: Constants.ArgumentMatches.PHRASE, + prompt: { + start: 'What server would you like to find information about?', + retry: '{error} Choose a valid server to find information about.', + optional: true + } + } + ], + slash: true, + slashOptions: [ + { + name: 'guild', + description: 'The id of the guild you would like to find information about.', + type: 'STRING', + required: false + } + ], + clientPermissions: ['EMBED_LINKS', 'SEND_MESSAGES'], + userPermissions: ['SEND_MESSAGES'] + }); + } + + public async exec(message: BushMessage | BushSlashMessage, args: { guild: Guild | bigint | GuildPreview }): Promise<unknown> { + if (!args?.guild && !message.guild) { + return await message.util.reply( + `${this.client.util.emojis.error} You must either provide an server to provide info about or run this command in a server.` + ); + } + let isPreview = false; + if (['bigint', 'number', 'string'].includes(typeof args?.guild)) { + const preview = await this.client.fetchGuildPreview(`${args.guild}` as Snowflake).catch(() => {}); + if (preview) { + args.guild = preview; + isPreview = true; + } else { + return await message.util.reply(`${this.client.util.emojis.error} That guild is not discoverable or does not exist.`); + } + } + const guild: Guild | GuildPreview = (args?.guild as Guild | GuildPreview) || (message.guild as Guild); + const emojis: string[] = []; + const guildAbout: string[] = []; + // const guildSecurity = []; + if (['516977525906341928', '784597260465995796', '717176538717749358', '767448775450820639'].includes(guild.id)) + emojis.push(this.client.consts.mappings.otherEmojis.BUSH_VERIFIED); + + if (!isPreview && guild instanceof Guild) { + if (guild.premiumTier) emojis.push(this.client.consts.mappings.otherEmojis['BOOST_' + guild.premiumTier]); + await guild.fetch(); + const channelTypes = [ + `${this.client.consts.mappings.otherEmojis.TEXT} ${guild.channels.cache + .filter((channel) => channel.type === 'GUILD_TEXT') + .size.toLocaleString()}`, + `${this.client.consts.mappings.otherEmojis.NEWS} ${guild.channels.cache + .filter((channel) => channel.type === 'GUILD_NEWS') + .size.toLocaleString()}`, + `${this.client.consts.mappings.otherEmojis.VOICE} ${guild.channe |
