aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.eslintrc.cjs2
-rw-r--r--.prettierrc.json2
-rw-r--r--.vscode/launch.json2
-rw-r--r--.vscode/settings.json1
-rw-r--r--.vscode/typescript.code-snippets4
-rw-r--r--README.md31
-rw-r--r--ecosystem.config.cjs6
-rw-r--r--lib/arguments/abbreviatedNumber.ts4
-rw-r--r--lib/arguments/contentWithDuration.ts4
-rw-r--r--lib/arguments/discordEmoji.ts4
-rw-r--r--lib/arguments/duration.ts4
-rw-r--r--lib/arguments/durationSeconds.ts4
-rw-r--r--lib/arguments/globalUser.ts4
-rw-r--r--lib/arguments/messageLink.ts4
-rw-r--r--lib/arguments/permission.ts4
-rw-r--r--lib/arguments/roleWithDuration.ts4
-rw-r--r--lib/arguments/snowflake.ts4
-rw-r--r--lib/arguments/tinyColor.ts4
-rw-r--r--lib/automod/AutomodShared.ts6
-rw-r--r--lib/automod/MessageAutomod.ts10
-rw-r--r--lib/common/BotCache.ts (renamed from lib/common/BushCache.ts)2
-rw-r--r--lib/common/HighlightManager.ts2
-rw-r--r--lib/extensions/discord-akairo/BotArgumentTypeCaster.ts3
-rw-r--r--lib/extensions/discord-akairo/BotCommand.ts (renamed from lib/extensions/discord-akairo/BushCommand.ts)68
-rw-r--r--lib/extensions/discord-akairo/BotCommandHandler.ts37
-rw-r--r--lib/extensions/discord-akairo/BotInhibitor.ts (renamed from lib/extensions/discord-akairo/BushInhibitor.ts)9
-rw-r--r--lib/extensions/discord-akairo/BotInhibitorHandler.ts3
-rw-r--r--lib/extensions/discord-akairo/BotListener.ts3
-rw-r--r--lib/extensions/discord-akairo/BotListenerHandler.ts3
-rw-r--r--lib/extensions/discord-akairo/BotTask.ts3
-rw-r--r--lib/extensions/discord-akairo/BotTaskHandler.ts3
-rw-r--r--lib/extensions/discord-akairo/BushArgumentTypeCaster.ts3
-rw-r--r--lib/extensions/discord-akairo/BushCommandHandler.ts37
-rw-r--r--lib/extensions/discord-akairo/BushInhibitorHandler.ts3
-rw-r--r--lib/extensions/discord-akairo/BushListener.ts3
-rw-r--r--lib/extensions/discord-akairo/BushListenerHandler.ts3
-rw-r--r--lib/extensions/discord-akairo/BushTask.ts3
-rw-r--r--lib/extensions/discord-akairo/BushTaskHandler.ts3
-rw-r--r--lib/extensions/discord-akairo/TanzaniteClient.ts (renamed from lib/extensions/discord-akairo/BushClient.ts)116
-rw-r--r--lib/extensions/discord.js/BotClientEvents.ts (renamed from lib/extensions/discord.js/BushClientEvents.ts)93
-rw-r--r--lib/extensions/discord.js/ExtendedGuild.ts46
-rw-r--r--lib/extensions/discord.js/ExtendedGuildMember.ts148
-rw-r--r--lib/extensions/discord.js/ExtendedUser.ts4
-rw-r--r--lib/index.ts47
-rw-r--r--lib/models/instance/Guild.ts4
-rw-r--r--lib/types/BushInspectOptions.ts123
-rw-r--r--lib/types/InspectOptions.ts127
-rw-r--r--lib/types/misc.ts14
-rw-r--r--lib/utils/Arg.ts36
-rw-r--r--lib/utils/BotClientUtils.ts (renamed from lib/utils/BushClientUtils.ts)24
-rw-r--r--lib/utils/Constants.ts (renamed from lib/utils/BushConstants.ts)0
-rw-r--r--lib/utils/ErrorHandler.ts8
-rw-r--r--lib/utils/FormatResponse.ts4
-rw-r--r--lib/utils/Logger.ts (renamed from lib/utils/BushLogger.ts)11
-rw-r--r--lib/utils/Minecraft.ts4
-rw-r--r--lib/utils/Minecraft_Test.ts10
-rw-r--r--lib/utils/Utils.ts (renamed from lib/utils/BushUtils.ts)16
-rw-r--r--package.json6
-rw-r--r--src/bot.ts8
-rw-r--r--src/commands/_fake-command/ironmoon.ts4
-rw-r--r--src/commands/admin/channelPermissions.ts4
-rw-r--r--src/commands/admin/roleAll.ts4
-rw-r--r--src/commands/config/blacklist.ts4
-rw-r--r--src/commands/config/config.ts4
-rw-r--r--src/commands/config/disable.ts6
-rw-r--r--src/commands/config/features.ts4
-rw-r--r--src/commands/config/log.ts4
-rw-r--r--src/commands/dev/__template.ts4
-rw-r--r--src/commands/dev/dm.ts4
-rw-r--r--src/commands/dev/eval.ts10
-rw-r--r--src/commands/dev/javascript.ts4
-rw-r--r--src/commands/dev/reload.ts4
-rw-r--r--src/commands/dev/say.ts4
-rw-r--r--src/commands/dev/servers.ts4
-rw-r--r--src/commands/dev/sh.ts4
-rw-r--r--src/commands/dev/superUser.ts4
-rw-r--r--src/commands/dev/syncAutomod.ts4
-rw-r--r--src/commands/dev/test.ts4
-rw-r--r--src/commands/fun/coinFlip.ts4
-rw-r--r--src/commands/fun/dice.ts4
-rw-r--r--src/commands/fun/eightBall.ts4
-rw-r--r--src/commands/fun/minesweeper.ts4
-rw-r--r--src/commands/info/avatar.ts4
-rw-r--r--src/commands/info/botInfo.ts4
-rw-r--r--src/commands/info/color.ts4
-rw-r--r--src/commands/info/guildInfo.ts16
-rw-r--r--src/commands/info/help.ts16
-rw-r--r--src/commands/info/icon.ts4
-rw-r--r--src/commands/info/inviteInfo.ts4
-rw-r--r--src/commands/info/links.ts4
-rw-r--r--src/commands/info/ping.ts4
-rw-r--r--src/commands/info/pronouns.ts4
-rw-r--r--src/commands/info/snowflake.ts8
-rw-r--r--src/commands/info/userInfo.ts4
-rw-r--r--src/commands/leveling/leaderboard.ts4
-rw-r--r--src/commands/leveling/level.ts4
-rw-r--r--src/commands/leveling/levelRoles.ts4
-rw-r--r--src/commands/leveling/setLevel.ts4
-rw-r--r--src/commands/leveling/setXp.ts4
-rw-r--r--src/commands/moderation/_activePunishments.ts4
-rw-r--r--src/commands/moderation/ban.ts6
-rw-r--r--src/commands/moderation/block.ts6
-rw-r--r--src/commands/moderation/evidence.ts7
-rw-r--r--src/commands/moderation/hideCase.ts7
-rw-r--r--src/commands/moderation/kick.ts6
-rw-r--r--src/commands/moderation/lockdown.ts4
-rw-r--r--src/commands/moderation/massBan.ts13
-rw-r--r--src/commands/moderation/massEvidence.ts7
-rw-r--r--src/commands/moderation/modlog.ts4
-rw-r--r--src/commands/moderation/mute.ts6
-rw-r--r--src/commands/moderation/myLogs.ts4
-rw-r--r--src/commands/moderation/purge.ts7
-rw-r--r--src/commands/moderation/removeReactionEmoji.ts4
-rw-r--r--src/commands/moderation/role.ts6
-rw-r--r--src/commands/moderation/slowmode.ts4
-rw-r--r--src/commands/moderation/timeout.ts6
-rw-r--r--src/commands/moderation/unban.ts6
-rw-r--r--src/commands/moderation/unblock.ts6
-rw-r--r--src/commands/moderation/unlockdown.ts4
-rw-r--r--src/commands/moderation/unmute.ts6
-rw-r--r--src/commands/moderation/untimeout.ts6
-rw-r--r--src/commands/moderation/warn.ts6
-rw-r--r--src/commands/moulberry-bush/capePermissions.ts4
-rw-r--r--src/commands/moulberry-bush/capes.ts4
-rw-r--r--src/commands/moulberry-bush/giveawayPing.ts4
-rw-r--r--src/commands/moulberry-bush/moulHammer.ts12
-rw-r--r--src/commands/moulberry-bush/neuRepo.ts4
-rw-r--r--src/commands/moulberry-bush/report.ts4
-rw-r--r--src/commands/moulberry-bush/rule.ts4
-rw-r--r--src/commands/moulberry-bush/serverStatus.ts4
-rw-r--r--src/commands/moulberry-bush/solved.ts4
-rw-r--r--src/commands/tickets/ticket-!.ts4
-rw-r--r--src/commands/utilities/_poll.ts4
-rw-r--r--src/commands/utilities/activity.ts8
-rw-r--r--src/commands/utilities/calculator.ts4
-rw-r--r--src/commands/utilities/decode.ts4
-rw-r--r--src/commands/utilities/hash.ts4
-rw-r--r--src/commands/utilities/highlight-!.ts4
-rw-r--r--src/commands/utilities/highlight-add.ts4
-rw-r--r--src/commands/utilities/highlight-block.ts4
-rw-r--r--src/commands/utilities/highlight-clear.ts4
-rw-r--r--src/commands/utilities/highlight-matches.ts4
-rw-r--r--src/commands/utilities/highlight-remove.ts4
-rw-r--r--src/commands/utilities/highlight-show.ts4
-rw-r--r--src/commands/utilities/highlight-unblock.ts4
-rw-r--r--src/commands/utilities/price.ts4
-rw-r--r--src/commands/utilities/remind.ts4
-rw-r--r--src/commands/utilities/reminders.ts4
-rw-r--r--src/commands/utilities/steal.ts4
-rw-r--r--src/commands/utilities/suicide.ts4
-rw-r--r--src/commands/utilities/uuid.ts4
-rw-r--r--src/commands/utilities/viewRaw.ts4
-rw-r--r--src/commands/utilities/whoHasRole.ts4
-rw-r--r--src/commands/utilities/wolframAlpha.ts4
-rw-r--r--src/inhibitors/blacklist/channelGlobalBlacklist.ts7
-rw-r--r--src/inhibitors/blacklist/channelGuildBlacklist.ts7
-rw-r--r--src/inhibitors/blacklist/guildBlacklist.ts5
-rw-r--r--src/inhibitors/blacklist/userGlobalBlacklist.ts5
-rw-r--r--src/inhibitors/blacklist/userGuildBlacklist.ts5
-rw-r--r--src/inhibitors/checks/fatal.ts5
-rw-r--r--src/inhibitors/checks/guildUnavailable.ts5
-rw-r--r--src/inhibitors/command/dm.ts7
-rw-r--r--src/inhibitors/command/globalDisabledCommand.ts7
-rw-r--r--src/inhibitors/command/guild.ts7
-rw-r--r--src/inhibitors/command/guildDisabledCommand.ts7
-rw-r--r--src/inhibitors/command/nsfw.ts7
-rw-r--r--src/inhibitors/command/owner.ts7
-rw-r--r--src/inhibitors/command/restrictedChannel.ts7
-rw-r--r--src/inhibitors/command/restrictedGuild.ts7
-rw-r--r--src/inhibitors/command/superUser.ts7
-rw-r--r--src/listeners/automod/automodCreate.ts9
-rw-r--r--src/listeners/automod/automodUpdate.ts9
-rw-r--r--src/listeners/automod/memberAutomod.ts6
-rw-r--r--src/listeners/automod/presenceAutomod.ts6
-rw-r--r--src/listeners/bush/appealListener.ts9
-rw-r--r--src/listeners/bush/joinAutoBan.ts11
-rw-r--r--src/listeners/bush/supportThread.ts9
-rw-r--r--src/listeners/bush/userUpdateAutoBan.ts11
-rw-r--r--src/listeners/client/akairoDebug.ts9
-rw-r--r--src/listeners/client/dcjsDebug.ts15
-rw-r--r--src/listeners/client/dcjsError.ts15
-rw-r--r--src/listeners/client/dcjsWarn.ts15
-rw-r--r--src/listeners/client/djsDebug.ts14
-rw-r--r--src/listeners/client/djsError.ts14
-rw-r--r--src/listeners/client/djsWarn.ts14
-rw-r--r--src/listeners/client/ready.ts6
-rw-r--r--src/listeners/commands/commandBlocked.ts15
-rw-r--r--src/listeners/commands/commandCooldown.ts9
-rw-r--r--src/listeners/commands/commandError.ts9
-rw-r--r--src/listeners/commands/commandLocked.ts9
-rw-r--r--src/listeners/commands/commandMissingPermissions.ts13
-rw-r--r--src/listeners/commands/commandStarted.ts9
-rw-r--r--src/listeners/commands/messageBlocked.ts9
-rw-r--r--src/listeners/commands/slashBlocked.ts9
-rw-r--r--src/listeners/commands/slashCommandError.ts9
-rw-r--r--src/listeners/commands/slashMissingPermissions.ts9
-rw-r--r--src/listeners/commands/slashNotFound.ts9
-rw-r--r--src/listeners/commands/slashStarted.ts9
-rw-r--r--src/listeners/contextCommands/contextCommandBlocked.ts7
-rw-r--r--src/listeners/contextCommands/contextCommandError.ts7
-rw-r--r--src/listeners/contextCommands/contextCommandNotFound.ts7
-rw-r--r--src/listeners/contextCommands/contextCommandStarted.ts7
-rw-r--r--src/listeners/guild-custom/lockdown.ts (renamed from src/listeners/guild-custom/bushLockdown.ts)11
-rw-r--r--src/listeners/guild-custom/unlockdown.ts (renamed from src/listeners/guild-custom/bushUnlockdown.ts)11
-rw-r--r--src/listeners/guild/guildCreate.ts9
-rw-r--r--src/listeners/guild/guildDelete.ts9
-rw-r--r--src/listeners/guild/guildMemberAdd.ts9
-rw-r--r--src/listeners/guild/guildMemberRemove.ts9
-rw-r--r--src/listeners/guild/joinRoles.ts9
-rw-r--r--src/listeners/guild/syncUnbanPunishmentModel.ts9
-rw-r--r--src/listeners/interaction/interactionCreate.ts9
-rw-r--r--src/listeners/member-custom/customBan.ts (renamed from src/listeners/member-custom/bushBan.ts)11
-rw-r--r--src/listeners/member-custom/customBlock.ts (renamed from src/listeners/member-custom/bushBlock.ts)13
-rw-r--r--src/listeners/member-custom/customKick.ts (renamed from src/listeners/member-custom/bushKick.ts)11
-rw-r--r--src/listeners/member-custom/customMute.ts (renamed from src/listeners/member-custom/bushMute.ts)11
-rw-r--r--src/listeners/member-custom/customPurge.ts (renamed from src/listeners/member-custom/bushPurge.ts)11
-rw-r--r--src/listeners/member-custom/customRemoveTimeout.ts (renamed from src/listeners/member-custom/bushRemoveTimeout.ts)11
-rw-r--r--src/listeners/member-custom/customTimeout.ts (renamed from src/listeners/member-custom/bushTimeout.ts)11
-rw-r--r--src/listeners/member-custom/customUnban.ts (renamed from src/listeners/member-custom/bushUnban.ts)11
-rw-r--r--src/listeners/member-custom/customUnblock.ts (renamed from src/listeners/member-custom/bushUnblock.ts)11
-rw-r--r--src/listeners/member-custom/customUnmute.ts (renamed from src/listeners/member-custom/bushUnmute.ts)11
-rw-r--r--src/listeners/member-custom/customWarnMember.ts (renamed from src/listeners/member-custom/bushWarn.ts)11
-rw-r--r--src/listeners/member-custom/levelUpdate.ts (renamed from src/listeners/member-custom/bushLevelUpdate.ts)15
-rw-r--r--src/listeners/member-custom/massBan.ts11
-rw-r--r--src/listeners/member-custom/massEvidence.ts11
-rw-r--r--src/listeners/member-custom/punishRole.ts (renamed from src/listeners/member-custom/bushPunishRole.ts)11
-rw-r--r--src/listeners/member-custom/punishRoleRemove.ts (renamed from src/listeners/member-custom/bushPunishRoleRemove.ts)11
-rw-r--r--src/listeners/member-custom/updateModlog.ts (renamed from src/listeners/member-custom/bushUpdateModlog.ts)11
-rw-r--r--src/listeners/member-custom/updateSettings.ts (renamed from src/listeners/member-custom/bushUpdateSettings.ts)11
-rw-r--r--src/listeners/message/autoPublisher.ts9
-rw-r--r--src/listeners/message/blacklistedFile.ts7
-rw-r--r--src/listeners/message/boosterMessage.ts9
-rw-r--r--src/listeners/message/directMessage.ts9
-rw-r--r--src/listeners/message/highlight.ts9
-rw-r--r--src/listeners/message/level.ts11
-rw-r--r--src/listeners/message/quoteCreate.ts9
-rw-r--r--src/listeners/message/quoteEdit.ts7
-rw-r--r--src/listeners/message/verbose.ts9
-rw-r--r--src/listeners/other/consoleListener.ts116
-rw-r--r--src/listeners/other/exit.ts4
-rw-r--r--src/listeners/other/promiseRejection.ts4
-rw-r--r--src/listeners/other/uncaughtException.ts4
-rw-r--r--src/listeners/other/warning.ts4
-rw-r--r--src/listeners/rest/rateLimit.ts7
-rw-r--r--src/listeners/track-manual-punishments/modlogSyncBan.ts9
-rw-r--r--src/listeners/track-manual-punishments/modlogSyncKick.ts9
-rw-r--r--src/listeners/track-manual-punishments/modlogSyncTimeout.ts9
-rw-r--r--src/listeners/track-manual-punishments/modlogSyncUnban.ts9
-rw-r--r--src/listeners/ws/INTERACTION_CREATE.ts7
-rw-r--r--src/tasks/cache/cpuUsage.ts4
-rw-r--r--src/tasks/cache/updateCache.ts4
-rw-r--r--src/tasks/cache/updateHighlightCache.ts5
-rw-r--r--src/tasks/cache/updateNeuItemCache.ts4
-rw-r--r--src/tasks/cache/updatePriceItemCache.ts4
-rw-r--r--src/tasks/feature/handleReminders.ts4
-rw-r--r--src/tasks/feature/removeExpiredPunishements.ts12
-rw-r--r--src/tasks/feature/updateStats.ts4
-rw-r--r--src/tasks/stats/guildCount.ts5
-rw-r--r--src/tasks/stats/memberCount.ts4
-rw-r--r--yarn.lock118
260 files changed, 1350 insertions, 1407 deletions
diff --git a/.eslintrc.cjs b/.eslintrc.cjs
index b8ef98d..3666e7a 100644
--- a/.eslintrc.cjs
+++ b/.eslintrc.cjs
@@ -161,7 +161,7 @@ module.exports = {
'@typescript-eslint/explicit-module-boundary-types': 'off',
'prefer-template': 'warn',
'@typescript-eslint/no-this-alias': ['error', { allowDestructuring: true, allowedNames: ['that'] }],
- '@typescript-eslint/no-unused-vars': ['warn', { argsIgnorePattern: '^_' }],
+ '@typescript-eslint/no-unused-vars': 'off' /* ['warn', { argsIgnorePattern: '^_' }] */,
'no-implied-eval': 'off',
'@typescript-eslint/no-implied-eval': ['error'],
'deprecation/deprecation': 'warn',
diff --git a/.prettierrc.json b/.prettierrc.json
index d704546..5c947a7 100644
--- a/.prettierrc.json
+++ b/.prettierrc.json
@@ -7,7 +7,7 @@
"endOfLine": "lf",
"overrides": [
{
- "files": ["*BushClientEvents.ts"],
+ "files": ["*CustomClientEvents.ts"],
"options": {
"printWidth": 80
}
diff --git a/.vscode/launch.json b/.vscode/launch.json
index d6eb609..cce0ba4 100644
--- a/.vscode/launch.json
+++ b/.vscode/launch.json
@@ -3,7 +3,7 @@
{
"type": "node-terminal",
"command": "yarn start",
- "name": "BushBot",
+ "name": "Tanzanite",
"request": "launch",
"cwd": "${workspaceFolder}",
"program": "${workspaceFolder}/dist/src/bot.js",
diff --git a/.vscode/settings.json b/.vscode/settings.json
index 651c2c2..600c85e 100644
--- a/.vscode/settings.json
+++ b/.vscode/settings.json
@@ -20,6 +20,7 @@
"source.organizeImports": true,
"source.format": true
},
+ "editor.formatOnSave": true,
"diffEditor.wordWrap": "on",
"editor.insertSpaces": false,
"editor.wordWrap": "on",
diff --git a/.vscode/typescript.code-snippets b/.vscode/typescript.code-snippets
index 77b2f7f..4e2bec4 100644
--- a/.vscode/typescript.code-snippets
+++ b/.vscode/typescript.code-snippets
@@ -10,8 +10,8 @@
"description": "A bot command template",
"body": [
"import {",
- "\tBushCommand,",
"\tclientSendAndPermCheck,",
+ "\tCustomCommand,",
"\temojis,",
"\ttype ArgType,",
"\ttype CommandMessage,",
@@ -20,7 +20,7 @@
"} from '#lib';",
"",
"import { ApplicationCommandOptionType } from 'discord.js';",
- "export default class ${1:CommandName} extends BushCommand {",
+ "export default class ${1:CommandName} extends CustomCommand {",
"\tpublic constructor() {",
"\t\tsuper('${2:commandId}', {",
"\t\t\taliases: ['${3:alias}'],",
diff --git a/README.md b/README.md
index 714965d..3cc7955 100644
--- a/README.md
+++ b/README.md
@@ -1,41 +1,38 @@
<!-- markdownlint-disable-file MD010 MD033 MD041 -->
<a href="https://discord.com/api/oauth2/authorize?client_id=767478359348740148&permissions=5368709119918&scope=bot%20applications.commands">
- <h1 align="center">BushBot</h1>
+ <h1 align="center">Tanzanite</h1>
</a>
<div align="center">
<!-- lint -->
- <a href="https://github.com/NotEnoughUpdates/bush-bot/actions">
- <img src="https://img.shields.io/github/workflow/status/NotEnoughUpdates/bush-bot/lint/master?style=normal" target="_blank">
+ <a href="https://github.com/TanzaniteBot/tanzanite/actions">
+ <img src="https://img.shields.io/github/workflow/status/TanzaniteBot/tanzanite/lint/master?style=normal" target="_blank">
</a>
<!-- code factor -->
- <a href="https://www.codefactor.io/repository/github/notenoughupdates/bush-bot">
- <img src="https://www.codefactor.io/repository/github/notenoughupdates/bush-bot/badge" alt="CodeFactor" />
+ <a href="https://www.codefactor.io/repository/github/TanzaniteBot/tanzanite">
+ <img src="https://www.codefactor.io/repository/github/TanzaniteBot/tanzanite/badge" alt="CodeFactor" />
</a>
<!-- language -->
- <a href="https://github.com/NotEnoughUpdates/bush-bot/">
- <img src="https://img.shields.io/github/languages/top/NotEnoughUpdates/bush-bot?&color=informational&logo=GitHub">
+ <a href="https://github.com/TanzaniteBot/tanzanite/">
+ <img src="https://img.shields.io/github/languages/top/TanzaniteBot/tanzanite?&color=informational&logo=GitHub">
</a>
<!-- lines -->
- <a href="https://github.com/NotEnoughUpdates/bush-bot/graphs/code-frequency" target="_blank">
- <img src="https://img.shields.io/tokei/lines/github/NotEnoughUpdates/bush-bot?label=lines&color=informational&logo=GitHub" alt="lines">
+ <a href="https://github.com/TanzaniteBot/tanzanite/graphs/code-frequency" target="_blank">
+ <img src="https://img.shields.io/tokei/lines/github/TanzaniteBot/tanzanite?label=lines&color=informational&logo=GitHub" alt="lines">
</a>
<!-- license -->
- <a href="https://github.com/NotEnoughUpdates/bush-bot/blob/master/LICENSE" target="_blank">
+ <a href="https://github.com/TanzaniteBot/tanzanite/blob/master/LICENSE" target="_blank">
<img src="https://img.shields.io/badge/license-CC--BY--NC--SA--4.0-informational?logo=GitHub" alt="license">
</a>
<!-- contributors -->
- <a href="https://github.com/NotEnoughUpdates/bush-bot/graphs/contributors" target="_blank">
- <img src="https://img.shields.io/github/contributors/NotEnoughUpdates/bush-bot?color=informational&logo=GitHub" alt="contributors">
+ <a href="https://github.com/TanzaniteBot/tanzanite/graphs/contributors" target="_blank">
+ <img src="https://img.shields.io/github/contributors/TanzaniteBot/tanzanite?color=informational&logo=GitHub" alt="contributors">
</a>
<!-- TODO: guild count and invite -->
- <!-- <a href="https://discord.gg/moulberry" target="_blank">
- <img src="https://img.shields.io/discord/516977525906341928?label=discord&color=informational&logo=Discord&logoColor=FFFFFF" alt="discord">
- </a> -->
</div>
-BushBot is an open-sourced multi-purpose moderation, and leveling bot.
+Tanzanite is a multipurpose moderation and utility bot. It contains an extensive auto-moderation system, leveling features, message highlighting, and information commands.
<h2 align="center">Set Up</h2>
@@ -61,4 +58,4 @@ If you would like to contribute to the bot feel free to open a pull request and
<h2 align="center">Credits</h2>
- <a href="https://discord.js.org/">discord.js</a> - The main library used to interface with discord
-- <a href="https://github.com/NotEnoughUpdates/discord-akairo">discord-akairo</a> - The framework the bot is built on
+- <a href="https://github.com/TanzaniteBot/discord-akairo">discord-akairo</a> - The framework the bot is built on
diff --git a/ecosystem.config.cjs b/ecosystem.config.cjs
index 3bd532f..32971cf 100644
--- a/ecosystem.config.cjs
+++ b/ecosystem.config.cjs
@@ -1,7 +1,7 @@
module.exports = {
apps: [
...['', '-beta'].map((e) => ({
- name: `bush-bot${e}`,
+ name: `tanzanite${e}`,
script: 'yarn',
args: 'start:raw',
out_file: `../bushbot${e}.log`,
@@ -22,9 +22,9 @@ module.exports = {
'user': 'pi',
'host': '192.168.1.210',
'ref': `origin/${e === 'production' ? 'master' : 'beta'}`,
- 'repo': 'https://github.com/NotEnoughUpdates/bush-bot.git',
+ 'repo': 'https://github.com/TanzaniteBot/tanzanite.git',
'path': `/code/bush-bot${e === 'beta' ? '-beta' : ''}`,
- 'post-deploy': `yarn install && yarn build && pm2 start ecosystem.config.cjs --only bush-bot${
+ 'post-deploy': `yarn install && yarn build && pm2 start ecosystem.config.cjs --only tanzanite${
e === 'beta' ? '-beta' : ''
}`
}
diff --git a/lib/arguments/abbreviatedNumber.ts b/lib/arguments/abbreviatedNumber.ts
index a7d8ce5..5fe39b5 100644
--- a/lib/arguments/abbreviatedNumber.ts
+++ b/lib/arguments/abbreviatedNumber.ts
@@ -1,9 +1,9 @@
-import type { BushArgumentTypeCaster } from '#lib';
+import type { BotArgumentTypeCaster } from '#lib';
import assert from 'assert/strict';
import numeral from 'numeral';
assert(typeof numeral === 'function');
-export const abbreviatedNumber: BushArgumentTypeCaster<number | null> = (_, phrase) => {
+export const abbreviatedNumber: BotArgumentTypeCaster<number | null> = (_, phrase) => {
if (!phrase) return null;
const num = numeral(phrase?.toLowerCase()).value();
diff --git a/lib/arguments/contentWithDuration.ts b/lib/arguments/contentWithDuration.ts
index 0efba39..ec015dc 100644
--- a/lib/arguments/contentWithDuration.ts
+++ b/lib/arguments/contentWithDuration.ts
@@ -1,5 +1,5 @@
-import { parseDuration, type BushArgumentTypeCaster, type ParsedDuration } from '#lib';
+import { parseDuration, type BotArgumentTypeCaster, type ParsedDuration } from '#lib';
-export const contentWithDuration: BushArgumentTypeCaster<Promise<ParsedDuration>> = async (_, phrase) => {
+export const contentWithDuration: BotArgumentTypeCaster<Promise<ParsedDuration>> = async (_, phrase) => {
return parseDuration(phrase);
};
diff --git a/lib/arguments/discordEmoji.ts b/lib/arguments/discordEmoji.ts
index 92d6502..0a0d168 100644
--- a/lib/arguments/discordEmoji.ts
+++ b/lib/arguments/discordEmoji.ts
@@ -1,7 +1,7 @@
-import { regex, type BushArgumentTypeCaster } from '#lib';
+import { regex, type BotArgumentTypeCaster } from '#lib';
import type { Snowflake } from 'discord.js';
-export const discordEmoji: BushArgumentTypeCaster<DiscordEmojiInfo | null> = (_, phrase) => {
+export const discordEmoji: BotArgumentTypeCaster<DiscordEmojiInfo | null> = (_, phrase) => {
if (!phrase) return null;
const validEmoji: RegExpExecArray | null = regex.discordEmoji.exec(phrase);
if (!validEmoji || !validEmoji.groups) return null;
diff --git a/lib/arguments/duration.ts b/lib/arguments/duration.ts
index 09dd3d5..4952dc4 100644
--- a/lib/arguments/duration.ts
+++ b/lib/arguments/duration.ts
@@ -1,5 +1,5 @@
-import { parseDuration, type BushArgumentTypeCaster } from '#lib';
+import { parseDuration, type BotArgumentTypeCaster } from '#lib';
-export const duration: BushArgumentTypeCaster<number | null> = (_, phrase) => {
+export const duration: BotArgumentTypeCaster<number | null> = (_, phrase) => {
return parseDuration(phrase).duration;
};
diff --git a/lib/arguments/durationSeconds.ts b/lib/arguments/durationSeconds.ts
index d8d6749..8deee5b 100644
--- a/lib/arguments/durationSeconds.ts
+++ b/lib/arguments/durationSeconds.ts
@@ -1,6 +1,6 @@
-import { parseDuration, type BushArgumentTypeCaster } from '#lib';
+import { parseDuration, type BotArgumentTypeCaster } from '#lib';
-export const durationSeconds: BushArgumentTypeCaster<number | null> = (_, phrase) => {
+export const durationSeconds: BotArgumentTypeCaster<number | null> = (_, phrase) => {
phrase += 's';
return parseDuration(phrase).duration;
};
diff --git a/lib/arguments/globalUser.ts b/lib/arguments/globalUser.ts
index 4324aa9..4198e3c 100644
--- a/lib/arguments/globalUser.ts
+++ b/lib/arguments/globalUser.ts
@@ -1,7 +1,7 @@
-import type { BushArgumentTypeCaster } from '#lib';
+import type { BotArgumentTypeCaster } from '#lib';
import type { User } from 'discord.js';
// resolve non-cached users
-export const globalUser: BushArgumentTypeCaster<Promise<User | null>> = async (message, phrase) => {
+export const globalUser: BotArgumentTypeCaster<Promise<User | null>> = async (message, phrase) => {
return message.client.users.resolve(phrase) ?? (await message.client.users.fetch(`${phrase}`).catch(() => null));
};
diff --git a/lib/arguments/messageLink.ts b/lib/arguments/messageLink.ts
index c95e42d..ffb48a0 100644
--- a/lib/arguments/messageLink.ts
+++ b/lib/arguments/messageLink.ts
@@ -1,7 +1,7 @@
-import { BushArgumentTypeCaster, regex } from '#lib';
+import { BotArgumentTypeCaster, regex } from '#lib';
import type { Message } from 'discord.js';
-export const messageLink: BushArgumentTypeCaster<Promise<Message | null>> = async (message, phrase) => {
+export const messageLink: BotArgumentTypeCaster<Promise<Message | null>> = async (message, phrase) => {
const match = new RegExp(regex.messageLink).exec(phrase);
if (!match || !match.groups) return null;
diff --git a/lib/arguments/permission.ts b/lib/arguments/permission.ts
index 98bfe74..4d09e9c 100644
--- a/lib/arguments/permission.ts
+++ b/lib/arguments/permission.ts
@@ -1,7 +1,7 @@
-import type { BushArgumentTypeCaster } from '#lib';
+import type { BotArgumentTypeCaster } from '#lib';
import { PermissionFlagsBits, type PermissionsString } from 'discord.js';
-export const permission: BushArgumentTypeCaster<PermissionsString | null> = (_, phrase) => {
+export const permission: BotArgumentTypeCaster<PermissionsString | null> = (_, phrase) => {
if (!phrase) return null;
phrase = phrase.toUpperCase().replace(/ /g, '_');
if (!(phrase in PermissionFlagsBits)) {
diff --git a/lib/arguments/roleWithDuration.ts b/lib/arguments/roleWithDuration.ts
index b97f205..9391c75 100644
--- a/lib/arguments/roleWithDuration.ts
+++ b/lib/arguments/roleWithDuration.ts
@@ -1,7 +1,7 @@
-import { Arg, BushArgumentTypeCaster, parseDuration } from '#lib';
+import { Arg, BotArgumentTypeCaster, parseDuration } from '#lib';
import type { Role } from 'discord.js';
-export const roleWithDuration: BushArgumentTypeCaster<Promise<RoleWithDuration | null>> = async (message, phrase) => {
+export const roleWithDuration: BotArgumentTypeCaster<Promise<RoleWithDuration | null>> = async (message, phrase) => {
// eslint-disable-next-line prefer-const
let { duration, content } = parseDuration(phrase);
if (content === null || content === undefined) return null;
diff --git a/lib/arguments/snowflake.ts b/lib/arguments/snowflake.ts
index b98a20f..ab0c7fc 100644
--- a/lib/arguments/snowflake.ts
+++ b/lib/arguments/snowflake.ts
@@ -1,7 +1,7 @@
-import { BushArgumentTypeCaster, regex } from '#lib';
+import { BotArgumentTypeCaster, regex } from '#lib';
import type { Snowflake } from 'discord.js';
-export const snowflake: BushArgumentTypeCaster<Snowflake | null> = (_, phrase) => {
+export const snowflake: BotArgumentTypeCaster<Snowflake | null> = (_, phrase) => {
if (!phrase) return null;
if (regex.snowflake.test(phrase)) return phrase;
return null;
diff --git a/lib/arguments/tinyColor.ts b/lib/arguments/tinyColor.ts
index 148c078..2eb6ab2 100644
--- a/lib/arguments/tinyColor.ts
+++ b/lib/arguments/tinyColor.ts
@@ -1,9 +1,9 @@
-import type { BushArgumentTypeCaster } from '#lib';
+import type { BotArgumentTypeCaster } from '#lib';
import assert from 'assert/strict';
import tinycolorModule from 'tinycolor2';
assert(tinycolorModule);
-export const tinyColor: BushArgumentTypeCaster<string | null> = (_message, phrase) => {
+export const tinyColor: BotArgumentTypeCaster<string | null> = (_message, phrase) => {
// if the phase is a number it converts it to hex incase it could be representing a color in decimal
const newPhase = isNaN(phrase as any) ? phrase : `#${Number(phrase).toString(16)}`;
return tinycolorModule(newPhase).isValid() ? newPhase : null;
diff --git a/lib/automod/AutomodShared.ts b/lib/automod/AutomodShared.ts
index 9cdb020..29b0536 100644
--- a/lib/automod/AutomodShared.ts
+++ b/lib/automod/AutomodShared.ts
@@ -1,6 +1,6 @@
import * as Moderation from '#lib/common/Moderation.js';
import { unmuteResponse } from '#lib/extensions/discord.js/ExtendedGuildMember.js';
-import { colors, emojis } from '#lib/utils/BushConstants.js';
+import { colors, emojis } from '#lib/utils/Constants.js';
import * as Format from '#lib/utils/Format.js';
import { formatUnmuteResponse } from '#lib/utils/FormatResponse.js';
import {
@@ -165,7 +165,7 @@ export async function handleAutomodInteraction(interaction: ButtonInteraction) {
const check = victim ? await Moderation.permissionCheck(moderator, victim, 'ban', true) : true;
if (check !== true) return interaction.reply({ content: check, ephemeral: true });
- const result = await interaction.guild?.bushBan({
+ const result = await interaction.guild?.customBan({
user: userId,
reason,
moderator: interaction.user.id,
@@ -209,7 +209,7 @@ export async function handleAutomodInteraction(interaction: ButtonInteraction) {
const check2 = await Moderation.checkMutePermissions(interaction.guild);
if (check2 !== true) return interaction.reply({ content: formatUnmuteResponse('/', victim!, check2), ephemeral: true });
- const result = await victim.bushUnmute({
+ const result = await victim.customUnmute({
reason,
moderator: interaction.member as GuildMember,
evidence: (interaction.message as Message).url ?? undefined
diff --git a/lib/automod/MessageAutomod.ts b/lib/automod/MessageAutomod.ts
index 0abd34c..0b6ebba 100644
--- a/lib/automod/MessageAutomod.ts
+++ b/lib/automod/MessageAutomod.ts
@@ -2,8 +2,8 @@ import { stripIndent } from '#tags';
import assert from 'assert/strict';
import chalk from 'chalk';
import { EmbedBuilder, GuildTextBasedChannel, PermissionFlagsBits, type Message } from 'discord.js';
-import { colors } from '../utils/BushConstants.js';
-import { format, formatError } from '../utils/BushUtils.js';
+import { colors } from '../utils/Constants.js';
+import { format, formatError } from '../utils/Utils.js';
import { Automod, BadWordDetails, Severity } from './AutomodShared.js';
/**
@@ -202,7 +202,7 @@ export class MessageAutomod extends Automod {
}
case Severity.WARN: {
void this.message.delete().catch((e) => deleteError.bind(this, e));
- void this.member.bushWarn({
+ void this.member.customWarn({
moderator: this.guild!.members.me!,
reason: `[Automod] ${highestOffense.reason}`
});
@@ -211,7 +211,7 @@ export class MessageAutomod extends Automod {
}
case Severity.TEMP_MUTE: {
void this.message.delete().catch((e) => deleteError.bind(this, e));
- void this.member.bushMute({
+ void this.member.customMute({
moderator: this.guild!.members.me!,
reason: `[Automod] ${highestOffense.reason}`,
duration: 900_000 // 15 minutes
@@ -221,7 +221,7 @@ export class MessageAutomod extends Automod {
}
case Severity.PERM_MUTE: {
void this.message.delete().catch((e) => deleteError.bind(this, e));
- void this.member.bushMute({
+ void this.member.customMute({
moderator: this.guild!.members.me!,
reason: `[Automod] ${highestOffense.reason}`,
duration: 0 // permanent
diff --git a/lib/common/BushCache.ts b/lib/common/BotCache.ts
index 22a13ef..e91d9e5 100644
--- a/lib/common/BushCache.ts
+++ b/lib/common/BotCache.ts
@@ -1,7 +1,7 @@
import { BadWords, GlobalModel, SharedModel, type Guild } from '#lib';
import { Collection, type Snowflake } from 'discord.js';
-export class BushCache {
+export class BotCache {
public global = new GlobalCache();
public shared = new SharedCache();
public guilds = new GuildCache();
diff --git a/lib/common/HighlightManager.ts b/lib/common/HighlightManager.ts
index cc31413..ca71a83 100644
--- a/lib/common/HighlightManager.ts
+++ b/lib/common/HighlightManager.ts
@@ -10,7 +10,7 @@ import {
type Snowflake,
type TextBasedChannel
} from 'discord.js';
-import { colors, Time } from '../utils/BushConstants.js';
+import { colors, Time } from '../utils/Constants.js';
import { sanitizeInputForDiscord } from '../utils/Format.js';
const NOTIFY_COOLDOWN = 5 * Time.Minute;
diff --git a/lib/extensions/discord-akairo/BotArgumentTypeCaster.ts b/lib/extensions/discord-akairo/BotArgumentTypeCaster.ts
new file mode 100644
index 0000000..5f4f32f
--- /dev/null
+++ b/lib/extensions/discord-akairo/BotArgumentTypeCaster.ts
@@ -0,0 +1,3 @@
+import { type CommandMessage } from '#lib';
+
+export type BotArgumentTypeCaster<R = unknown> = (message: CommandMessage, phrase: string) => R;
diff --git a/lib/extensions/discord-akairo/BushCommand.ts b/lib/extensions/discord-akairo/BotCommand.ts
index 7201248..abd945e 100644
--- a/lib/extensions/discord-akairo/BushCommand.ts
+++ b/lib/extensions/discord-akairo/BotCommand.ts
@@ -1,12 +1,12 @@
import { type DiscordEmojiInfo, type RoleWithDuration } from '#args';
import {
- type BushArgumentTypeCaster,
- type BushClient,
- type BushCommandHandler,
- type BushInhibitor,
- type BushListener,
- type BushTask,
- type ParsedDuration
+ type BotArgumentTypeCaster,
+ type BotCommandHandler,
+ type BotInhibitor,
+ type BotListener,
+ type BotTask,
+ type ParsedDuration,
+ type TanzaniteClient
} from '#lib';
import {
ArgumentMatch,
@@ -45,15 +45,15 @@ import _ from 'lodash';
import { SlashMessage } from './SlashMessage.js';
export interface OverriddenBaseArgumentType extends BaseArgumentType {
- commandAlias: BushCommand | null;
- command: BushCommand | null;
- inhibitor: BushInhibitor | null;
- listener: BushListener | null;
- task: BushTask | null;
+ commandAlias: BotCommand | null;
+ command: BotCommand | null;
+ inhibitor: BotInhibitor | null;
+ listener: BotListener | null;
+ task: BotTask | null;
contextMenuCommand: ContextMenuCommand | null;
}
-export interface BaseBushArgumentType extends OverriddenBaseArgumentType {
+export interface BaseBotArgumentType extends OverriddenBaseArgumentType {
duration: number | null;
contentWithDuration: ParsedDuration;
permission: PermissionsString | null;
@@ -67,9 +67,9 @@ export interface BaseBushArgumentType extends OverriddenBaseArgumentType {
tinyColor: string | null;
}
-export type BushArgumentType = keyof BaseBushArgumentType | RegExp;
+export type BotArgumentType = keyof BaseBotArgumentType | RegExp;
-interface BaseBushArgumentOptions extends Omit<ArgumentOptions, 'type' | 'prompt'>, ExtraArgumentOptions {
+interface BaseBotArgumentOptions extends Omit<ArgumentOptions, 'type' | 'prompt'>, ExtraArgumentOptions {
id: string;
description: string;
@@ -150,7 +150,7 @@ interface ExtraArgumentOptions {
superUserOnly?: boolean;
}
-export interface BushArgumentOptions extends BaseBushArgumentOptions {
+export interface BotArgumentOptions extends BaseBotArgumentOptions {
/**
* The type that the argument should be cast to.
* - `string` does not cast to any type.
@@ -199,10 +199,10 @@ export interface BushArgumentOptions extends BaseBushArgumentOptions {
* - `contentWithDuration` tries to parse duration in milliseconds and returns the remaining content with the duration
* removed
*/
- type?: BushArgumentType | (keyof BaseBushArgumentType)[] | BushArgumentTypeCaster;
+ type?: BotArgumentType | (keyof BaseBotArgumentType)[] | BotArgumentTypeCaster;
}
-export interface CustomBushArgumentOptions extends BaseBushArgumentOptions {
+export interface CustomBotArgumentOptions extends BaseBotArgumentOptions {
/**
* An array of strings can be used to restrict input to only those strings, case insensitive.
* The array can also contain an inner array of strings, for aliases.
@@ -214,7 +214,7 @@ export interface CustomBushArgumentOptions extends BaseBushArgumentOptions {
customType?: (string | string[])[] | RegExp | string | null;
}
-export type BushMissingPermissionSupplier = (message: CommandMessage | SlashMessage) => Promise<any> | any;
+export type CustomMissingPermissionSupplier = (message: CommandMessage | SlashMessage) => Promise<any> | any;
interface ExtendedCommandOptions {
/**
@@ -253,7 +253,7 @@ interface ExtendedCommandOptions {
bypassChannelBlacklist?: boolean;
/**
- * Use instead of {@link BaseBushCommandOptions.args} when using argument generators or custom slashOptions
+ * Use instead of {@link BaseBotCommandOptions.args} when using argument generators or custom slashOptions
*/
helpArgs?: ArgsInfo[];
@@ -263,7 +263,7 @@ interface ExtendedCommandOptions {
note?: string;
}
-export interface BaseBushCommandOptions
+export interface BaseBotCommandOptions
extends Omit<CommandOptions, 'userPermissions' | 'clientPermissions' | 'args'>,
ExtendedCommandOptions {
/**
@@ -274,19 +274,19 @@ export interface BaseBushCommandOptions
/**
* The arguments for the command.
*/
- args?: BushArgumentOptions[] & CustomBushArgumentOptions[];
+ args?: BotArgumentOptions[] & CustomBotArgumentOptions[];
category: string;
/**
* Permissions required by the client to run this command.
*/
- clientPermissions: bigint | bigint[] | BushMissingPermissionSupplier;
+ clientPermissions: bigint | bigint[] | CustomMissingPermissionSupplier;
/**
* Permissions required by the user to run this command.
*/
- userPermissions: bigint | bigint[] | BushMissingPermissionSupplier;
+ userPermissions: bigint | bigint[] | CustomMissingPermissionSupplier;
/**
* Whether the argument is only accessible to the owners.
@@ -299,7 +299,7 @@ export interface BaseBushCommandOptions
superUserOnly?: boolean;
}
-export type BushCommandOptions = Omit<BaseBushCommandOptions, 'helpArgs'> | Omit<BaseBushCommandOptions, 'args'>;
+export type CustomCommandOptions = Omit<BaseBotCommandOptions, 'helpArgs'> | Omit<BaseBotCommandOptions, 'args'>;
export interface ArgsInfo {
/**
@@ -360,9 +360,9 @@ export interface ArgsInfo {
superUserOnly?: boolean;
}
-export abstract class BushCommand extends Command {
- public declare client: BushClient;
- public declare handler: BushCommandHandler;
+export abstract class BotCommand extends Command {
+ public declare client: TanzaniteClient;
+ public declare handler: BotCommandHandler;
public declare description: string;
/**
@@ -378,7 +378,7 @@ export abstract class BushCommand extends Command {
/**
* The options sent to the constructor
*/
- public options: BushCommandOptions;
+ public options: CustomCommandOptions;
/**
* The options sent to the super call
@@ -420,8 +420,8 @@ export abstract class BushCommand extends Command {
*/
public note?: string;
- public constructor(id: string, options: BushCommandOptions) {
- const options_ = options as BaseBushCommandOptions;
+ public constructor(id: string, options: CustomCommandOptions) {
+ const options_ = options as BaseBotCommandOptions;
if (options_.args && typeof options_.args !== 'function') {
options_.args.forEach((_, index: number) => {
@@ -512,8 +512,8 @@ export abstract class BushCommand extends Command {
const argsInfo: ArgsInfo[] = [];
const combined = (options_.args ?? options_.helpArgs)!.map((arg) => {
const norm = options_.args
- ? options_.args.find((_arg) => _arg.id === ('id' in arg ? arg.id : arg.name)) ?? ({} as BushArgumentOptions)
- : ({} as BushArgumentOptions);
+ ? options_.args.find((_arg) => _arg.id === ('id' in arg ? arg.id : arg.name)) ?? ({} as BotArgumentOptions)
+ : ({} as BotArgumentOptions);
const help = options_.helpArgs
? options_.helpArgs.find((_arg) => _arg.name === ('id' in arg ? arg.id : arg.name)) ?? ({} as ArgsInfo)
: ({} as ArgsInfo);
@@ -574,7 +574,7 @@ type SlashOptionKeys =
| keyof AkairoApplicationCommandNumericOptionData
| keyof AkairoApplicationCommandSubCommandData;
-interface PseudoArguments extends BaseBushArgumentType {
+interface PseudoArguments extends BaseBotArgumentType {
boolean: boolean;
flag: boolean;
regex: { match: RegExpMatchArray; matches: RegExpExecArray[] };
diff --git a/lib/extensions/discord-akairo/BotCommandHandler.ts b/lib/extensions/discord-akairo/BotCommandHandler.ts
new file mode 100644
index 0000000..8a4fe60
--- /dev/null
+++ b/lib/extensions/discord-akairo/BotCommandHandler.ts
@@ -0,0 +1,37 @@
+import { type BotCommand, type CommandMessage, type SlashMessage } from '#lib';
+import { CommandHandler, type Category, type CommandHandlerEvents, type CommandHandlerOptions } from 'discord-akairo';
+import { type Collection, type Message, type PermissionsString } from 'discord.js';
+
+export type CustomCommandHandlerOptions = CommandHandlerOptions;
+
+export interface BotCommandHandlerEvents extends CommandHandlerEvents {
+ commandBlocked: [message: CommandMessage, command: BotCommand, reason: string];
+ commandBreakout: [message: CommandMessage, command: BotCommand, /* no util */ breakMessage: Message];
+ commandCancelled: [message: CommandMessage, command: BotCommand, /* no util */ retryMessage?: Message];
+ commandFinished: [message: CommandMessage, command: BotCommand, args: any, returnValue: any];
+ commandInvalid: [message: CommandMessage, command: BotCommand];
+ commandLocked: [message: CommandMessage, command: BotCommand];
+ commandStarted: [message: CommandMessage, command: BotCommand, args: any];
+ cooldown: [message: CommandMessage | SlashMessage, command: BotCommand, remaining: number];
+ error: [error: Error, message: /* no util */ Message, command?: BotCommand];
+ inPrompt: [message: /* no util */ Message];
+ load: [command: BotCommand, isReload: boolean];
+ messageBlocked: [message: /* no util */ Message | CommandMessage | SlashMessage, reason: string];
+ messageInvalid: [message: CommandMessage];
+ missingPermissions: [message: CommandMessage, command: BotCommand, type: 'client' | 'user', missing: PermissionsString[]];
+ remove: [command: BotCommand];
+ slashBlocked: [message: SlashMessage, command: BotCommand, reason: string];
+ slashError: [error: Error, message: SlashMessage, command: BotCommand];
+ slashFinished: [message: SlashMessage, command: BotCommand, args: any, returnValue: any];
+ slashMissingPermissions: [message: SlashMessage, command: BotCommand, type: 'client' | 'user', missing: PermissionsString[]];
+ slashStarted: [message: SlashMessage, command: BotCommand, args: any];
+}
+
+export class BotCommandHandler extends CommandHandler {
+ public declare modules: Collection<string, BotCommand>;
+ public declare categories: Collection<string, Category<string, BotCommand>>;
+}
+
+export interface BotCommandHandler extends CommandHandler {
+ findCommand(name: string): BotCommand;
+}
diff --git a/lib/extensions/discord-akairo/BushInhibitor.ts b/lib/extensions/discord-akairo/BotInhibitor.ts
index be396cf..d134eab 100644
--- a/lib/extensions/discord-akairo/BushInhibitor.ts
+++ b/lib/extensions/discord-akairo/BotInhibitor.ts
@@ -1,9 +1,8 @@
-import { type BushCommand, type CommandMessage, type SlashMessage } from '#lib';
+import { type BotCommand, type CommandMessage, type SlashMessage } from '#lib';
import { Inhibitor } from 'discord-akairo';
-// eslint-disable-next-line @typescript-eslint/no-unused-vars
import { Message } from 'discord.js';
-export abstract class BushInhibitor extends Inhibitor {
+export abstract class BotInhibitor extends Inhibitor {
/**
* Checks if message should be blocked.
* A return value of true will block the message.
@@ -14,6 +13,6 @@ export abstract class BushInhibitor extends Inhibitor {
* @param message - Message being handled.
* @param command - Command to check.
*/
- public abstract override exec(message: CommandMessage, command: BushCommand): any;
- public abstract override exec(message: CommandMessage | SlashMessage, command: BushCommand): any;
+ public abstract override exec(message: CommandMessage, command: BotCommand): any;
+ public abstract override exec(message: CommandMessage | SlashMessage, command: BotCommand): any;
}
diff --git a/lib/extensions/discord-akairo/BotInhibitorHandler.ts b/lib/extensions/discord-akairo/BotInhibitorHandler.ts
new file mode 100644
index 0000000..c6f318d
--- /dev/null
+++ b/lib/extensions/discord-akairo/BotInhibitorHandler.ts
@@ -0,0 +1,3 @@
+import { InhibitorHandler } from 'discord-akairo';
+
+export class BotInhibitorHandler extends InhibitorHandler {}
diff --git a/lib/extensions/discord-akairo/BotListener.ts b/lib/extensions/discord-akairo/BotListener.ts
new file mode 100644
index 0000000..f4bfd6c
--- /dev/null
+++ b/lib/extensions/discord-akairo/BotListener.ts
@@ -0,0 +1,3 @@
+import { Listener } from 'discord-akairo';
+
+export abstract class BotListener extends Listener {}
diff --git a/lib/extensions/discord-akairo/BotListenerHandler.ts b/lib/extensions/discord-akairo/BotListenerHandler.ts
new file mode 100644
index 0000000..9b3b525
--- /dev/null
+++ b/lib/extensions/discord-akairo/BotListenerHandler.ts
@@ -0,0 +1,3 @@
+import { ListenerHandler } from 'discord-akairo';
+
+export class BotListenerHandler extends ListenerHandler {}
diff --git a/lib/extensions/discord-akairo/BotTask.ts b/lib/extensions/discord-akairo/BotTask.ts
new file mode 100644
index 0000000..09b30ed
--- /dev/null
+++ b/lib/extensions/discord-akairo/BotTask.ts
@@ -0,0 +1,3 @@
+import { Task } from 'discord-akairo';
+
+export abstract class BotTask extends Task {}
diff --git a/lib/extensions/discord-akairo/BotTaskHandler.ts b/lib/extensions/discord-akairo/BotTaskHandler.ts
new file mode 100644
index 0000000..b522f2c
--- /dev/null
+++ b/lib/extensions/discord-akairo/BotTaskHandler.ts
@@ -0,0 +1,3 @@
+import { TaskHandler } from 'discord-akairo';
+
+export class BotTaskHandler extends TaskHandler {}
diff --git a/lib/extensions/discord-akairo/BushArgumentTypeCaster.ts b/lib/extensions/discord-akairo/BushArgumentTypeCaster.ts
deleted file mode 100644
index def7ad6..0000000
--- a/lib/extensions/discord-akairo/BushArgumentTypeCaster.ts
+++ /dev/null
@@ -1,3 +0,0 @@
-import { type CommandMessage } from '#lib';
-
-export type BushArgumentTypeCaster<R = unknown> = (message: CommandMessage, phrase: string) => R;
diff --git a/lib/extensions/discord-akairo/BushCommandHandler.ts b/lib/extensions/discord-akairo/BushCommandHandler.ts
deleted file mode 100644
index da49af9..0000000
--- a/lib/extensions/discord-akairo/BushCommandHandler.ts
+++ /dev/null
@@ -1,37 +0,0 @@
-import { type BushCommand, type CommandMessage, type SlashMessage } from '#lib';
-import { CommandHandler, type Category, type CommandHandlerEvents, type CommandHandlerOptions } from 'discord-akairo';
-import { type Collection, type Message, type PermissionsString } from 'discord.js';
-
-export type BushCommandHandlerOptions = CommandHandlerOptions;
-
-export interface BushCommandHandlerEvents extends CommandHandlerEvents {
- commandBlocked: [message: CommandMessage, command: BushCommand, reason: string];
- commandBreakout: [message: CommandMessage, command: BushCommand, /* no util */ breakMessage: Message];
- commandCancelled: [message: CommandMessage, command: BushCommand, /* no util */ retryMessage?: Message];
- commandFinished: [message: CommandMessage, command: BushCommand, args: any, returnValue: any];
- commandInvalid: [message: CommandMessage, command: BushCommand];
- commandLocked: [message: CommandMessage, command: BushCommand];
- commandStarted: [message: CommandMessage, command: BushCommand, args: any];
- cooldown: [message: CommandMessage | SlashMessage, command: BushCommand, remaining: number];
- error: [error: Error, message: /* no util */ Message, command?: BushCommand];
- inPrompt: [message: /* no util */ Message];
- load: [command: BushCommand, isReload: boolean];
- messageBlocked: [message: /* no util */ Message | CommandMessage | SlashMessage, reason: string];
- messageInvalid: [message: CommandMessage];
- missingPermissions: [message: CommandMessage, command: BushCommand, type: 'client' | 'user', missing: PermissionsString[]];
- remove: [command: BushCommand];
- slashBlocked: [message: SlashMessage, command: BushCommand, reason: string];
- slashError: [error: Error, message: SlashMessage, command: BushCommand];
- slashFinished: [message: SlashMessage, command: BushCommand, args: any, returnValue: any];
- slashMissingPermissions: [message: SlashMessage, command: BushCommand, type: 'client' | 'user', missing: PermissionsString[]];
- slashStarted: [message: SlashMessage, command: BushCommand, args: any];
-}
-
-export class BushCommandHandler extends CommandHandler {
- public declare modules: Collection<string, BushCommand>;
- public declare categories: Collection<string, Category<string, BushCommand>>;
-}
-
-export interface BushCommandHandler extends CommandHandler {
- findCommand(name: string): BushCommand;
-}
diff --git a/lib/extensions/discord-akairo/BushInhibitorHandler.ts b/lib/extensions/discord-akairo/BushInhibitorHandler.ts
deleted file mode 100644
index 5e4fb6c..0000000
--- a/lib/extensions/discord-akairo/BushInhibitorHandler.ts
+++ /dev/null
@@ -1,3 +0,0 @@
-import { InhibitorHandler } from 'discord-akairo';
-
-export class BushInhibitorHandler extends InhibitorHandler {}
diff --git a/lib/extensions/discord-akairo/BushListener.ts b/lib/extensions/discord-akairo/BushListener.ts
deleted file mode 100644
index 6917641..0000000
--- a/lib/extensions/discord-akairo/BushListener.ts
+++ /dev/null
@@ -1,3 +0,0 @@
-import { Listener } from 'discord-akairo';
-
-export abstract class BushListener extends Listener {}
diff --git a/lib/extensions/discord-akairo/BushListenerHandler.ts b/lib/extensions/discord-akairo/BushListenerHandler.ts
deleted file mode 100644
index 9c3e4af..0000000
--- a/lib/extensions/discord-akairo/BushListenerHandler.ts
+++ /dev/null
@@ -1,3 +0,0 @@
-import { ListenerHandler } from 'discord-akairo';
-
-export class BushListenerHandler extends ListenerHandler {}
diff --git a/lib/extensions/discord-akairo/BushTask.ts b/lib/extensions/discord-akairo/BushTask.ts
deleted file mode 100644
index 1b70c88..0000000
--- a/lib/extensions/discord-akairo/BushTask.ts
+++ /dev/null
@@ -1,3 +0,0 @@
-import { Task } from 'discord-akairo';
-
-export abstract class BushTask extends Task {}
diff --git a/lib/extensions/discord-akairo/BushTaskHandler.ts b/lib/extensions/discord-akairo/BushTaskHandler.ts
deleted file mode 100644
index 6535abb..0000000
--- a/lib/extensions/discord-akairo/BushTaskHandler.ts
+++ /dev/null
@@ -1,3 +0,0 @@
-import { TaskHandler } from 'discord-akairo';
-
-export class BushTaskHandler extends TaskHandler {}
diff --git a/lib/extensions/discord-akairo/BushClient.ts b/lib/extensions/discord-akairo/TanzaniteClient.ts
index b311ffd..24ce962 100644
--- a/lib/extensions/discord-akairo/BushClient.ts
+++ b/lib/extensions/discord-akairo/TanzaniteClient.ts
@@ -11,7 +11,7 @@ import {
snowflake
} from '#args';
import type { Config } from '#config';
-import { BushClientEvents, emojis, formatError, inspect, updateEveryCache } from '#lib';
+import { BotClientEvents, emojis, formatError, inspect, updateEveryCache } from '#lib';
import { patch, type PatchedElements } from '@notenoughupdates/events-intercept';
import * as Sentry from '@sentry/node';
import {
@@ -32,14 +32,10 @@ import {
version as discordJsVersion,
type Awaitable,
type If,
- type InteractionReplyOptions,
type Message,
- type MessageEditOptions,
type MessageOptions,
- type ReplyMessageOptions,
type Snowflake,
- type UserResolvable,
- type WebhookEditMessageOptions
+ type UserResolvable
} from 'discord.js';
import type EventEmitter from 'events';
import { google } from 'googleapis';
@@ -48,7 +44,7 @@ import readline from 'readline';
import { Options as SequelizeOptions, Sequelize, Sequelize as SequelizeType } from 'sequelize';
import { fileURLToPath } from 'url';
import { tinyColor } from '../../arguments/tinyColor.js';
-import { BushCache } from '../../common/BushCache.js';
+import { BotCache } from '../../common/BotCache.js';
import { HighlightManager } from '../../common/HighlightManager.js';
import {
ActivePunishment,
@@ -65,16 +61,16 @@ import {
StickyRole
} from '../../models/index.js';
import { AllowedMentions } from '../../utils/AllowedMentions.js';
-import { BushClientUtils } from '../../utils/BushClientUtils.js';
-import { BushLogger } from '../../utils/BushLogger.js';
+import { BotClientUtils } from '../../utils/BotClientUtils.js';
+import { Logger } from '../../utils/Logger.js';
import { ExtendedGuild } from '../discord.js/ExtendedGuild.js';
import { ExtendedGuildMember } from '../discord.js/ExtendedGuildMember.js';
import { ExtendedMessage } from '../discord.js/ExtendedMessage.js';
import { ExtendedUser } from '../discord.js/ExtendedUser.js';
-import { BushCommandHandler } from './BushCommandHandler.js';
-import { BushInhibitorHandler } from './BushInhibitorHandler.js';
-import { BushListenerHandler } from './BushListenerHandler.js';
-import { BushTaskHandler } from './BushTaskHandler.js';
+import { BotCommandHandler } from './BotCommandHandler.js';
+import { BotInhibitorHandler } from './BotInhibitorHandler.js';
+import { BotListenerHandler } from './BotListenerHandler.js';
+import { BotTaskHandler } from './BotTaskHandler.js';
declare module 'discord.js' {
export interface Client extends EventEmitter {
@@ -87,15 +83,15 @@ declare module 'discord.js' {
/** The configuration for the client. */
readonly config: Config;
/** Stats for the client. */
- readonly stats: BushStats;
+ readonly stats: BotStats;
/** The handler for the bot's listeners. */
- readonly listenerHandler: BushListenerHandler;
+ readonly listenerHandler: BotListenerHandler;
/** The handler for the bot's command inhibitors. */
- readonly inhibitorHandler: BushInhibitorHandler;
+ readonly inhibitorHandler: BotInhibitorHandler;
/** The handler for the bot's commands. */
- readonly commandHandler: BushCommandHandler;
+ readonly commandHandler: BotCommandHandler;
/** The handler for the bot's tasks. */
- readonly taskHandler: BushTaskHandler;
+ readonly taskHandler: BotTaskHandler;
/** The handler for the bot's context menu commands. */
readonly contextMenuCommandHandler: ContextMenuCommandHandler;
/** The database connection for this instance of the bot (production, beta, or development). */
@@ -103,9 +99,9 @@ declare module 'discord.js' {
/** The database connection that is shared between all instances of the bot. */
readonly sharedDB: SequelizeType;
/** A custom logging system for the bot. */
- readonly logger: BushLogger;
+ readonly logger: Logger;
/** Cached global and guild database data. */
- readonly cache: BushCache;
+ readonly cache: BotCache;
/** Sentry error reporting for the bot. */
readonly sentry: typeof Sentry;
/** Manages most aspects of the highlight command */
@@ -113,14 +109,14 @@ declare module 'discord.js' {
/** The perspective api */
perspective: any;
/** Client utilities. */
- readonly utils: BushClientUtils;
+ readonly utils: BotClientUtils;
/** A custom logging system for the bot. */
- get console(): BushLogger;
- on<K extends keyof BushClientEvents>(event: K, listener: (...args: BushClientEvents[K]) => Awaitable<void>): this;
- once<K extends keyof BushClientEvents>(event: K, listener: (...args: BushClientEvents[K]) => Awaitable<void>): this;
- emit<K extends keyof BushClientEvents>(event: K, ...args: BushClientEvents[K]): boolean;
- off<K extends keyof BushClientEvents>(event: K, listener: (...args: BushClientEvents[K]) => Awaitable<void>): this;
- removeAllListeners<K extends keyof BushClientEvents>(event?: K): this;
+ get console(): Logger;
+ on<K extends keyof BotClientEvents>(event: K, listener: (...args: BotClientEvents[K]) => Awaitable<void>): this;
+ once<K extends keyof BotClientEvents>(event: K, listener: (...args: BotClientEvents[K]) => Awaitable<void>): this;
+ emit<K extends keyof BotClientEvents>(event: K, ...args: BotClientEvents[K]): boolean;
+ off<K extends keyof BotClientEvents>(event: K, listener: (...args: BotClientEvents[K]) => Awaitable<void>): this;
+ removeAllListeners<K extends keyof BotClientEvents>(event?: K): this;
/**
* Checks if a user is the owner of this bot.
* @param user - User to check.
@@ -134,12 +130,6 @@ declare module 'discord.js' {
}
}
-export type ReplyMessageType = string | MessagePayload | ReplyMessageOptions;
-export type EditMessageType = string | MessageEditOptions | MessagePayload;
-export type SlashSendMessageType = string | MessagePayload | InteractionReplyOptions;
-export type SlashEditMessageType = string | MessagePayload | WebhookEditMessageOptions;
-export type SendMessageType = string | MessagePayload | MessageOptions;
-
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout,
@@ -151,7 +141,7 @@ const __dirname = path.dirname(fileURLToPath(import.meta.url));
/**
* The main hub for interacting with the Discord API.
*/
-export class BushClient<Ready extends boolean = boolean> extends AkairoClient<Ready> {
+export class TanzaniteClient<Ready extends boolean = boolean> extends AkairoClient<Ready> {
public declare ownerID: Snowflake[];
public declare superUserID: Snowflake[];
@@ -163,27 +153,27 @@ export class BushClient<Ready extends boolean = boolean> extends AkairoClient<Re
/**
* Stats for the client.
*/
- public override readonly stats: BushStats = { cpu: undefined, commandsUsed: 0n, slashCommandsUsed: 0n };
+ public override readonly stats: BotStats = { cpu: undefined, commandsUsed: 0n, slashCommandsUsed: 0n };
/**
* The handler for the bot's listeners.
*/
- public override readonly listenerHandler: BushListenerHandler;
+ public override readonly listenerHandler: BotListenerHandler;
/**
* The handler for the bot's command inhibitors.
*/
- public override readonly inhibitorHandler: BushInhibitorHandler;
+ public override readonly inhibitorHandler: BotInhibitorHandler;
/**
* The handler for the bot's commands.
*/
- public override readonly commandHandler: BushCommandHandler;
+ public override readonly commandHandler: BotCommandHandler;
/**
* The handler for the bot's tasks.
*/
- public override readonly taskHandler: BushTaskHandler;
+ public override readonly taskHandler: BotTaskHandler;
/**
* The handler for the bot's context menu commands.
@@ -203,12 +193,12 @@ export class BushClient<Ready extends boolean = boolean> extends AkairoClient<Re
/**
* A custom logging system for the bot.
*/
- public override readonly logger: BushLogger = new BushLogger(this);
+ public override readonly logger: Logger = new Logger(this);
/**
* Cached global and guild database data.
*/
- public override readonly cache = new BushCache();
+ public override readonly cache = new BotCache();
/**
* Sentry error reporting for the bot.
@@ -228,7 +218,7 @@ export class BushClient<Ready extends boolean = boolean> extends AkairoClient<Re
/**
* Client utilities.
*/
- public override readonly utils: BushClientUtils = new BushClientUtils(this);
+ public override readonly utils: BotClientUtils = new BotClientUtils(this);
/**
* @param config The configuration for the client.
@@ -268,17 +258,17 @@ export class BushClient<Ready extends boolean = boolean> extends AkairoClient<Re
this.token = config.token as If<Ready, string, string | null>;
/* =-=-= handlers =-=-= */
- this.listenerHandler = new BushListenerHandler(this, {
+ this.listenerHandler = new BotListenerHandler(this, {
directory: path.join(__dirname, '..', '..', '..', 'src', 'listeners'),
extensions: ['.js'],
automateCategories: true
});
- this.inhibitorHandler = new BushInhibitorHandler(this, {
+ this.inhibitorHandler = new BotInhibitorHandler(this, {
directory: path.join(__dirname, '..', '..', '..', 'src', 'inhibitors'),
extensions: ['.js'],
automateCategories: true
});
- this.taskHandler = new BushTaskHandler(this, {
+ this.taskHandler = new BotTaskHandler(this, {
directory: path.join(__dirname, '..', '..', '..', 'src', 'tasks'),
extensions: ['.js'],
automateCategories: true
@@ -309,7 +299,7 @@ export class BushClient<Ready extends boolean = boolean> extends AkairoClient<Re
return options;
};
- this.commandHandler = new BushCommandHandler(this, {
+ this.commandHandler = new BotCommandHandler(this, {
directory: path.join(__dirname, '..', '..', '..', 'src', 'commands'),
extensions: ['.js'],
prefix: async ({ guild }: Message) => {
@@ -372,7 +362,7 @@ export class BushClient<Ready extends boolean = boolean> extends AkairoClient<Re
/**
* A custom logging system for the bot.
*/
- public override get console(): BushLogger {
+ public override get console(): Logger {
return this.logger;
}
@@ -558,18 +548,18 @@ export class BushClient<Ready extends boolean = boolean> extends AkairoClient<Re
}
}
-export interface BushClient<Ready extends boolean = boolean> extends EventEmitter, PatchedElements, AkairoClient<Ready> {
- on<K extends keyof BushClientEvents>(event: K, listener: (...args: BushClientEvents[K]) => Awaitable<void>): this;
- once<K extends keyof BushClientEvents>(event: K, listener: (...args: BushClientEvents[K]) => Awaitable<void>): this;
- emit<K extends keyof BushClientEvents>(event: K, ...args: BushClientEvents[K]): boolean;
- off<K extends keyof BushClientEvents>(event: K, listener: (...args: BushClientEvents[K]) => Awaitable<void>): this;
- removeAllListeners<K extends keyof BushClientEvents>(event?: K): this;
+export interface TanzaniteClient<Ready extends boolean = boolean> extends EventEmitter, PatchedElements, AkairoClient<Ready> {
+ on<K extends keyof BotClientEvents>(event: K, listener: (...args: BotClientEvents[K]) => Awaitable<void>): this;
+ once<K extends keyof BotClientEvents>(event: K, listener: (...args: BotClientEvents[K]) => Awaitable<void>): this;
+ emit<K extends keyof BotClientEvents>(event: K, ...args: BotClientEvents[K]): boolean;
+ off<K extends keyof BotClientEvents>(event: K, listener: (...args: BotClientEvents[K]) => Awaitable<void>): this;
+ removeAllListeners<K extends keyof BotClientEvents>(event?: K): this;
}
/**
* Various statistics
*/
-export interface BushStats {
+export interface BotStats {
/**
* The average cpu usage of the bot from the past 60 seconds.
*/
@@ -587,15 +577,15 @@ export interface BushStats {
}
export interface Emitters {
- client: BushClient;
- commandHandler: BushClient['commandHandler'];
- inhibitorHandler: BushClient['inhibitorHandler'];
- listenerHandler: BushClient['listenerHandler'];
- taskHandler: BushClient['taskHandler'];
- contextMenuCommandHandler: BushClient['contextMenuCommandHandler'];
+ client: TanzaniteClient;
+ commandHandler: TanzaniteClient['commandHandler'];
+ inhibitorHandler: TanzaniteClient['inhibitorHandler'];
+ listenerHandler: TanzaniteClient['listenerHandler'];
+ taskHandler: TanzaniteClient['taskHandler'];
+ contextMenuCommandHandler: TanzaniteClient['contextMenuCommandHandler'];
process: NodeJS.Process;
stdin: readline.Interface;
- gateway: BushClient['ws'];
- rest: BushClient['rest'];
- ws: BushClient['ws'];
+ gateway: TanzaniteClient['ws'];
+ rest: TanzaniteClient['rest'];
+ ws: TanzaniteClient['ws'];
}
diff --git a/lib/extensions/discord.js/BushClientEvents.ts b/lib/extensions/discord.js/BotClientEvents.ts
index 22bae65..284ea32 100644
--- a/lib/extensions/discord.js/BushClientEvents.ts
+++ b/lib/extensions/discord.js/BotClientEvents.ts
@@ -1,9 +1,4 @@
-import type {
- BanResponse,
- CommandMessage,
- Guild as GuildDB,
- GuildSettings
-} from '#lib';
+import type { BanResponse, CommandMessage, Guild as GuildDB, GuildSettings } from '#lib';
import type { AkairoClientEvents } from 'discord-akairo';
import type {
ButtonInteraction,
@@ -19,8 +14,34 @@ import type {
User
} from 'discord.js';
-export interface BushClientEvents extends AkairoClientEvents {
- bushBan: [
+export enum TanzaniteEvent {
+ Ban = 'customBan',
+ Block = 'customBlock',
+ Kick = 'customKick',
+ Mute = 'customMute',
+ PunishRoleAdd = 'punishRoleAdd',
+ PunishRoleRemove = 'punishRoleRemove',
+ Purge = 'customPurge',
+ RemoveTimeout = 'customRemoveTimeout',
+ Timeout = 'customTimeout',
+ Unban = 'customUnban',
+ Unblock = 'customUnblock',
+ Unmute = 'customUnmute',
+ UpdateModlog = 'updateModlog',
+ UpdateSettings = 'updateSettings',
+ Warn = 'customWarn',
+ LevelUpdate = 'levelUpdate',
+ Lockdown = 'lockdown',
+ Unlockdown = 'unlockdown',
+ MassBan = 'massBan',
+ MassEvidence = 'massEvidence',
+ Button = 'button',
+ SelectMenu = 'selectMenu',
+ ModalSubmit = 'modal'
+}
+
+export interface BotClientEvents extends AkairoClientEvents {
+ [TanzaniteEvent.Ban]: [
victim: GuildMember | User,
moderator: User,
guild: Guild,
@@ -30,7 +51,7 @@ export interface BushClientEvents extends AkairoClientEvents {
dmSuccess?: boolean,
evidence?: string
];
- bushBlock: [
+ [TanzaniteEvent.Block]: [
victim: GuildMember,
moderator: User,
guild: Guild,
@@ -41,7 +62,7 @@ export interface BushClientEvents extends AkairoClientEvents {
channel: GuildTextBasedChannel,
evidence?: string
];
- bushKick: [
+ [TanzaniteEvent.Kick]: [
victim: GuildMember,
moderator: User,
guild: Guild,
@@ -50,7 +71,7 @@ export interface BushClientEvents extends AkairoClientEvents {
dmSuccess: boolean,
evidence?: string
];
- bushMute: [
+ [TanzaniteEvent.Mute]: [
victim: GuildMember,
moderator: User,
guild: Guild,
@@ -60,7 +81,7 @@ export interface BushClientEvents extends AkairoClientEvents {
dmSuccess: boolean,
evidence?: string
];
- bushPunishRole: [
+ [TanzaniteEvent.PunishRoleAdd]: [
victim: GuildMember,
moderator: User,
guild: Guild,
@@ -70,7 +91,7 @@ export interface BushClientEvents extends AkairoClientEvents {
role: Role,
evidence?: string
];
- bushPunishRoleRemove: [
+ [TanzaniteEvent.PunishRoleRemove]: [
victim: GuildMember,
moderator: User,
guild: Guild,
@@ -79,13 +100,13 @@ export interface BushClientEvents extends AkairoClientEvents {
role: Role,
evidence?: string
];
- bushPurge: [
+ [TanzaniteEvent.Purge]: [
moderator: User,
guild: Guild,
channel: GuildTextBasedChannel,
messages: Collection<Snowflake, Message>
];
- bushRemoveTimeout: [
+ [TanzaniteEvent.RemoveTimeout]: [
victim: GuildMember,
moderator: User,
guild: Guild,
@@ -94,7 +115,7 @@ export interface BushClientEvents extends AkairoClientEvents {
dmSuccess: boolean,
evidence?: string
];
- bushTimeout: [
+ [TanzaniteEvent.Timeout]: [
victim: GuildMember,
moderator: User,
guild: Guild,
@@ -104,7 +125,7 @@ export interface BushClientEvents extends AkairoClientEvents {
dmSuccess: boolean,
evidence?: string
];
- bushUnban: [
+ [TanzaniteEvent.Unban]: [
victim: User,
moderator: User,
guild: Guild,
@@ -113,7 +134,7 @@ export interface BushClientEvents extends AkairoClientEvents {
dmSuccess: boolean,
evidence?: string
];
- bushUnblock: [
+ [TanzaniteEvent.Unblock]: [
victim: GuildMember | User,
moderator: User,
guild: Guild,
@@ -123,7 +144,7 @@ export interface BushClientEvents extends AkairoClientEvents {
channel: GuildTextBasedChannel,
evidence?: string
];
- bushUnmute: [
+ [TanzaniteEvent.Unmute]: [
victim: GuildMember,
moderator: User,
guild: Guild,
@@ -132,21 +153,21 @@ export interface BushClientEvents extends AkairoClientEvents {
dmSuccess: boolean,
evidence?: string
];
- bushUpdateModlog: [
+ [TanzaniteEvent.UpdateModlog]: [
moderator: GuildMember,
modlogID: string,
key: 'evidence' | 'hidden',
oldModlog: string | boolean,
newModlog: string | boolean
];
- bushUpdateSettings: [
+ [TanzaniteEvent.UpdateSettings]: [
setting: Setting,
guild: Guild,
oldValue: GuildDB[Setting],
newValue: GuildDB[Setting],
moderator?: GuildMember
];
- bushWarn: [
+ [TanzaniteEvent.Warn]: [
victim: GuildMember,
moderator: User,
guild: Guild,
@@ -155,46 +176,36 @@ export interface BushClientEvents extends AkairoClientEvents {
dmSuccess: boolean,
evidence?: string
];
- bushLevelUpdate: [
+ [TanzaniteEvent.LevelUpdate]: [
member: GuildMember,
oldLevel: number,
newLevel: number,
currentXp: number,
message: CommandMessage
];
- bushLockdown: [
+ [TanzaniteEvent.Lockdown]: [
moderator: GuildMember,
reason: string | undefined,
channelsSuccessMap: Collection<Snowflake, boolean>,
all?: boolean
];
- bushUnlockdown: [
+ [TanzaniteEvent.Unlockdown]: [
moderator: GuildMember,
reason: string | undefined,
channelsSuccessMap: Collection<Snowflake, boolean>,
all?: boolean
];
- massBan: [
+ [TanzaniteEvent.MassBan]: [
moderator: GuildMember,
guild: Guild,
reason: string | undefined,
results: Collection<Snowflake, BanResponse>
];
- massEvidence: [
- moderator: GuildMember,
- guild: Guild,
- evidence: string,
- lines: string[]
- ];
+ [TanzaniteEvent.MassEvidence]: [moderator: GuildMember, guild: Guild, evidence: string, lines: string[]];
/* components */
- button: [button: ButtonInteraction];
- selectMenu: [selectMenu: SelectMenuInteraction];
- modal: [modal: ModalSubmitInteraction];
+ [TanzaniteEvent.Button]: [button: ButtonInteraction];
+ [TanzaniteEvent.SelectMenu]: [selectMenu: SelectMenuInteraction];
+ [TanzaniteEvent.ModalSubmit]: [modal: ModalSubmitInteraction];
}
-type Setting =
- | GuildSettings
- | 'enabledFeatures'
- | 'blacklistedChannels'
- | 'blacklistedUsers'
- | 'disabledCommands';
+type Setting = GuildSettings | 'enabledFeatures' | 'blacklistedChannels' | 'blacklistedUsers' | 'disabledCommands';
diff --git a/lib/extensions/discord.js/ExtendedGuild.ts b/lib/extensions/discord.js/ExtendedGuild.ts
index 20c3d29..67de5cf 100644
--- a/lib/extensions/discord.js/ExtendedGuild.ts
+++ b/lib/extensions/discord.js/ExtendedGuild.ts
@@ -6,6 +6,7 @@ import {
emojis,
permissionsResponse,
punishmentEntryRemove,
+ TanzaniteClient,
type BanResponse,
type GuildFeatures,
type GuildLogType,
@@ -13,7 +14,7 @@ import {
} from '#lib';
import * as Moderation from '#lib/common/Moderation.js';
import { Guild as GuildDB, ModLogType } from '#lib/models/index.js';
-import { addOrRemoveFromArray } from '#lib/utils/BushUtils.js';
+import { addOrRemoveFromArray } from '#lib/utils/Utils.js';
import assert from 'assert/strict';
import {
AttachmentBuilder,
@@ -42,8 +43,13 @@ import {
type WebhookMessageOptions
} from 'discord.js';
import _ from 'lodash';
+import { TanzaniteEvent } from './BotClientEvents.js';
declare module 'discord.js' {
+ export interface BaseGuild {
+ client: TanzaniteClient;
+ }
+
export interface Guild {
/**
* Checks if the guild has a certain custom feature.
@@ -93,7 +99,7 @@ declare module 'discord.js' {
/**
* Sends a message to the guild's specified logging channel
* @param logType The corresponding channel that the message will be sent to
- * @param message The parameters for {@link BushTextChannel.send}
+ * @param message The parameters for {@link TextChannel.send}
*/
sendLogChannel(logType: GuildLogType, message: string | MessagePayload | MessageOptions): Promise<Message | null | undefined>;
/**
@@ -107,15 +113,15 @@ declare module 'discord.js' {
* @param options Options for banning the user.
* @returns A string status message of the ban.
*/
- bushBan(options: GuildBushBanOptions): Promise<BanResponse>;
+ customBan(options: GuildCustomBanOptions): Promise<BanResponse>;
/**
- * {@link bushBan} with less resolving and checks
+ * {@link customBan} with less resolving and checks
* @param options Options for banning the user.
* @returns A string status message of the ban.
* **Preconditions:**
* - {@link me} has the `BanMembers` permission
* **Warning:**
- * - Doesn't emit bushBan Event
+ * - Doesn't emit customBan Event
*/
massBanOne(options: GuildMassBanOneOptions): Promise<BanResponse>;
/**
@@ -123,7 +129,7 @@ declare module 'discord.js' {
* @param options Options for unbanning the user.
* @returns A status message of the unban.
*/
- bushUnban(options: GuildBushUnbanOptions): Promise<UnbanResponse>;
+ customUnban(options: GuildCustomUnbanOptions): Promise<UnbanResponse>;
/**
* Denies send permissions in specified channels
* @param options The options for locking down the guild
@@ -207,7 +213,7 @@ export class ExtendedGuild extends Guild {
const oldValue = row[setting] as GuildDB[K];
row[setting] = value;
this.client.cache.guilds.set(this.id, row.toJSON() as GuildDB);
- this.client.emit('bushUpdateSettings', setting, this, oldValue, row[setting], moderator);
+ this.client.emit(TanzaniteEvent.UpdateSettings, setting, this, oldValue, row[setting], moderator);
return await row.save();
}
@@ -229,7 +235,7 @@ export class ExtendedGuild extends Guild {
/**
* Sends a message to the guild's specified logging channel
* @param logType The corresponding channel that the message will be sent to
- * @param message The parameters for {@link BushTextChannel.send}
+ * @param message The parameters for {@link TextChannel.send}
*/
public override async sendLogChannel(
logType: GuildLogType,
@@ -265,7 +271,7 @@ export class ExtendedGuild extends Guild {
* @param options Options for banning the user.
* @returns A string status message of the ban.
*/
- public override async bushBan(options: GuildBushBanOptions): Promise<BanResponse> {
+ public override async customBan(options: GuildCustomBanOptions): Promise<BanResponse> {
// checks
if (!this.members.me!.permissions.has(PermissionFlagsBits.BanMembers)) return banResponse.MISSING_PERMISSIONS;
@@ -330,7 +336,7 @@ export class ExtendedGuild extends Guild {
if (!([banResponse.ACTION_ERROR, banResponse.MODLOG_ERROR, banResponse.PUNISHMENT_ENTRY_ADD_ERROR] as const).includes(ret))
this.client.emit(
- 'bushBan',
+ TanzaniteEvent.Ban,
user,
moderator,
this,
@@ -344,13 +350,13 @@ export class ExtendedGuild extends Guild {
}
/**
- * {@link bushBan} with less resolving and checks
+ * {@link customBan} with less resolving and checks
* @param options Options for banning the user.
* @returns A string status message of the ban.
* **Preconditions:**
* - {@link me} has the `BanMembers` permission
* **Warning:**
- * - Doesn't emit bushBan Event
+ * - Doesn't emit customBan Event
*/
public override async massBanOne(options: GuildMassBanOneOptions): Promise<BanResponse> {
if (this.bans.cache.has(options.user)) return banResponse.ALREADY_BANNED;
@@ -414,7 +420,7 @@ export class ExtendedGuild extends Guild {
* @param options Options for unbanning the user.
* @returns A status message of the unban.
*/
- public override async bushUnban(options: GuildBushUnbanOptions): Promise<UnbanResponse> {
+ public override async customUnban(options: GuildCustomUnbanOptions): Promise<UnbanResponse> {
// checks
if (!this.members.me!.permissions.has(PermissionFlagsBits.BanMembers)) return unbanResponse.MISSING_PERMISSIONS;
@@ -483,7 +489,7 @@ export class ExtendedGuild extends Guild {
)
)
this.client.emit(
- 'bushUnban',
+ TanzaniteEvent.Unban,
user,
moderator,
this,
@@ -570,7 +576,13 @@ export class ExtendedGuild extends Guild {
else return `success: ${success.filter((c) => c === true).size}`;
})();
- this.client.emit(options.unlock ? 'bushUnlockdown' : 'bushLockdown', moderator, options.reason, success, options.all);
+ this.client.emit(
+ options.unlock ? TanzaniteEvent.Unlockdown : TanzaniteEvent.Lockdown,
+ moderator,
+ options.reason,
+ success,
+ options.all
+ );
return ret;
}
@@ -783,7 +795,7 @@ export class ExtendedGuild extends Guild {
/**
* Options for unbanning a user
*/
-export interface GuildBushUnbanOptions {
+export interface GuildCustomUnbanOptions {
/**
* The user to unban
*/
@@ -830,7 +842,7 @@ export interface GuildMassBanOneOptions {
/**
* Options for banning a user
*/
-export interface GuildBushBanOptions {
+export interface GuildCustomBanOptions {
/**
* The user to ban
*/
diff --git a/lib/extensions/discord.js/ExtendedGuildMember.ts b/lib/extensions/discord.js/ExtendedGuildMember.ts
index f8add83..172f6df 100644
--- a/lib/extensions/discord.js/ExtendedGuildMember.ts
+++ b/lib/extensions/discord.js/ExtendedGuildMember.ts
@@ -1,5 +1,14 @@
/* eslint-disable @typescript-eslint/no-unused-vars */
-import { formatError, Moderation, ModLogType, Time, type BushClientEvents, type PunishmentTypeDM, type ValueOf } from '#lib';
+import {
+ formatError,
+ Moderation,
+ ModLogType,
+ TanzaniteClient,
+ Time,
+ type BotClientEvents,
+ type PunishmentTypeDM,
+ type ValueOf
+} from '#lib';
import {
ChannelType,
GuildMember,
@@ -8,10 +17,13 @@ import {
type GuildTextBasedChannel,
type Role
} from 'discord.js';
+import { TanzaniteEvent } from './BotClientEvents.js';
/* eslint-enable @typescript-eslint/no-unused-vars */
declare module 'discord.js' {
export interface GuildMember {
+ client: TanzaniteClient;
+
/**
* Send a punishment dm to the user.
* @param punishment The punishment that the user has received.
@@ -21,7 +33,7 @@ declare module 'discord.js' {
* @param sendFooter Whether or not to send the guild's punishment footer with the dm.
* @returns Whether or not the dm was sent successfully.
*/
- bushPunishDM(
+ customPunishDM(
punishment: PunishmentTypeDM,
reason?: string | null,
duration?: number,
@@ -32,71 +44,71 @@ declare module 'discord.js' {
* Warn the user, create a modlog entry, and send a dm to the user.
* @param options Options for warning the user.
* @returns An object with the result of the warning, and the case number of the warn.
- * @emits {@link BushClientEvents.bushWarn}
+ * @emits {@link BotClientEvents.warnMember}
*/
- bushWarn(options: BushPunishmentOptions): Promise<{ result: WarnResponse; caseNum: number | null }>;
+ customWarn(options: CustomPunishmentOptions): Promise<{ result: WarnResponse; caseNum: number | null }>;
/**
* Add a role to the user, if it is a punishment create a modlog entry, and create a punishment entry if it is temporary or a punishment.
* @param options Options for adding a role to the user.
* @returns A status message for adding the add.
- * @emits {@link BushClientEvents.bushPunishRole}
+ * @emits {@link BotClientEvents.punishRole}
*/
- bushAddRole(options: AddRoleOptions): Promise<AddRoleResponse>;
+ customAddRole(options: AddRoleOptions): Promise<AddRoleResponse>;
/**
* Remove a role from the user, if it is a punishment create a modlog entry, and destroy a punishment entry if it was temporary or a punishment.
* @param options Options for removing a role from the user.
* @returns A status message for removing the role.
- * @emits {@link BushClientEvents.bushPunishRoleRemove}
+ * @emits {@link BotClientEvents.punishRoleRemove}
*/
- bushRemoveRole(options: RemoveRoleOptions): Promise<RemoveRoleResponse>;
+ customRemoveRole(options: RemoveRoleOptions): Promise<RemoveRoleResponse>;
/**
* Mute the user, create a modlog entry, creates a punishment entry, and dms the user.
* @param options Options for muting the user.
* @returns A status message for muting the user.
- * @emits {@link BushClientEvents.bushMute}
+ * @emits {@link BotClientEvents.customMute}
*/
- bushMute(options: BushTimedPunishmentOptions): Promise<MuteResponse>;
+ customMute(options: CustomTimedPunishmentOptions): Promise<MuteResponse>;
/**
* Unmute the user, create a modlog entry, remove the punishment entry, and dm the user.
* @param options Options for unmuting the user.
* @returns A status message for unmuting the user.
- * @emits {@link BushClientEvents.bushUnmute}
+ * @emits {@link BotClientEvents.customUnmute}
*/
- bushUnmute(options: BushPunishmentOptions): Promise<UnmuteResponse>;
+ customUnmute(options: CustomPunishmentOptions): Promise<UnmuteResponse>;
/**
* Kick the user, create a modlog entry, and dm the user.
* @param options Options for kicking the user.
* @returns A status message for kicking the user.
- * @emits {@link BushClientEvents.bushKick}
+ * @emits {@link BotClientEvents.customKick}
*/
- bushKick(options: BushPunishmentOptions): Promise<KickResponse>;
+ customKick(options: CustomPunishmentOptions): Promise<KickResponse>;
/**
* Ban the user, create a modlog entry, create a punishment entry, and dm the user.
* @param options Options for banning the user.
* @returns A status message for banning the user.
- * @emits {@link BushClientEvents.bushBan}
+ * @emits {@link BotClientEvents.customBan}
*/
- bushBan(options: BushBanOptions): Promise<Exclude<BanResponse, typeof banResponse['ALREADY_BANNED']>>;
+ customBan(options: CustomBanOptions): Promise<Exclude<BanResponse, typeof banResponse['ALREADY_BANNED']>>;
/**
* Prevents a user from speaking in a channel.
* @param options Options for blocking the user.
*/
- bushBlock(options: BlockOptions): Promise<BlockResponse>;
+ customBlock(options: BlockOptions): Promise<BlockResponse>;
/**
* Allows a user to speak in a channel.
* @param options Options for unblocking the user.
*/
- bushUnblock(options: UnblockOptions): Promise<UnblockResponse>;
+ customUnblock(options: UnblockOptions): Promise<UnblockResponse>;
/**
* Mutes a user using discord's timeout feature.
* @param options Options for timing out the user.
*/
- bushTimeout(options: BushTimeoutOptions): Promise<TimeoutResponse>;
+ customTimeout(options: CustomTimeoutOptions): Promise<TimeoutResponse>;
/**
* Removes a timeout from a user.
* @param options Options for removing the timeout.
*/
- bushRemoveTimeout(options: BushPunishmentOptions): Promise<RemoveTimeoutResponse>;
+ customRemoveTimeout(options: CustomPunishmentOptions): Promise<RemoveTimeoutResponse>;
/**
* Whether or not the user is an owner of the bot.
*/
@@ -121,7 +133,7 @@ export class ExtendedGuildMember extends GuildMember {
* @param sendFooter Whether or not to send the guild's punishment footer with the dm.
* @returns Whether or not the dm was sent successfully.
*/
- public override async bushPunishDM(
+ public override async customPunishDM(
punishment: PunishmentTypeDM,
reason?: string | null,
duration?: number,
@@ -144,9 +156,9 @@ export class ExtendedGuildMember extends GuildMember {
* Warn the user, create a modlog entry, and send a dm to the user.
* @param options Options for warning the user.
* @returns An object with the result of the warning, and the case number of the warn.
- * @emits {@link BushClientEvents.bushWarn}
+ * @emits {@link BotClientEvents.warnMember}
*/
- public override async bushWarn(options: BushPunishmentOptions): Promise<{ result: WarnResponse; caseNum: number | null }> {
+ public override async customWarn(options: CustomPunishmentOptions): Promise<{ result: WarnResponse; caseNum: number | null }> {
let caseID: string | undefined = undefined;
let dmSuccessEvent: boolean | undefined = undefined;
const moderator = await this.client.utils.resolveNonCachedUser(options.moderator ?? this.guild.members.me);
@@ -172,7 +184,7 @@ export class ExtendedGuildMember extends GuildMember {
if (!options.silent) {
// dm user
- const dmSuccess = await this.bushPunishDM('warned', options.reason);
+ const dmSuccess = await this.customPunishDM('warned', options.reason);
dmSuccessEvent = dmSuccess;
if (!dmSuccess) return { result: warnResponse.DM_ERROR, caseNum: result.caseNum };
}
@@ -180,7 +192,7 @@ export class ExtendedGuildMember extends GuildMember {
return { result: warnResponse.SUCCESS, caseNum: result.caseNum };
})();
if (!([warnResponse.MODLOG_ERROR] as const).includes(ret.result) && !options.silent)
- this.client.emit('bushWarn', this, moderator, this.guild, options.reason ?? undefined, caseID!, dmSuccessEvent!);
+ this.client.emit(TanzaniteEvent.Warn, this, moderator, this.guild, options.reason ?? undefined, caseID!, dmSuccessEvent!);
return ret;
}
@@ -188,9 +200,9 @@ export class ExtendedGuildMember extends GuildMember {
* Add a role to the user, if it is a punishment create a modlog entry, and create a punishment entry if it is temporary or a punishment.
* @param options Options for adding a role to the user.
* @returns A status message for adding the add.
- * @emits {@link BushClientEvents.bushPunishRole}
+ * @emits {@link BotClientEvents.punishRole}
*/
- public override async bushAddRole(options: AddRoleOptions): Promise<AddRoleResponse> {
+ public override async customAddRole(options: AddRoleOptions): Promise<AddRoleResponse> {
// checks
if (!this.guild.members.me!.permissions.has(PermissionFlagsBits.ManageRoles)) return addRoleResponse.MISSING_PERMISSIONS;
const ifShouldAddRole = this.#checkIfShouldAddRole(options.role, options.moderator);
@@ -244,7 +256,7 @@ export class ExtendedGuildMember extends GuildMember {
!options.silent
)
this.client.emit(
- 'bushPunishRole',
+ TanzaniteEvent.PunishRoleAdd,
this,
moderator,
this.guild,
@@ -261,9 +273,9 @@ export class ExtendedGuildMember extends GuildMember {
* Remove a role from the user, if it is a punishment create a modlog entry, and destroy a punishment entry if it was temporary or a punishment.
* @param options Options for removing a role from the user.
* @returns A status message for removing the role.
- * @emits {@link BushClientEvents.bushPunishRoleRemove}
+ * @emits {@link BotClientEvents.punishRoleRemove}
*/
- public override async bushRemoveRole(options: RemoveRoleOptions): Promise<RemoveRoleResponse> {
+ public override async customRemoveRole(options: RemoveRoleOptions): Promise<RemoveRoleResponse> {
// checks
if (!this.guild.members.me!.permissions.has(PermissionFlagsBits.ManageRoles)) return removeRoleResponse.MISSING_PERMISSIONS;
const ifShouldAddRole = this.#checkIfShouldAddRole(options.role, options.moderator);
@@ -318,7 +330,7 @@ export class ExtendedGuildMember extends GuildMember {
!options.silent
)
this.client.emit(
- 'bushPunishRoleRemove',
+ TanzaniteEvent.PunishRoleRemove,
this,
moderator,
this.guild,
@@ -354,9 +366,9 @@ export class ExtendedGuildMember extends GuildMember {
* Mute the user, create a modlog entry, creates a punishment entry, and dms the user.
* @param options Options for muting the user.
* @returns A status message for muting the user.
- * @emits {@link BushClientEvents.bushMute}
+ * @emits {@link BotClientEvents.customMute}
*/
- public override async bushMute(options: BushTimedPunishmentOptions): Promise<MuteResponse> {
+ public override async customMute(options: CustomTimedPunishmentOptions): Promise<MuteResponse> {
// checks
const checks = await Moderation.checkMutePermissions(this.guild);
if (checks !== true) return checks;
@@ -410,7 +422,7 @@ export class ExtendedGuildMember extends GuildMember {
if (!options.silent) {
// dm user
- const dmSuccess = await this.bushPunishDM('muted', options.reason, options.duration ?? 0, modlog.id);
+ const dmSuccess = await this.customPunishDM('muted', options.reason, options.duration ?? 0, modlog.id);
dmSuccessEvent = dmSuccess;
if (!dmSuccess) return muteResponse.DM_ERROR;
}
@@ -423,7 +435,7 @@ export class ExtendedGuildMember extends GuildMember {
!options.silent
)
this.client.emit(
- 'bushMute',
+ TanzaniteEvent.Mute,
this,
moderator,
this.guild,
@@ -440,9 +452,9 @@ export class ExtendedGuildMember extends GuildMember {
* Unmute the user, create a modlog entry, remove the punishment entry, and dm the user.
* @param options Options for unmuting the user.
* @returns A status message for unmuting the user.
- * @emits {@link BushClientEvents.bushUnmute}
+ * @emits {@link BotClientEvents.customUnmute}
*/
- public override async bushUnmute(options: BushPunishmentOptions): Promise<UnmuteResponse> {
+ public override async customUnmute(options: CustomPunishmentOptions): Promise<UnmuteResponse> {
// checks
const checks = await Moderation.checkMutePermissions(this.guild);
if (checks !== true) return checks;
@@ -492,7 +504,7 @@ export class ExtendedGuildMember extends GuildMember {
if (!options.silent) {
// dm user
- const dmSuccess = await this.bushPunishDM('unmuted', options.reason, undefined, '', false);
+ const dmSuccess = await this.customPunishDM('unmuted', options.reason, undefined, '', false);
dmSuccessEvent = dmSuccess;
if (!dmSuccess) return unmuteResponse.DM_ERROR;
}
@@ -507,7 +519,7 @@ export class ExtendedGuildMember extends GuildMember {
!options.silent
)
this.client.emit(
- 'bushUnmute',
+ TanzaniteEvent.Unmute,
this,
moderator,
this.guild,
@@ -523,9 +535,9 @@ export class ExtendedGuildMember extends GuildMember {
* Kick the user, create a modlog entry, and dm the user.
* @param options Options for kicking the user.
* @returns A status message for kicking the user.
- * @emits {@link BushClientEvents.bushKick}
+ * @emits {@link BotClientEvents.customKick}
*/
- public override async bushKick(options: BushPunishmentOptions): Promise<KickResponse> {
+ public override async customKick(options: CustomPunishmentOptions): Promise<KickResponse> {
// checks
if (!this.guild.members.me?.permissions.has(PermissionFlagsBits.KickMembers) || !this.kickable)
return kickResponse.MISSING_PERMISSIONS;
@@ -550,7 +562,7 @@ export class ExtendedGuildMember extends GuildMember {
caseID = modlog.id;
// dm user
- const dmSuccess = options.silent ? null : await this.bushPunishDM('kicked', options.reason, undefined, modlog.id);
+ const dmSuccess = options.silent ? null : await this.customPunishDM('kicked', options.reason, undefined, modlog.id);
dmSuccessEvent = dmSuccess ?? undefined;
// kick
@@ -562,7 +574,7 @@ export class ExtendedGuildMember extends GuildMember {
})();
if (!([kickResponse.ACTION_ERROR, kickResponse.MODLOG_ERROR] as const).includes(ret) && !options.silent)
this.client.emit(
- 'bushKick',
+ TanzaniteEvent.Kick,
this,
moderator,
this.guild,
@@ -578,9 +590,11 @@ export class ExtendedGuildMember extends GuildMember {
* Ban the user, create a modlog entry, create a punishment entry, and dm the user.
* @param options Options for banning the user.
* @returns A status message for banning the user.
- * @emits {@link BushClientEvents.bushBan}
+ * @emits {@link BotClientEvents.customBan}
*/
- public override async bushBan(options: BushBanOptions): Promise<Exclude<BanResponse, typeof banResponse['ALREADY_BANNED']>> {
+ public override async customBan(
+ options: CustomBanOptions
+ ): Promise<Exclude<BanResponse, typeof banResponse['ALREADY_BANNED']>> {
// checks
if (!this.guild.members.me!.permissions.has(PermissionFlagsBits.BanMembers) || !this.bannable)
return banResponse.MISSING_PERMISSIONS;
@@ -591,7 +605,7 @@ export class ExtendedGuildMember extends GuildMember {
if (!moderator) return banResponse.CANNOT_RESOLVE_USER;
// ignore result, they should still be banned even if their mute cannot be removed
- await this.bushUnmute({
+ await this.customUnmute({
reason: 'User is about to be banned, a mute is no longer necessary.',
moderator: this.guild.members.me!,
silent: true
@@ -616,7 +630,7 @@ export class ExtendedGuildMember extends GuildMember {
// dm user
const dmSuccess = options.silent
? null
- : await this.bushPunishDM('banned', options.reason, options.duration ?? 0, modlog.id);
+ : await this.customPunishDM('banned', options.reason, options.duration ?? 0, modlog.id);
dmSuccessEvent = dmSuccess ?? undefined;
// ban
@@ -645,7 +659,7 @@ export class ExtendedGuildMember extends GuildMember {
!options.silent
)
this.client.emit(
- 'bushBan',
+ TanzaniteEvent.Ban,
this,
moderator,
this.guild,
@@ -662,7 +676,7 @@ export class ExtendedGuildMember extends GuildMember {
* Prevents a user from speaking in a channel.
* @param options Options for blocking the user.
*/
- public override async bushBlock(options: BlockOptions): Promise<BlockResponse> {
+ public override async customBlock(options: BlockOptions): Promise<BlockResponse> {
const channel = this.guild.channels.resolve(options.channel);
if (!channel || (!channel.isTextBased() && !channel.isThread())) return blockResponse.INVALID_CHANNEL;
@@ -737,7 +751,7 @@ export class ExtendedGuildMember extends GuildMember {
!options.silent
)
this.client.emit(
- 'bushBlock',
+ TanzaniteEvent.Block,
this,
moderator,
this.guild,
@@ -755,7 +769,7 @@ export class ExtendedGuildMember extends GuildMember {
* Allows a user to speak in a channel.
* @param options Options for unblocking the user.
*/
- public override async bushUnblock(options: UnblockOptions): Promise<UnblockResponse> {
+ public override async customUnblock(options: UnblockOptions): Promise<UnblockResponse> {
const _channel = this.guild.channels.resolve(options.channel);
if (!_channel || (_channel.type !== ChannelType.GuildText && !_channel.isThread())) return unblockResponse.INVALID_CHANNEL;
const channel = _channel as GuildTextBasedChannel;
@@ -828,7 +842,7 @@ export class ExtendedGuildMember extends GuildMember {
!options.silent
)
this.client.emit(
- 'bushUnblock',
+ TanzaniteEvent.Unblock,
this,
moderator,
this.guild,
@@ -845,7 +859,7 @@ export class ExtendedGuildMember extends GuildMember {
* Mutes a user using discord's timeout feature.
* @param options Options for timing out the user.
*/
- public override async bushTimeout(options: BushTimeoutOptions): Promise<TimeoutResponse> {
+ public override async customTimeout(options: CustomTimeoutOptions): Promise<TimeoutResponse> {
// checks
if (!this.guild.members.me!.permissions.has(PermissionFlagsBits.ModerateMembers)) return timeoutResponse.MISSING_PERMISSIONS;
@@ -883,7 +897,7 @@ export class ExtendedGuildMember extends GuildMember {
if (!options.silent) {
// dm user
- const dmSuccess = await this.bushPunishDM('timedout', options.reason, options.duration, modlog.id);
+ const dmSuccess = await this.customPunishDM('timedout', options.reason, options.duration, modlog.id);
dmSuccessEvent = dmSuccess;
if (!dmSuccess) return timeoutResponse.DM_ERROR;
}
@@ -893,7 +907,7 @@ export class ExtendedGuildMember extends GuildMember {
if (!([timeoutResponse.ACTION_ERROR, timeoutResponse.MODLOG_ERROR] as const).includes(ret) && !options.silent)
this.client.emit(
- 'bushTimeout',
+ TanzaniteEvent.Timeout,
this,
moderator,
this.guild,
@@ -910,7 +924,7 @@ export class ExtendedGuildMember extends GuildMember {
* Removes a timeout from a user.
* @param options Options for removing the timeout.
*/
- public override async bushRemoveTimeout(options: BushPunishmentOptions): Promise<RemoveTimeoutResponse> {
+ public override async customRemoveTimeout(options: CustomPunishmentOptions): Promise<RemoveTimeoutResponse> {
// checks
if (!this.guild.members.me!.permissions.has(PermissionFlagsBits.ModerateMembers))
return removeTimeoutResponse.MISSING_PERMISSIONS;
@@ -944,7 +958,7 @@ export class ExtendedGuildMember extends GuildMember {
if (!options.silent) {
// dm user
- const dmSuccess = await this.bushPunishDM('untimedout', options.reason, undefined, '', false);
+ const dmSuccess = await this.customPunishDM('untimedout', options.reason, undefined, '', false);
dmSuccessEvent = dmSuccess;
if (!dmSuccess) return removeTimeoutResponse.DM_ERROR;
}
@@ -954,7 +968,7 @@ export class ExtendedGuildMember extends GuildMember {
if (!([removeTimeoutResponse.ACTION_ERROR, removeTimeoutResponse.MODLOG_ERROR] as const).includes(ret) && !options.silent)
this.client.emit(
- 'bushRemoveTimeout',
+ TanzaniteEvent.RemoveTimeout,
this,
moderator,
this.guild,
@@ -984,7 +998,7 @@ export class ExtendedGuildMember extends GuildMember {
/**
* Options for punishing a user.
*/
-export interface BushPunishmentOptions {
+export interface CustomPunishmentOptions {
/**
* The reason for the punishment.
*/
@@ -1009,7 +1023,7 @@ export interface BushPunishmentOptions {
/**
* Punishment options for punishments that can be temporary.
*/
-export interface BushTimedPunishmentOptions extends BushPunishmentOptions {
+export interface CustomTimedPunishmentOptions extends CustomPunishmentOptions {
/**
* The duration of the punishment.
*/
@@ -1019,7 +1033,7 @@ export interface BushTimedPunishmentOptions extends BushPunishmentOptions {
/**
* Options for a role add punishment.
*/
-export interface AddRoleOptions extends BushTimedPunishmentOptions {
+export interface AddRoleOptions extends CustomTimedPunishmentOptions {
/**
* The role to add to the user.
*/
@@ -1034,7 +1048,7 @@ export interface AddRoleOptions extends BushTimedPunishmentOptions {
/**
* Options for a role remove punishment.
*/
-export interface RemoveRoleOptions extends BushTimedPunishmentOptions {
+export interface RemoveRoleOptions extends CustomTimedPunishmentOptions {
/**
* The role to remove from the user.
*/
@@ -1049,7 +1063,7 @@ export interface RemoveRoleOptions extends BushTimedPunishmentOptions {
/**
* Options for banning a user.
*/
-export interface BushBanOptions extends BushTimedPunishmentOptions {
+export interface CustomBanOptions extends CustomTimedPunishmentOptions {
/**
* The number of days to delete the user's messages for.
*/
@@ -1059,7 +1073,7 @@ export interface BushBanOptions extends BushTimedPunishmentOptions {
/**
* Options for blocking a user from a channel.
*/
-export interface BlockOptions extends BushTimedPunishmentOptions {
+export interface BlockOptions extends CustomTimedPunishmentOptions {
/**
* The channel to block the user from.
*/
@@ -1069,7 +1083,7 @@ export interface BlockOptions extends BushTimedPunishmentOptions {
/**
* Options for unblocking a user from a channel.
*/
-export interface UnblockOptions extends BushPunishmentOptions {
+export interface UnblockOptions extends CustomPunishmentOptions {
/**
* The channel to unblock the user from.
*/
@@ -1079,7 +1093,7 @@ export interface UnblockOptions extends BushPunishmentOptions {
/**
* Punishment options for punishments that can be temporary.
*/
-export interface BushTimeoutOptions extends BushPunishmentOptions {
+export interface CustomTimeoutOptions extends CustomPunishmentOptions {
/**
* The duration of the punishment.
*/
@@ -1251,5 +1265,5 @@ export type TimeoutResponse = ValueOf<typeof timeoutResponse>;
export type RemoveTimeoutResponse = ValueOf<typeof removeTimeoutResponse>;
/**
- * @typedef {BushClientEvents} VSCodePleaseDontRemove
+ * @typedef {BotClientEvents} VSCodePleaseDontRemove
*/
diff --git a/lib/extensions/discord.js/ExtendedUser.ts b/lib/extensions/discord.js/ExtendedUser.ts
index 23de523..65b14c7 100644
--- a/lib/extensions/discord.js/ExtendedUser.ts
+++ b/lib/extensions/discord.js/ExtendedUser.ts
@@ -1,4 +1,4 @@
-import { User, type Partialize } from 'discord.js';
+import { User } from 'discord.js';
declare module 'discord.js' {
export interface User {
@@ -13,8 +13,6 @@ declare module 'discord.js' {
}
}
-export type PartialBushUser = Partialize<ExtendedUser, 'username' | 'tag' | 'discriminator' | 'isOwner' | 'isSuperUser'>;
-
/**
* Represents a user on Discord.
*/
diff --git a/lib/index.ts b/lib/index.ts
index ca23177..fc7bb4c 100644
--- a/lib/index.ts
+++ b/lib/index.ts
@@ -1,10 +1,9 @@
import './global.js';
-
export * from './automod/AutomodShared.js';
export * from './automod/MemberAutomod.js';
export * from './automod/MessageAutomod.js';
export * from './automod/PresenceAutomod.js';
-export * from './common/BushCache.js';
+export * from './common/BotCache.js';
export * from './common/ButtonPaginator.js';
export * from './common/CanvasProgressBar.js';
export * from './common/ConfirmationPrompt.js';
@@ -20,42 +19,32 @@ export type {
RemovePunishmentEntryOptions,
SimpleCreateModLogEntryOptions
} from './common/Moderation.js';
-export * from './extensions/discord-akairo/BushArgumentTypeCaster.js';
-export * from './extensions/discord-akairo/BushClient.js';
-export * from './extensions/discord-akairo/BushCommand.js';
-export * from './extensions/discord-akairo/BushCommandHandler.js';
-export * from './extensions/discord-akairo/BushInhibitor.js';
-export * from './extensions/discord-akairo/BushInhibitorHandler.js';
-export * from './extensions/discord-akairo/BushListener.js';
-export * from './extensions/discord-akairo/BushListenerHandler.js';
-export * from './extensions/discord-akairo/BushTask.js';
-export * from './extensions/discord-akairo/BushTaskHandler.js';
+export * from './extensions/discord-akairo/BotArgumentTypeCaster.js';
+export * from './extensions/discord-akairo/BotCommand.js';
+export * from './extensions/discord-akairo/BotCommandHandler.js';
+export * from './extensions/discord-akairo/BotInhibitor.js';
+export * from './extensions/discord-akairo/BotInhibitorHandler.js';
+export * from './extensions/discord-akairo/BotListener.js';
+export * from './extensions/discord-akairo/BotListenerHandler.js';
+export * from './extensions/discord-akairo/BotTask.js';
+export * from './extensions/discord-akairo/BotTaskHandler.js';
export * from './extensions/discord-akairo/SlashMessage.js';
-export type { BushClientEvents } from './extensions/discord.js/BushClientEvents.js';
+export * from './extensions/discord-akairo/TanzaniteClient.js';
+export * from './extensions/discord.js/BotClientEvents.js';
export * from './extensions/discord.js/ExtendedGuild.js';
export * from './extensions/discord.js/ExtendedGuildMember.js';
export * from './extensions/discord.js/ExtendedMessage.js';
export * from './extensions/discord.js/ExtendedUser.js';
-export * from './models/BaseModel.js';
-export * from './models/instance/ActivePunishment.js';
-export * from './models/instance/Guild.js';
-export * from './models/instance/Highlight.js';
-export * from './models/instance/Level.js';
-export * from './models/instance/ModLog.js';
-export * from './models/instance/Reminder.js';
-export * from './models/instance/StickyRole.js';
-export * from './models/shared/Global.js';
-export * from './models/shared/MemberCount.js';
-export * from './models/shared/Shared.js';
-export * from './models/shared/Stat.js';
-export type { BushInspectOptions } from './types/BushInspectOptions.js';
+export * from './models/index.js';
export type { CodeBlockLang } from './types/CodeBlockLang.js';
+export type { CustomInspectOptions } from './types/InspectOptions.js';
+export * from './types/misc.js';
export * from './utils/AllowedMentions.js';
export * as Arg from './utils/Arg.js';
-export * from './utils/BushConstants.js';
-export * from './utils/BushLogger.js';
-export * from './utils/BushUtils.js';
+export * from './utils/Constants.js';
export * from './utils/ErrorHandler.js';
export * as Format from './utils/Format.js';
export * from './utils/FormatResponse.js';
+export * from './utils/Logger.js';
export * from './utils/UpdateCache.js';
+export * from './utils/Utils.js';
diff --git a/lib/models/instance/Guild.ts b/lib/models/instance/Guild.ts
index 763485f..72091ca 100644
--- a/lib/models/instance/Guild.ts
+++ b/lib/models/instance/Guild.ts
@@ -1,6 +1,6 @@
import config from '#config';
import { BadWordDetails } from '#lib/automod/AutomodShared.js';
-import { type BushClient } from '#lib/extensions/discord-akairo/BushClient.js';
+import { type TanzaniteClient } from '#lib/extensions/discord-akairo/TanzaniteClient.js';
import { ChannelType, Constants, type Snowflake } from 'discord.js';
import { DataTypes, type Sequelize } from 'sequelize';
import { BaseModel } from '../BaseModel.js';
@@ -145,7 +145,7 @@ export class Guild extends BaseModel<GuildModel, GuildModelCreationAttributes> i
* Initializes the model.
* @param sequelize The sequelize instance.
*/
- public static initModel(sequelize: Sequelize, client: BushClient): void {
+ public static initModel(sequelize: Sequelize, client: TanzaniteClient): void {
Guild.init(
{
id: { type: DataTypes.STRING, primaryKey: true },
diff --git a/lib/types/BushInspectOptions.ts b/lib/types/BushInspectOptions.ts
deleted file mode 100644
index 30ed01a..0000000
--- a/lib/types/BushInspectOptions.ts
+++ /dev/null
@@ -1,123 +0,0 @@
-import { type InspectOptions } from 'util';
-
-/**
- * {@link https://nodejs.org/api/util.html#utilinspectobject-showhidden-depth-colors util.inspect Options Documentation}
- */
-export interface BushInspectOptions extends InspectOptions {
- /**
- * If `true`, object's non-enumerable symbols and properties are included in the
- * formatted result. [`WeakMap`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/WeakMap)
- * and [`WeakSet`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/WeakSet) entries
- * are also included as well as user defined prototype properties (excluding method properties).
- *
- * @default false
- */
- showHidden?: boolean | undefined;
-
- /**
- * Specifies the number of times to recurse while formatting `object`. This is useful
- * for inspecting large objects. To recurse up to the maximum call stack size pass
- * `Infinity` or `null`.
- *
- * @default 2
- */
- depth?: number | null | undefined;
-
- /**
- * If `true`, the output is styled with ANSI color codes. Colors are customizable. See
- * [Customizing util.inspect colors](https://nodejs.org/api/util.html#util_customizing_util_inspect_colors).
- *
- * @default false
- */
- colors?: boolean | undefined;
-
- /**
- * If `false`, `[util.inspect.custom](depth, opts)` functions are not invoked.
- *
- * @default true
- */
- customInspect?: boolean | undefined;
-
- /**
- * If `true`, `Proxy` inspection includes the
- * [`target` and `handler`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Proxy#Terminology)
- * objects.
- *
- * @default false
- */
- showProxy?: boolean | undefined;
-
- /**
- * Specifies the maximum number of `Array`, [`TypedArray`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/TypedArray),
- * [`WeakMap`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/WeakMap) and
- * [`WeakSet`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/WeakSet) elements to
- * include when formatting. Set to `null` or `Infinity` to show all elements.
- * Set to `0` or negative to show no elements.
- *
- * @default 100
- */
- maxArrayLength?: number | null | undefined;
-
- /**
- * Specifies the maximum number of characters to include when formatting. Set to
- * `null` or `Infinity` to show all elements. Set to `0` or negative to show no
- * characters.
- *
- * @default 10000
- */
- maxStringLength?: number | null | undefined;
-
- /**
- * The length at which input values are split across multiple lines. Set to
- * `Infinity` to format the input as a single line (in combination with compact set
- * to `true` or any number >= `1`).
- *
- * @default 80
- */
- breakLength?: number | undefined;
-
- /**
- * Setting this to `false` causes each object key to be displayed on a new line. It
- * will break on new lines in text that is longer than `breakLength`. If set to a
- * number, the most `n` inner elements are united on a single line as long as all
- * properties fit into `breakLength`. Short array elements are also grouped together.
- *
- * @default 3
- */
- compact?: boolean | number | undefined;
-
- /**
- * If set to `true` or a function, all properties of an object, and `Set` and `Map`
- * entries are sorted in the resulting string. If set to `true` the
- * [default sort](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort) is used.
- * If set to a function, it is used as a
- * [compare function](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort#parameters).
- *
- * @default false
- */
- sorted?: boolean | ((a: string, b: string) => number) | undefined;
-
- /**
- * If set to `true`, getters are inspected. If set to `'get'`, only getters without a
- * corresponding setter are inspected. If set to `'set'`, only getters with a
- * corresponding setter are inspected. This might cause side effects depending on
- * the getter function.
- *
- * @default false
- */
- getters?: 'get' | 'set' | boolean | undefined;
-
- /**
- * If set to `true`, an underscore is used to separate every three digits in all bigints and numbers.
- *
- * @default false
- */
- numericSeparator?: boolean;
-
- /**
- * Whether or not to inspect strings.
- *
- * @default false
- */
- inspectStrings?: boolean;
-}
diff --git a/lib/types/InspectOptions.ts b/lib/types/InspectOptions.ts
new file mode 100644
index 0000000..1113f2b
--- /dev/null
+++ b/lib/types/InspectOptions.ts
@@ -0,0 +1,127 @@
+import { InspectOptions } from 'node:util';
+
+declare module 'util' {
+ /**
+ * {@link https://nodejs.org/api/util.html#utilinspectobject-showhidden-depth-colors util.inspect Options Documentation}
+ */
+ export interface InspectOptions {
+ /**
+ * If `true`, object's non-enumerable symbols and properties are included in the
+ * formatted result. [`WeakMap`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/WeakMap)
+ * and [`WeakSet`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/WeakSet) entries
+ * are also included as well as user defined prototype properties (excluding method properties).
+ *
+ * @default false
+ */
+ showHidden?: boolean | undefined;
+
+ /**
+ * Specifies the number of times to recurse while formatting `object`. This is useful
+ * for inspecting large objects. To recurse up to the maximum call stack size pass
+ * `Infinity` or `null`.
+ *
+ * @default 2
+ */
+ depth?: number | null | undefined;
+
+ /**
+ * If `true`, the output is styled with ANSI color codes. Colors are customizable. See
+ * [Customizing util.inspect colors](https://nodejs.org/api/util.html#util_customizing_util_inspect_colors).
+ *
+ * @default false
+ */
+ colors?: boolean | undefined;
+
+ /**
+ * If `false`, `[util.inspect.custom](depth, opts)` functions are not invoked.
+ *
+ * @default true
+ */
+ customInspect?: boolean | undefined;
+
+ /**
+ * If `true`, `Proxy` inspection includes the
+ * [`target` and `handler`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Proxy#Terminology)
+ * objects.
+ *
+ * @default false
+ */
+ showProxy?: boolean | undefined;
+
+ /**
+ * Specifies the maximum number of `Array`, [`TypedArray`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/TypedArray),
+ * [`WeakMap`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/WeakMap) and
+ * [`WeakSet`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/WeakSet) elements to
+ * include when formatting. Set to `null` or `Infinity` to show all elements.
+ * Set to `0` or negative to show no elements.
+ *
+ * @default 100
+ */
+ maxArrayLength?: number | null | undefined;
+
+ /**
+ * Specifies the maximum number of characters to include when formatting. Set to
+ * `null` or `Infinity` to show all elements. Set to `0` or negative to show no
+ * characters.
+ *
+ * @default 10000
+ */
+ maxStringLength?: number | null | undefined;
+
+ /**
+ * The length at which input values are split across multiple lines. Set to
+ * `Infinity` to format the input as a single line (in combination with compact set
+ * to `true` or any number >= `1`).
+ *
+ * @default 80
+ */
+ breakLength?: number | undefined;
+
+ /**
+ * Setting this to `false` causes each object key to be displayed on a new line. It
+ * will break on new lines in text that is longer than `breakLength`. If set to a
+ * number, the most `n` inner elements are united on a single line as long as all
+ * properties fit into `breakLength`. Short array elements are also grouped together.
+ *
+ * @default 3
+ */
+ compact?: boolean | number | undefined;
+
+ /**
+ * If set to `true` or a function, all properties of an object, and `Set` and `Map`
+ * entries are sorted in the resulting string. If set to `true` the
+ * [default sort](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort) is used.
+ * If set to a function, it is used as a
+ * [compare function](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort#parameters).
+ *
+ * @default false
+ */
+ sorted?: boolean | ((a: string, b: string) => number) | undefined;
+
+ /**
+ * If set to `true`, getters are inspected. If set to `'get'`, only getters without a
+ * corresponding setter are inspected. If set to `'set'`, only getters with a
+ * corresponding setter are inspected. This might cause side effects depending on
+ * the getter function.
+ *
+ * @default false
+ */
+ getters?: 'get' | 'set' | boolean | undefined;
+
+ /**
+ * If set to `true`, an underscore is used to separate every three digits in all bigints and numbers.
+ *
+ * @default false
+ */
+ numericSeparator?: boolean;
+ }
+}
+
+export interface CustomInspectOptions extends InspectOptions {
+ /**
+ * Whether or not to inspect strings.
+ *
+ * @default false
+ */
+ inspectStrings?: boolean;
+}
diff --git a/lib/types/misc.ts b/lib/types/misc.ts
new file mode 100644
index 0000000..5bf760c
--- /dev/null
+++ b/lib/types/misc.ts
@@ -0,0 +1,14 @@
+import type {
+ InteractionReplyOptions,
+ MessageEditOptions,
+ MessageOptions,
+ MessagePayload,
+ ReplyMessageOptions,
+ WebhookEditMessageOptions
+} from 'discord.js';
+
+export type ReplyMessageType = string | MessagePayload | ReplyMessageOptions;
+export type EditMessageType = string | MessageEditOptions | MessagePayload;
+export type SlashSendMessageType = string | MessagePayload | InteractionReplyOptions;
+export type SlashEditMessageType = string | MessagePayload | WebhookEditMessageOptions;
+export type SendMessageType = string | MessagePayload | MessageOptions;
diff --git a/lib/utils/Arg.ts b/lib/utils/Arg.ts
index d362225..99060fb 100644
--- a/lib/utils/Arg.ts
+++ b/lib/utils/Arg.ts
@@ -1,7 +1,7 @@
import {
- type BaseBushArgumentType,
- type BushArgumentType,
- type BushArgumentTypeCaster,
+ type BaseBotArgumentType,
+ type BotArgumentType,
+ type BotArgumentTypeCaster,
type CommandMessage,
type SlashMessage
} from '#lib';
@@ -160,33 +160,33 @@ export function withInput(type: AT | ATC): ATC {
return Argument.withInput(type as any);
}
-type BushArgumentTypeCasterReturn<R> = R extends BushArgumentTypeCaster<infer S> ? S : R;
+type CustomArgumentTypeCasterReturn<R> = R extends BotArgumentTypeCaster<infer S> ? S : R;
/** ```ts
- * <R = unknown> = BushArgumentTypeCaster<R>
+ * <R = unknown> = CustomArgumentTypeCaster<R>
* ``` */
-type ATC<R = unknown> = BushArgumentTypeCaster<R>;
+type ATC<R = unknown> = BotArgumentTypeCaster<R>;
/** ```ts
- * keyof BaseBushArgumentType
+ * keyof BaseCustomArgumentType
* ``` */
-type KBAT = keyof BaseBushArgumentType;
+type KBAT = keyof BaseBotArgumentType;
/** ```ts
- * <R> = BushArgumentTypeCasterReturn<R>
+ * <R> = CustomArgumentTypeCasterReturn<R>
* ``` */
-type ATCR<R> = BushArgumentTypeCasterReturn<R>;
+type ATCR<R> = CustomArgumentTypeCasterReturn<R>;
/** ```ts
- * BushArgumentType
+ * CustomArgumentType
* ``` */
-type AT = BushArgumentType;
+type AT = BotArgumentType;
/** ```ts
- * BaseBushArgumentType
+ * BaseCustomArgumentType
* ``` */
-type BAT = BaseBushArgumentType;
+type BAT = BaseBotArgumentType;
/** ```ts
- * <T extends BushArgumentTypeCaster> = BushArgumentTypeCaster<BushArgumentTypeCasterReturn<T>>
+ * <T extends CustomArgumentTypeCaster> = CustomArgumentTypeCaster<CustomArgumentTypeCasterReturn<T>>
* ``` */
-type ATCATCR<T extends BushArgumentTypeCaster> = BushArgumentTypeCaster<BushArgumentTypeCasterReturn<T>>;
+type ATCATCR<T extends BotArgumentTypeCaster> = BotArgumentTypeCaster<CustomArgumentTypeCasterReturn<T>>;
/** ```ts
- * <T extends keyof BaseBushArgumentType> = BushArgumentTypeCaster<BaseBushArgumentType[T]>
+ * <T extends keyof BaseCustomArgumentType> = CustomArgumentTypeCaster<BaseCustomArgumentType[T]>
* ``` */
-type ATCBAT<T extends keyof BaseBushArgumentType> = BushArgumentTypeCaster<BaseBushArgumentType[T]>;
+type ATCBAT<T extends keyof BaseBotArgumentType> = BotArgumentTypeCaster<BaseBotArgumentType[T]>;
diff --git a/lib/utils/BushClientUtils.ts b/lib/utils/BotClientUtils.ts
index e468cd7..a251bdf 100644
--- a/lib/utils/BushClientUtils.ts
+++ b/lib/utils/BotClientUtils.ts
@@ -1,7 +1,7 @@
import { ConfigChannelKey } from '#config';
-import type { BushInspectOptions, CodeBlockLang } from '#lib';
-import { GlobalCache, SharedCache } from '#lib/common/BushCache.js';
-import { CommandMessage } from '#lib/extensions/discord-akairo/BushCommand.js';
+import type { CodeBlockLang, CustomInspectOptions } from '#lib';
+import { GlobalCache, SharedCache } from '#lib/common/BotCache.js';
+import { CommandMessage } from '#lib/extensions/discord-akairo/BotCommand.js';
import { SlashMessage } from '#lib/extensions/discord-akairo/SlashMessage.js';
import { Global, Shared } from '#lib/models/index.js';
import assert from 'assert/strict';
@@ -22,14 +22,14 @@ import {
type UserResolvable
} from 'discord.js';
import _ from 'lodash';
-import { emojis, Pronoun, PronounCode, pronounMapping, regex } from './BushConstants.js';
-import { addOrRemoveFromArray, formatError, inspect } from './BushUtils.js';
+import { emojis, Pronoun, PronounCode, pronounMapping, regex } from './Constants.js';
import { generateErrorEmbed } from './ErrorHandler.js';
+import { addOrRemoveFromArray, formatError, inspect } from './Utils.js';
/**
* Utilities that require access to the client.
*/
-export class BushClientUtils {
+export class BotClientUtils {
/**
* The hastebin urls used to post to hastebin, attempts to post in order
*/
@@ -185,14 +185,14 @@ export class BushClientUtils {
* (and uploads to hast if the content is too long).
* @param input The object to be inspect, redacted, and put into a codeblock.
* @param language The language to make the codeblock.
- * @param inspectOptions The options for {@link BushClientUtil.inspect}.
+ * @param inspectOptions The options for {@link CustomClientUtil.inspect}.
* @param length The maximum length that the codeblock can be.
* @returns The generated codeblock.
*/
public async inspectCleanRedactCodeblock(
input: any,
language?: CodeBlockLang | '',
- inspectOptions?: BushInspectOptions,
+ inspectOptions?: CustomInspectOptions,
length = 1024
) {
input = inspect(input, inspectOptions ?? undefined);
@@ -205,10 +205,10 @@ export class BushClientUtils {
/**
* Takes an any value, inspects it, redacts credentials, and uploads it to haste.
* @param input The object to be inspect, redacted, and upload.
- * @param inspectOptions The options for {@link BushClientUtil.inspect}.
+ * @param inspectOptions The options for {@link BotClientUtils.inspect}.
* @returns The {@link HasteResults}.
*/
- public async inspectCleanRedactHaste(input: any, inspectOptions?: BushInspectOptions): Promise<HasteResults> {
+ public async inspectCleanRedactHaste(input: any, inspectOptions?: CustomInspectOptions): Promise<HasteResults> {
input = inspect(input, inspectOptions ?? undefined);
input = this.redact(input);
return this.haste(input, true);
@@ -217,10 +217,10 @@ export class BushClientUtils {
/**
* Takes an any value, inspects it and redacts credentials.
* @param input The object to be inspect and redacted.
- * @param inspectOptions The options for {@link BushClientUtil.inspect}.
+ * @param inspectOptions The options for {@link BotClientUtils.inspect}.
* @returns The redacted and inspected object.
*/
- public inspectAndRedact(input: any, inspectOptions?: BushInspectOptions): string {
+ public inspectAndRedact(input: any, inspectOptions?: CustomInspectOptions): string {
input = inspect(input, inspectOptions ?? undefined);
return this.redact(input);
}
diff --git a/lib/utils/BushConstants.ts b/lib/utils/Constants.ts
index 8e4871b..8e4871b 100644
--- a/lib/utils/BushConstants.ts
+++ b/lib/utils/Constants.ts
diff --git a/lib/utils/ErrorHandler.ts b/lib/utils/ErrorHandler.ts
index 923da75..3f8be89 100644
--- a/lib/utils/ErrorHandler.ts
+++ b/lib/utils/ErrorHandler.ts
@@ -1,14 +1,14 @@
import { AkairoMessage, Command } from 'discord-akairo';
import { ChannelType, Client, EmbedBuilder, escapeInlineCode, GuildTextBasedChannel, Message } from 'discord.js';
-import { BushCommandHandlerEvents } from '../extensions/discord-akairo/BushCommandHandler.js';
+import { BotCommandHandlerEvents } from '../extensions/discord-akairo/BotCommandHandler.js';
import { SlashMessage } from '../extensions/discord-akairo/SlashMessage.js';
-import { colors } from './BushConstants.js';
-import { capitalize, formatError } from './BushUtils.js';
+import { colors } from './Constants.js';
import { bold, input } from './Format.js';
+import { capitalize, formatError } from './Utils.js';
export async function handleCommandError(
client: Client,
- ...[error, message, _command]: BushCommandHandlerEvents['error'] | BushCommandHandlerEvents['slashError']
+ ...[error, message, _command]: BotCommandHandlerEvents['error'] | BotCommandHandlerEvents['slashError']
) {
try {
const isSlash = message.util?.isSlash;
diff --git a/lib/utils/FormatResponse.ts b/lib/utils/FormatResponse.ts
index f094601..470fea7 100644
--- a/lib/utils/FormatResponse.ts
+++ b/lib/utils/FormatResponse.ts
@@ -1,8 +1,8 @@
import type { GuildMember } from 'discord.js';
import { unmuteResponse, UnmuteResponse } from '../extensions/discord.js/ExtendedGuildMember.js';
-import { emojis } from './BushConstants.js';
-import { format } from './BushUtils.js';
+import { emojis } from './Constants.js';
import { input } from './Format.js';
+import { format } from './Utils.js';
export function formatUnmuteResponse(prefix: string, member: GuildMember, code: UnmuteResponse): string {
const error = emojis.error;
diff --git a/lib/utils/BushLogger.ts b/lib/utils/Logger.ts
index f575b50..872ff3e 100644
--- a/lib/utils/BushLogger.ts
+++ b/lib/utils/Logger.ts
@@ -1,12 +1,11 @@
import chalk from 'chalk';
-// eslint-disable-next-line @typescript-eslint/no-unused-vars
-import { type SendMessageType } from '#lib/extensions/discord-akairo/BushClient.js';
import { bold, Client, EmbedBuilder, escapeMarkdown, PartialTextBasedChannelFields, type Message } from 'discord.js';
import { stripVTControlCharacters as stripColor } from 'node:util';
import repl, { REPLServer, REPL_MODE_STRICT } from 'repl';
import { WriteStream } from 'tty';
-import { colors } from './BushConstants.js';
-import { inspect } from './BushUtils.js';
+import type { SendMessageType } from '../types/misc.js';
+import { colors } from './Constants.js';
+import { inspect } from './Utils.js';
let REPL: REPLServer;
let replGone = false;
@@ -25,7 +24,7 @@ export function init() {
});
const apply = (stream: WriteStream, symbol: symbol): ProxyHandler<typeof console['log']>['apply'] =>
- function apply(target, thisArg, args) {
+ function apply(target, _thisArg, args) {
if (stream.isTTY) {
stream.moveCursor(0, -1);
stream.write('\n');
@@ -121,7 +120,7 @@ function pad(num: number) {
/**
* Custom logging utility for the bot.
*/
-export class BushLogger {
+export class Logger {
/**
* @param client The client.
*/
diff --git a/lib/utils/Minecraft.ts b/lib/utils/Minecraft.ts
index 50c44ef..e189b66 100644
--- a/lib/utils/Minecraft.ts
+++ b/lib/utils/Minecraft.ts
@@ -2,10 +2,6 @@
import { Byte, Int } from '@ironm00n/nbt-ts';
import { BitField } from 'discord.js';
-import path from 'path';
-import { fileURLToPath } from 'url';
-
-const __dirname = path.dirname(fileURLToPath(import.meta.url));
export enum FormattingCodes {
Black = '§0',
diff --git a/lib/utils/Minecraft_Test.ts b/lib/utils/Minecraft_Test.ts
index fce9d5b..7dae3f6 100644
--- a/lib/utils/Minecraft_Test.ts
+++ b/lib/utils/Minecraft_Test.ts
@@ -110,7 +110,7 @@ export class NeuItem {
this.petLoreReplacements();
}
- private petLoreReplacements(level = -1) {
+ private petLoreReplacements(_level = -1) {
if (/.*?;[0-5]$/.test(this.internalName) && this.displayName.includes('LVL')) {
const maxLevel = neuPets?.custom_pet_leveling?.[this.internalName]?.max_level ?? 100;
this.displayName = this.displayName.replace('LVL', `1➡${maxLevel}`);
@@ -122,14 +122,14 @@ export class NeuItem {
const petInfoTier = nums[teir];
if (!petInfoTier) throw new Error(`Pet (${this.internalName}) has no pet nums for ${teir} rarity.`);
- const curve = petInfoTier?.stats_levelling_curve?.split(';');
+ // const curve = petInfoTier?.stats_levelling_curve?.split(';');
// todo: finish copying from neu
- const minStatsLevel = parseInt(curve?.[0] ?? '0');
- const maxStatsLevel = parseInt(curve?.[0] ?? '100');
+ // const minStatsLevel = parseInt(curve?.[0] ?? '0');
+ // const maxStatsLevel = parseInt(curve?.[0] ?? '100');
- const lore = '';
+ // const lore = '';
}
}
}
diff --git a/lib/utils/BushUtils.ts b/lib/utils/Utils.ts
index 1922204..f7404e1 100644
--- a/lib/utils/BushUtils.ts
+++ b/lib/utils/Utils.ts
@@ -1,12 +1,12 @@
import {
Arg,
- BushClient,
CommandMessage,
SlashEditMessageType,
SlashSendMessageType,
+ TanzaniteClient,
timeUnits,
- type BaseBushArgumentType,
- type BushInspectOptions,
+ type BaseBotArgumentType,
+ type CustomInspectOptions,
type SlashMessage
} from '#lib';
import { humanizeDuration as humanizeDurationMod } from '@notenoughupdates/humanize-duration';
@@ -117,7 +117,7 @@ export interface UuidRes {
* @param options The options to create defaults with.
* @returns The default options combined with the specified options.
*/
-function getDefaultInspectOptions(options?: BushInspectOptions): BushInspectOptions {
+function getDefaultInspectOptions(options?: CustomInspectOptions): CustomInspectOptions {
return {
showHidden: options?.showHidden ?? false,
depth: options?.depth ?? 2,
@@ -140,7 +140,7 @@ function getDefaultInspectOptions(options?: BushInspectOptions): BushInspectOpti
* @param options - The options you would like to use to inspect the object.
* @returns The inspected object.
*/
-export function inspect(object: any, options?: BushInspectOptions): string {
+export function inspect(object: any, options?: CustomInspectOptions): string {
const optionsWithDefaults = getDefaultInspectOptions(options);
if (!optionsWithDefaults.inspectStrings && typeof object === 'string') return object;
@@ -497,7 +497,7 @@ export { AkairoUtil as akairo };
/**
* The link to invite the bot with all permissions.
*/
-export function invite(client: BushClient) {
+export function invite(client: TanzaniteClient) {
return client.generateInvite({
permissions:
PermissionsBitField.All -
@@ -545,9 +545,9 @@ export interface ParsedDurationRes {
* @param message The message that triggered the command.
* @returns The casted argument.
*/
-export async function cast<T extends keyof BaseBushArgumentType>(
+export async function cast<T extends keyof BaseBotArgumentType>(
type: T,
- arg: BaseBushArgumentType[T] | string,
+ arg: BaseBotArgumentType[T] | string,
message: CommandMessage | SlashMessage
) {
return typeof arg === 'string' ? await Arg.cast(type, message, arg) : arg;
diff --git a/package.json b/package.json
index 3106ca0..8db194c 100644
--- a/package.json
+++ b/package.json
@@ -1,10 +1,10 @@
{
- "name": "bush-bot",
- "version": "3.0.2",
+ "name": "tanzanite",
+ "version": "3.1.0",
"description": "An open-sourced multi-purpose moderation, and leveling bot.",
"main": "dist/src/bot.js",
"type": "module",
- "repository": "https://github.com/NotEnoughUpdates/bush-bot",
+ "repository": "https://github.com/TanzaniteBot/tanzanite",
"author": "IRONM00N#0001 (@IRONM00N)",
"private": true,
"contributors": [
diff --git a/src/bot.ts b/src/bot.ts
index c9a7a49..486eb2e 100644
--- a/src/bot.ts
+++ b/src/bot.ts
@@ -1,6 +1,6 @@
console.log('Tanzanite is Starting');
-import { init } from '../lib/utils/BushLogger.js';
+import { init } from '../lib/utils/Logger.js';
// creates proxies on console.log and console.warn
// also starts a REPL session
init();
@@ -9,12 +9,12 @@ import { config } from '#config';
import { dirname } from 'path';
import { fileURLToPath } from 'url';
import { Sentry } from '../lib/common/Sentry.js';
-import { BushClient } from '../lib/extensions/discord-akairo/BushClient.js';
+import { TanzaniteClient } from '../lib/extensions/discord-akairo/TanzaniteClient.js';
const isDry = process.argv.includes('dry');
if (!isDry && config.credentials.sentryDsn !== null) new Sentry(dirname(fileURLToPath(import.meta.url)) || process.cwd(), config);
-BushClient.extendStructures();
-const client = new BushClient(config);
+TanzaniteClient.extendStructures();
+const client = new TanzaniteClient(config);
// @ts-ignore: for debugging purposes
global.client = client;
diff --git a/src/commands/_fake-command/ironmoon.ts b/src/commands/_fake-command/ironmoon.ts
index cb50c7e..bb4fd88 100644
--- a/src/commands/_fake-command/ironmoon.ts
+++ b/src/commands/_fake-command/ironmoon.ts
@@ -1,6 +1,6 @@
-import { BushCommand, type CommandMessage, type SlashMessage } from '#lib';
+import { BotCommand, type CommandMessage, type SlashMessage } from '#lib';
-export default class IronmoonCommand extends BushCommand {
+export default class IronmoonCommand extends BotCommand {
public constructor() {
super('ironmoon', {
category: 'fake-commands',
diff --git a/src/commands/admin/channelPermissions.ts b/src/commands/admin/channelPermissions.ts
index 0b09e54..e17a85b 100644
--- a/src/commands/admin/channelPermissions.ts
+++ b/src/commands/admin/channelPermissions.ts
@@ -1,6 +1,6 @@
import {
Arg,
- BushCommand,
+ BotCommand,
ButtonPaginator,
clientSendAndPermCheck,
emojis,
@@ -12,7 +12,7 @@ import {
import assert from 'assert/strict';
import { ApplicationCommandOptionType, EmbedBuilder, PermissionFlagsBits } from 'discord.js';
-export default class ChannelPermissionsCommand extends BushCommand {
+export default class ChannelPermissionsCommand extends BotCommand {
public constructor() {
super('channelPermissions', {
aliases: ['channel-perms', 'cperms', 'cperm', 'chanperms', 'chanperm', 'channel-permissions'],
diff --git a/src/commands/admin/roleAll.ts b/src/commands/admin/roleAll.ts
index dda536f..3675891 100644
--- a/src/commands/admin/roleAll.ts
+++ b/src/commands/admin/roleAll.ts
@@ -1,6 +1,6 @@
import {
AllowedMentions,
- BushCommand,
+ BotCommand,
clientSendAndPermCheck,
emojis,
type ArgType,
@@ -10,7 +10,7 @@ import {
import assert from 'assert/strict';
import { ApplicationCommandOptionType, PermissionFlagsBits, type GuildMember } from 'discord.js';
-export default class RoleAllCommand extends BushCommand {
+export default class RoleAllCommand extends BotCommand {
public constructor() {
super('roleAll', {
aliases: ['role-all', 'rall'],
diff --git a/src/commands/config/blacklist.ts b/src/commands/config/blacklist.ts
index a098f9d..5419658 100644
--- a/src/commands/config/blacklist.ts
+++ b/src/commands/config/blacklist.ts
@@ -2,7 +2,7 @@ import {
addOrRemoveFromArray,
AllowedMentions,
Arg,
- BushCommand,
+ BotCommand,
clientSendAndPermCheck,
emojis,
format,
@@ -13,7 +13,7 @@ import {
import assert from 'assert/strict';
import { ApplicationCommandOptionType, GuildMember, PermissionFlagsBits, User } from 'discord.js';
-export default class BlacklistCommand extends BushCommand {
+export default class BlacklistCommand extends BotCommand {
public constructor() {
super('blacklist', {
aliases: ['blacklist', 'unblacklist'],
diff --git a/src/commands/config/config.ts b/src/commands/config/config.ts
index 39a44d1..a37d67c 100644
--- a/src/commands/config/config.ts
+++ b/src/commands/config/config.ts
@@ -1,6 +1,6 @@
import {
addOrRemoveFromArray,
- BushCommand,
+ BotCommand,
clientSendAndPermCheck,
colors,
emojis,
@@ -47,7 +47,7 @@ export type Action = typeof allActions[number];
type SlashArgType = 'ROLE' | 'STRING' | 'CHANNEL' | 'USER';
type BaseSettingTypes = 'string' | 'channel' | 'role' | 'user' | 'custom';
-export default class ConfigCommand extends BushCommand {
+export default class ConfigCommand extends BotCommand {
public constructor() {
super('config', {
aliases: ['config', 'settings', 'setting', 'configure'],
diff --git a/src/commands/config/disable.ts b/src/commands/config/disable.ts
index f9abb4a..a4a876c 100644
--- a/src/commands/config/disable.ts
+++ b/src/commands/config/disable.ts
@@ -2,7 +2,7 @@ import {
addOrRemoveFromArray,
AllowedMentions,
Arg,
- BushCommand,
+ BotCommand,
clientSendAndPermCheck,
emojis,
type ArgType,
@@ -15,7 +15,7 @@ import { default as Fuse } from 'fuse.js';
assert(Fuse);
-export default class DisableCommand extends BushCommand {
+export default class DisableCommand extends BotCommand {
private static blacklistedCommands = ['eval', 'disable'];
public constructor() {
@@ -72,7 +72,7 @@ export default class DisableCommand extends BushCommand {
let action = (args.action ?? message.util?.parsed?.alias ?? 'toggle') as 'disable' | 'enable' | 'toggle';
const global = args.global && message.author.isOwner();
const commandID =
- args.command instanceof BushCommand ? args.command.id : (await Arg.cast('commandAlias', message, args.command))?.id;
+ args.command instanceof BotCommand ? args.command.id : (await Arg.cast('commandAlias', message, args.command))?.id;
if (!commandID) return await message.util.reply(`${emojis.error} Invalid command.`);
diff --git a/src/commands/config/features.ts b/src/commands/config/features.ts
index 0036349..55f99bd 100644
--- a/src/commands/config/features.ts
+++ b/src/commands/config/features.ts
@@ -1,5 +1,5 @@
import {
- BushCommand,
+ BotCommand,
clientSendAndPermCheck,
colors,
emojis,
@@ -20,7 +20,7 @@ import {
type SelectMenuInteraction
} from 'discord.js';
-export default class FeaturesCommand extends BushCommand {
+export default class FeaturesCommand extends BotCommand {
public constructor() {
super('features', {
aliases: ['features'],
diff --git a/src/commands/config/log.ts b/src/commands/config/log.ts
index f79f60e..f058670 100644
--- a/src/commands/config/log.ts
+++ b/src/commands/config/log.ts
@@ -1,5 +1,5 @@
import {
- BushCommand,
+ BotCommand,
clientSendAndPermCheck,
emojis,
guildLogsArr,
@@ -13,7 +13,7 @@ import assert from 'assert/strict';
import { ArgumentGeneratorReturn } from 'discord-akairo';
import { ApplicationCommandOptionType, ChannelType, PermissionFlagsBits } from 'discord.js';
-export default class LogCommand extends BushCommand {
+export default class LogCommand extends BotCommand {
public constructor() {
super('log', {
aliases: ['log', 'logging'],
diff --git a/src/commands/dev/__template.ts b/src/commands/dev/__template.ts
index df4d146..fbb88ac 100644
--- a/src/commands/dev/__template.ts
+++ b/src/commands/dev/__template.ts
@@ -1,5 +1,5 @@
import {
- BushCommand,
+ BotCommand,
clientSendAndPermCheck,
emojis,
type ArgType,
@@ -9,7 +9,7 @@ import {
} from '#lib';
import { ApplicationCommandOptionType } from 'discord.js';
-export default class TemplateCommand extends BushCommand {
+export default class TemplateCommand extends BotCommand {
public constructor() {
super('template', {
aliases: ['template'],
diff --git a/src/commands/dev/dm.ts b/src/commands/dev/dm.ts
index c1340b1..e51651e 100644
--- a/src/commands/dev/dm.ts
+++ b/src/commands/dev/dm.ts
@@ -1,7 +1,7 @@
-import { BushCommand, clientSendAndPermCheck, emojis, format, type ArgType, type CommandMessage, type SlashMessage } from '#lib';
+import { BotCommand, clientSendAndPermCheck, emojis, format, type ArgType, type CommandMessage, type SlashMessage } from '#lib';
import { ApplicationCommandOptionType } from 'discord.js';
-export default class DMCommand extends BushCommand {
+export default class DMCommand extends BotCommand {
public constructor() {
super('dm', {
aliases: ['dm'],
diff --git a/src/commands/dev/eval.ts b/src/commands/dev/eval.ts
index dd21454..3929f99 100644
--- a/src/commands/dev/eval.ts
+++ b/src/commands/dev/eval.ts
@@ -2,10 +2,10 @@
import {
ActivePunishment,
assertAll,
- BushCommand,
- BushInspectOptions,
+ BotCommand,
CodeBlockLang,
colors,
+ CustomInspectOptions,
emojis,
getMethods,
Global,
@@ -56,9 +56,9 @@ const { transpile } = ts,
/* eslint-enable @typescript-eslint/no-unused-vars */
// prettier-ignore
-assertAll(ActivePunishment, BushCommand, Global, Guild, Level, ModLog, Shared, StickyRole, Snowflake_, canvas, exec, ActionRow, ButtonComponent, ButtonInteraction, Collection, Collector, CommandInteraction, ContextMenuCommandInteraction, DMChannel, Embed, Emoji, InteractionCollector, Message, Attachment, MessageCollector, OAuth2Scopes, PermissionFlagsBits, PermissionsBitField, ReactionCollector, SelectMenuComponent, path, ts, fileURLToPath, promisify, assert, transpile, sh, SnowflakeUtil, __dirname);
+assertAll(ActivePunishment, BotCommand, Global, Guild, Level, ModLog, Shared, StickyRole, Snowflake_, canvas, exec, ActionRow, ButtonComponent, ButtonInteraction, Collection, Collector, CommandInteraction, ContextMenuCommandInteraction, DMChannel, Embed, Emoji, InteractionCollector, Message, Attachment, MessageCollector, OAuth2Scopes, PermissionFlagsBits, PermissionsBitField, ReactionCollector, SelectMenuComponent, path, ts, fileURLToPath, promisify, assert, transpile, sh, SnowflakeUtil, __dirname);
-export default class EvalCommand extends BushCommand {
+export default class EvalCommand extends BotCommand {
public constructor() {
super('eval', {
aliases: ['eval', 'ev', 'evaluate'],
@@ -316,7 +316,7 @@ export default class EvalCommand extends BushCommand {
}
}
-type CodeBlockOptions = BushInspectOptions & { inspectStrings?: boolean };
+type CodeBlockOptions = CustomInspectOptions & { inspectStrings?: boolean };
interface CodeBlockCustomOptions extends CodeBlockOptions {
prototype?: boolean;
methods?: boolean;
diff --git a/src/commands/dev/javascript.ts b/src/commands/dev/javascript.ts
index 12ad6f7..43ccf94 100644
--- a/src/commands/dev/javascript.ts
+++ b/src/commands/dev/javascript.ts
@@ -1,5 +1,5 @@
import {
- BushCommand,
+ BotCommand,
clientSendAndPermCheck,
colors,
emojis,
@@ -13,7 +13,7 @@ import { ApplicationCommandOptionType, EmbedBuilder } from 'discord.js';
import { VM } from 'vm2';
assert(VM);
-export default class JavascriptCommand extends BushCommand {
+export default class JavascriptCommand extends BotCommand {
public constructor() {
super('javascript', {
aliases: ['javascript', 'js'],
diff --git a/src/commands/dev/reload.ts b/src/commands/dev/reload.ts
index 8125015..2d5b9d9 100644
--- a/src/commands/dev/reload.ts
+++ b/src/commands/dev/reload.ts
@@ -1,6 +1,6 @@
-import { BushCommand, clientSendAndPermCheck, emojis, formatError, shell, type CommandMessage, type SlashMessage } from '#lib';
+import { BotCommand, clientSendAndPermCheck, emojis, formatError, shell, type CommandMessage, type SlashMessage } from '#lib';
-export default class ReloadCommand extends BushCommand {
+export default class ReloadCommand extends BotCommand {
public constructor() {
super('reload', {
aliases: ['reload'],
diff --git a/src/commands/dev/say.ts b/src/commands/dev/say.ts
index c7b3c40..22ad9ba 100644
--- a/src/commands/dev/say.ts
+++ b/src/commands/dev/say.ts
@@ -1,7 +1,7 @@
-import { AllowedMentions, BushCommand, emojis, type ArgType, type CommandMessage, type SlashMessage } from '#lib';
+import { AllowedMentions, BotCommand, emojis, type ArgType, type CommandMessage, type SlashMessage } from '#lib';
import { ApplicationCommandOptionType } from 'discord.js';
-export default class SayCommand extends BushCommand {
+export default class SayCommand extends BotCommand {
public constructor() {
super('say', {
aliases: ['say'],
diff --git a/src/commands/dev/servers.ts b/src/commands/dev/servers.ts
index ab66f1c..6bba93c 100644
--- a/src/commands/dev/servers.ts
+++ b/src/commands/dev/servers.ts
@@ -1,5 +1,5 @@
import {
- BushCommand,
+ BotCommand,
ButtonPaginator,
chunk,
clientSendAndPermCheck,
@@ -11,7 +11,7 @@ import {
import { stripIndent } from '#tags';
import { type APIEmbed, type Guild } from 'discord.js';
-export default class ServersCommand extends BushCommand {
+export default class ServersCommand extends BotCommand {
public constructor() {
super('servers', {
aliases: ['servers', 'guilds'],
diff --git a/src/commands/dev/sh.ts b/src/commands/dev/sh.ts
index 56a3b69..2d2a404 100644
--- a/src/commands/dev/sh.ts
+++ b/src/commands/dev/sh.ts
@@ -1,4 +1,4 @@
-import { ArgType, BushCommand, colors, emojis, formatError, type CommandMessage, type SlashMessage } from '#lib';
+import { ArgType, BotCommand, colors, emojis, formatError, type CommandMessage, type SlashMessage } from '#lib';
import assert from 'assert/strict';
import chalk from 'chalk';
import { exec } from 'child_process';
@@ -15,7 +15,7 @@ const clean = (text: string | any) => {
} else return text;
};
-export default class ShCommand extends BushCommand {
+export default class ShCommand extends BotCommand {
public constructor() {
super('sh', {
aliases: ['sh', 'shell', 'cmd'],
diff --git a/src/commands/dev/superUser.ts b/src/commands/dev/superUser.ts
index 24e8c9a..6a034bc 100644
--- a/src/commands/dev/superUser.ts
+++ b/src/commands/dev/superUser.ts
@@ -1,7 +1,7 @@
-import { BushCommand, clientSendAndPermCheck, emojis, format, type ArgType, type CommandMessage } from '#lib';
+import { BotCommand, clientSendAndPermCheck, emojis, format, type ArgType, type CommandMessage } from '#lib';
import { type ArgumentGeneratorReturn, type ArgumentTypeCasterReturn } from 'discord-akairo';
-export default class SuperUserCommand extends BushCommand {
+export default class SuperUserCommand extends BotCommand {
public constructor() {
super('superUser', {
aliases: ['super-user', 'su'],
diff --git a/src/commands/dev/syncAutomod.ts b/src/commands/dev/syncAutomod.ts
index d0fc5e5..7a0fb58 100644
--- a/src/commands/dev/syncAutomod.ts
+++ b/src/commands/dev/syncAutomod.ts
@@ -1,8 +1,8 @@
-import { BushCommand, clientSendAndPermCheck, emojis, Shared, type CommandMessage, type SlashMessage } from '#lib';
+import { BotCommand, clientSendAndPermCheck, emojis, Shared, type CommandMessage, type SlashMessage } from '#lib';
import typescript from 'typescript';
import { NodeVM } from 'vm2';
-export default class SyncAutomodCommand extends BushCommand {
+export default class SyncAutomodCommand extends BotCommand {
public constructor() {
super('syncAutomod', {
aliases: ['sync-automod'],
diff --git a/src/commands/dev/test.ts b/src/commands/dev/test.ts
index 0606497..cc32657 100644
--- a/src/commands/dev/test.ts
+++ b/src/commands/dev/test.ts
@@ -1,5 +1,5 @@
import {
- BushCommand,
+ BotCommand,
ButtonPaginator,
clientSendAndPermCheck,
colors,
@@ -22,7 +22,7 @@ import badLinksSecretArray from '../../../lib/badlinks-secret.js';
import badLinksArray from '../../../lib/badlinks.js';
import badWords from '../../../lib/badwords.js';
-export default class TestCommand extends BushCommand {
+export default class TestCommand extends BotCommand {
public constructor() {
super('test', {
aliases: ['test'],
diff --git a/src/commands/fun/coinFlip.ts b/src/commands/fun/coinFlip.ts
index 3adf7f2..66b6016 100644
--- a/src/commands/fun/coinFlip.ts
+++ b/src/commands/fun/coinFlip.ts
@@ -1,6 +1,6 @@
-import { BushCommand, clientSendAndPermCheck, type CommandMessage, type SlashMessage } from '#lib';
+import { BotCommand, clientSendAndPermCheck, type CommandMessage, type SlashMessage } from '#lib';
-export default class CoinFlipCommand extends BushCommand {
+export default class CoinFlipCommand extends BotCommand {
public constructor() {
super('coinFlip', {
aliases: ['coin-flip', 'cf'],
diff --git a/src/commands/fun/dice.ts b/src/commands/fun/dice.ts
index e7e5927..5941564 100644
--- a/src/commands/fun/dice.ts
+++ b/src/commands/fun/dice.ts
@@ -1,6 +1,6 @@
-import { BushCommand, clientSendAndPermCheck, type CommandMessage, type SlashMessage } from '#lib';
+import { BotCommand, clientSendAndPermCheck, type CommandMessage, type SlashMessage } from '#lib';
-export default class DiceCommand extends BushCommand {
+export default class DiceCommand extends BotCommand {
public constructor() {
super('dice', {
aliases: ['dice', 'die'],
diff --git a/src/commands/fun/eightBall.ts b/src/commands/fun/eightBall.ts
index eb5aee8..be9c7b5 100644
--- a/src/commands/fun/eightBall.ts
+++ b/src/commands/fun/eightBall.ts
@@ -1,7 +1,7 @@
-import { BushCommand, clientSendAndPermCheck, type CommandMessage, type SlashMessage } from '#lib';
+import { BotCommand, clientSendAndPermCheck, type CommandMessage, type SlashMessage } from '#lib';
import { ApplicationCommandOptionType } from 'discord.js';
-export default class EightBallCommand extends BushCommand {
+export default class EightBallCommand extends BotCommand {
public constructor() {
super('eightBall', {
aliases: ['eightball', '8ball'],
diff --git a/src/commands/fun/minesweeper.ts b/src/commands/fun/minesweeper.ts
index f2db6ee..ec21b11 100644
--- a/src/commands/fun/minesweeper.ts
+++ b/src/commands/fun/minesweeper.ts
@@ -1,5 +1,5 @@
import {
- BushCommand,
+ BotCommand,
clientSendAndPermCheck,
emojis,
OptArgType,
@@ -12,7 +12,7 @@ import assert from 'assert/strict';
import { ApplicationCommandOptionType } from 'discord.js';
assert(Minesweeper);
-export default class MinesweeperCommand extends BushCommand {
+export default class MinesweeperCommand extends BotCommand {
public constructor() {
super('minesweeper', {
aliases: ['minesweeper'],
diff --git a/src/commands/info/avatar.ts b/src/commands/info/avatar.ts
index 3eae98c..b97364f 100644
--- a/src/commands/info/avatar.ts
+++ b/src/commands/info/avatar.ts
@@ -1,7 +1,7 @@
-import { Arg, BushCommand, clientSendAndPermCheck, colors, type CommandMessage, type OptArgType, type SlashMessage } from '#lib';
+import { Arg, BotCommand, clientSendAndPermCheck, colors, type CommandMessage, type OptArgType, type SlashMessage } from '#lib';
import { ApplicationCommandOptionType, EmbedBuilder, GuildMember, PermissionFlagsBits } from 'discord.js';
-export default class AvatarCommand extends BushCommand {
+export default class AvatarCommand extends BotCommand {
public constructor() {
super('avatar', {
aliases: ['avatar', 'av'],
diff --git a/src/commands/info/botInfo.ts b/src/commands/info/botInfo.ts
index d84fd4e..64ecf1d 100644
--- a/src/commands/info/botInfo.ts
+++ b/src/commands/info/botInfo.ts
@@ -1,5 +1,5 @@
import {
- BushCommand,
+ BotCommand,
clientSendAndPermCheck,
colors,
humanizeDuration,
@@ -14,7 +14,7 @@ const { default: prettyBytes } = await import('pretty-bytes');
assert(prettyBytes);
assert(os);
-export default class BotInfoCommand extends BushCommand {
+export default class BotInfoCommand extends BotCommand {
public constructor() {
super('botInfo', {
aliases: ['bot-info', 'stats'],
diff --git a/src/commands/info/color.ts b/src/commands/info/color.ts
index 7601562..c139e1a 100644
--- a/src/commands/info/color.ts
+++ b/src/commands/info/color.ts
@@ -1,7 +1,7 @@
import {
AllowedMentions,
Arg,
- BushCommand,
+ BotCommand,
clientSendAndPermCheck,
emojis,
type ArgType,
@@ -13,7 +13,7 @@ import { ApplicationCommandOptionType, EmbedBuilder, GuildMember, PermissionFlag
import tinycolor from 'tinycolor2';
assert(tinycolor);
-export default class ColorCommand extends BushCommand {
+export default class ColorCommand extends BotCommand {
public constructor() {
super('color', {
aliases: ['color'],
diff --git a/src/commands/info/guildInfo.ts b/src/commands/info/guildInfo.ts
index e67cdf4..97e4be3 100644
--- a/src/commands/info/guildInfo.ts
+++ b/src/commands/info/guildInfo.ts
@@ -1,7 +1,7 @@
import {
akairo,
Arg,
- BushCommand,
+ BotCommand,
clientSendAndPermCheck,
colors,
emojis,
@@ -31,7 +31,7 @@ import {
type Vanity
} from 'discord.js';
-export default class GuildInfoCommand extends BushCommand {
+export default class GuildInfoCommand extends BotCommand {
public constructor() {
super('guildInfo', {
aliases: ['guild-info', 'serverinfo', 'guild', 'server', 'g'],
@@ -222,9 +222,9 @@ export default class GuildInfoCommand extends BushCommand {
const guildSecurity: string[] = [];
guildSecurity.push(
- `**Verification Level:** ${BushGuildVerificationLevel[guild.verificationLevel]}`,
- `**Explicit Content Filter:** ${BushGuildExplicitContentFilter[guild.explicitContentFilter]}`,
- `**Default Message Notifications:** ${BushGuildDefaultMessageNotifications[guild.defaultMessageNotifications]}`,
+ `**Verification Level:** ${MappedGuildVerificationLevel[guild.verificationLevel]}`,
+ `**Explicit Content Filter:** ${MappedGuildExplicitContentFilter[guild.explicitContentFilter]}`,
+ `**Default Message Notifications:** ${MappedGuildDefaultMessageNotifications[guild.defaultMessageNotifications]}`,
`**2FA Required:** ${guild.mfaLevel === GuildMFALevel.Elevated ? 'True' : 'False'}`
);
@@ -248,7 +248,7 @@ type RTCRegion =
| 'india'
| 'automatic';
-enum BushGuildVerificationLevel {
+enum MappedGuildVerificationLevel {
'None' = GuildVerificationLevel.None,
'Low' = GuildVerificationLevel.Low,
'Medium' = GuildVerificationLevel.Medium,
@@ -256,13 +256,13 @@ enum BushGuildVerificationLevel {
'Very High' = GuildVerificationLevel.VeryHigh
}
-enum BushGuildExplicitContentFilter {
+enum MappedGuildExplicitContentFilter {
'Disabled' = GuildExplicitContentFilter.Disabled,
'Members Without Roles' = GuildExplicitContentFilter.MembersWithoutRoles,
'All Members' = GuildExplicitContentFilter.AllMembers
}
-enum BushGuildDefaultMessageNotifications {
+enum MappedGuildDefaultMessageNotifications {
'All Messages' = GuildDefaultMessageNotifications.AllMessages,
'Only Mentions' = GuildDefaultMessageNotifications.OnlyMentions
}
diff --git a/src/commands/info/help.ts b/src/commands/info/help.ts
index 70c8f20..6460b99 100644
--- a/src/commands/info/help.ts
+++ b/src/commands/info/help.ts
@@ -1,5 +1,5 @@
import {
- BushCommand,
+ BotCommand,
clientSendAndPermCheck,
colors,
format,
@@ -26,7 +26,7 @@ import packageDotJSON from '../../../package.json' assert { type: 'json' };
assert(Fuse);
assert(packageDotJSON);
-export default class HelpCommand extends BushCommand {
+export default class HelpCommand extends BotCommand {
public constructor() {
super('help', {
aliases: ['help'],
@@ -109,7 +109,7 @@ export default class HelpCommand extends BushCommand {
return message.util.reply({ embeds: [embed], components: row.components.length ? [row] : undefined });
}
- private helpIndividual(message: CommandMessage | SlashMessage, row: ActionRowBuilder<ButtonBuilder>, command: BushCommand) {
+ private helpIndividual(message: CommandMessage | SlashMessage, row: ActionRowBuilder<ButtonBuilder>, command: BotCommand) {
const embed = new EmbedBuilder().setColor(colors.default).setTitle(`${command.id} Command`);
let description = `${command.description ?? '*This command does not have a description.*'}`;
@@ -127,7 +127,7 @@ export default class HelpCommand extends BushCommand {
return message.util.reply(params);
}
- private addCommandUsage(embed: EmbedBuilder, command: BushCommand): void {
+ private addCommandUsage(embed: EmbedBuilder, command: BotCommand): void {
if (command.usage?.length) {
embed.addFields({
name: `» Usage${command.usage.length > 1 ? 's' : ''}`,
@@ -136,7 +136,7 @@ export default class HelpCommand extends BushCommand {
}
}
- private addCommandExamples(embed: EmbedBuilder, command: BushCommand): void {
+ private addCommandExamples(embed: EmbedBuilder, command: BotCommand): void {
if (command.examples?.length) {
embed.addFields({
name: `» Example${command.examples.length > 1 ? 's' : ''}`,
@@ -145,7 +145,7 @@ export default class HelpCommand extends BushCommand {
}
}
- private addCommandAliases(embed: EmbedBuilder, command: BushCommand): void {
+ private addCommandAliases(embed: EmbedBuilder, command: BotCommand): void {
if (command.aliases?.length > 1)
embed.addFields({
name: '» Aliases',
@@ -153,7 +153,7 @@ export default class HelpCommand extends BushCommand {
});
}
- private addCommandArguments(embed: EmbedBuilder, command: BushCommand, isOwner = false, isSuperUser = false): void {
+ private addCommandArguments(embed: EmbedBuilder, command: BotCommand, isOwner = false, isSuperUser = false): void {
const format = (id: string, req: boolean) => `${req ? '<' : '['}${id}${req ? '>' : ']'}`;
const args = (command.argsInfo ?? []).filter((arg) => {
if (arg.ownerOnly && !isOwner) return false;
@@ -182,7 +182,7 @@ export default class HelpCommand extends BushCommand {
}
}
- private addCommandRestrictions(embed: EmbedBuilder, command: BushCommand): void {
+ private addCommandRestrictions(embed: EmbedBuilder, command: BotCommand): void {
if (
command.ownerOnly ||
command.superUserOnly ||
diff --git a/src/commands/info/icon.ts b/src/commands/info/icon.ts
index b3434ec..71f02f9 100644
--- a/src/commands/info/icon.ts
+++ b/src/commands/info/icon.ts
@@ -1,8 +1,8 @@
-import { BushCommand, clientSendAndPermCheck, colors, type CommandMessage, type SlashMessage } from '#lib';
+import { BotCommand, clientSendAndPermCheck, colors, type CommandMessage, type SlashMessage } from '#lib';
import assert from 'assert/strict';
import { EmbedBuilder, escapeMarkdown, PermissionFlagsBits } from 'discord.js';
-export default class IconCommand extends BushCommand {
+export default class IconCommand extends BotCommand {
public constructor() {
super('icon', {
aliases: ['icon', 'guildavatar', 'severicon', 'guildicon'],
diff --git a/src/commands/info/inviteInfo.ts b/src/commands/info/inviteInfo.ts
index 5df86ad..590bf16 100644
--- a/src/commands/info/inviteInfo.ts
+++ b/src/commands/info/inviteInfo.ts
@@ -1,7 +1,7 @@
-import { Arg, ArgType, BushCommand, clientSendAndPermCheck, colors, type CommandMessage, type SlashMessage } from '#lib';
+import { Arg, ArgType, BotCommand, clientSendAndPermCheck, colors, type CommandMessage, type SlashMessage } from '#lib';
import { ApplicationCommandOptionType, EmbedBuilder, Invite, PermissionFlagsBits } from 'discord.js';
-export default class InviteInfoCommand extends BushCommand {
+export default class InviteInfoCommand extends BotCommand {
public constructor() {
super('inviteInfo', {
aliases: ['invite-info', 'ii'],
diff --git a/src/commands/info/links.ts b/src/commands/info/links.ts
index 8003c65..ecc09c8 100644
--- a/src/commands/info/links.ts
+++ b/src/commands/info/links.ts
@@ -1,11 +1,11 @@
-import { BushCommand, clientSendAndPermCheck, invite, type CommandMessage, type SlashMessage } from '#lib';
+import { BotCommand, clientSendAndPermCheck, invite, type CommandMessage, type SlashMessage } from '#lib';
import assert from 'assert/strict';
import { ActionRowBuilder, ButtonBuilder, ButtonStyle } from 'discord.js';
import packageDotJSON from '../../../package.json' assert { type: 'json' };
assert(packageDotJSON);
-export default class LinksCommand extends BushCommand {
+export default class LinksCommand extends BotCommand {
public constructor() {
super('links', {
aliases: ['links', 'invite', 'inv', 'support', 'github', 'source', 'oss'],
diff --git a/src/commands/info/ping.ts b/src/commands/info/ping.ts
index 484c010..91bec1d 100644
--- a/src/commands/info/ping.ts
+++ b/src/commands/info/ping.ts
@@ -1,7 +1,7 @@
-import { BushCommand, clientSendAndPermCheck, colors, format, type CommandMessage, type SlashMessage } from '#lib';
+import { BotCommand, clientSendAndPermCheck, colors, format, type CommandMessage, type SlashMessage } from '#lib';
import { EmbedBuilder, PermissionFlagsBits, type Message } from 'discord.js';
-export default class PingCommand extends BushCommand {
+export default class PingCommand extends BotCommand {
public constructor() {
super('ping', {
aliases: ['ping'],
diff --git a/src/commands/info/pronouns.ts b/src/commands/info/pronouns.ts
index 0063f4c..47061fc 100644
--- a/src/commands/info/pronouns.ts
+++ b/src/commands/info/pronouns.ts
@@ -1,6 +1,6 @@
import {
AllowedMentions,
- BushCommand,
+ BotCommand,
clientSendAndPermCheck,
type CommandMessage,
type OptArgType,
@@ -8,7 +8,7 @@ import {
} from '#lib';
import { ApplicationCommandOptionType, EmbedBuilder, escapeMarkdown, PermissionFlagsBits } from 'discord.js';
-export default class PronounsCommand extends BushCommand {
+export default class PronounsCommand extends BotCommand {
public constructor() {
super('pronouns', {
aliases: ['pronouns', 'pronoun'],
diff --git a/src/commands/info/snowflake.ts b/src/commands/info/snowflake.ts
index f30330a..deaf41c 100644
--- a/src/commands/info/snowflake.ts
+++ b/src/commands/info/snowflake.ts
@@ -1,5 +1,5 @@
import {
- BushCommand,
+ BotCommand,
clientSendAndPermCheck,
colors,
timestamp,
@@ -19,7 +19,7 @@ import {
type Snowflake
} from 'discord.js';
-export default class SnowflakeCommand extends BushCommand {
+export default class SnowflakeCommand extends BotCommand {
public constructor() {
super('snowflake', {
aliases: ['snowflake', 'info', 'sf'],
@@ -50,7 +50,7 @@ export default class SnowflakeCommand extends BushCommand {
// Channel
if (this.client.channels.cache.has(snowflake)) {
const channel = this.client.channels.resolve(snowflake)!;
- const channelInfo = [`**Type:** ${BushChannelType[channel.type] ?? ChannelType[channel.type]}`];
+ const channelInfo = [`**Type:** ${MappedChannelType[channel.type] ?? ChannelType[channel.type]}`];
if (channel.type === ChannelType.DM) {
channelInfo.push(
`**Recipient:** ${escapeMarkdown(channel.recipient?.tag ?? '¯\\_(ツ)_/¯')} (${channel.recipient?.id ?? '¯\\_(ツ)_/¯'})`
@@ -136,7 +136,7 @@ export default class SnowflakeCommand extends BushCommand {
}
}
-enum BushChannelType {
+enum MappedChannelType {
'Text' = 0,
'DM' = 1,
'Voice' = 2,
diff --git a/src/commands/info/userInfo.ts b/src/commands/info/userInfo.ts
index 1f139b5..52875ef 100644
--- a/src/commands/info/userInfo.ts
+++ b/src/commands/info/userInfo.ts
@@ -1,7 +1,7 @@
import {
Arg,
+ BotCommand,
bots,
- BushCommand,
clientSendAndPermCheck,
colors,
emojis,
@@ -30,7 +30,7 @@ import {
type User
} from 'discord.js';
-export default class UserInfoCommand extends BushCommand {
+export default class UserInfoCommand extends BotCommand {
public constructor() {
super('userInfo', {
aliases: ['user-info', 'user', 'u'],
diff --git a/src/commands/leveling/leaderboard.ts b/src/commands/leveling/leaderboard.ts
index bb41a12..109f398 100644
--- a/src/commands/leveling/leaderboard.ts
+++ b/src/commands/leveling/leaderboard.ts
@@ -1,5 +1,5 @@
import {
- BushCommand,
+ BotCommand,
ButtonPaginator,
chunk,
clientSendAndPermCheck,
@@ -12,7 +12,7 @@ import {
import assert from 'assert/strict';
import { ApplicationCommandOptionType, EmbedBuilder, PermissionFlagsBits } from 'discord.js';
-export default class LeaderboardCommand extends BushCommand {
+export default class LeaderboardCommand extends BotCommand {
public constructor() {
super('leaderboard', {
aliases: ['leaderboard', 'lb'],
diff --git a/src/commands/leveling/level.ts b/src/commands/leveling/level.ts
index ea2a724..2547b06 100644
--- a/src/commands/leveling/level.ts
+++ b/src/commands/leveling/level.ts
@@ -1,6 +1,6 @@
import {
AllowedMentions,
- BushCommand,
+ BotCommand,
CanvasProgressBar,
clientSendAndPermCheck,
emojis,
@@ -16,7 +16,7 @@ import { ApplicationCommandOptionType, AttachmentBuilder, Guild, PermissionFlags
assert(canvas);
assert(SimplifyNumber);
-export default class LevelCommand extends BushCommand {
+export default class LevelCommand extends BotCommand {
public constructor() {
super('level', {
aliases: ['level', 'rank', 'lvl'],
diff --git a/src/commands/leveling/levelRoles.ts b/src/commands/leveling/levelRoles.ts
index 312623c..4973b01 100644
--- a/src/commands/leveling/levelRoles.ts
+++ b/src/commands/leveling/levelRoles.ts
@@ -1,6 +1,6 @@
import {
AllowedMentions,
- BushCommand,
+ BotCommand,
clientSendAndPermCheck,
emojis,
type ArgType,
@@ -11,7 +11,7 @@ import {
import assert from 'assert/strict';
import { ApplicationCommandOptionType, PermissionFlagsBits } from 'discord.js';
-export default class LevelRolesCommand extends BushCommand {
+export default class LevelRolesCommand extends BotCommand {
public constructor() {
super('levelRole', {
aliases: ['level-role', 'level-roles', 'lr'],
diff --git a/src/commands/leveling/setLevel.ts b/src/commands/leveling/setLevel.ts
index 8dc1cdf..cd30978 100644
--- a/src/commands/leveling/setLevel.ts
+++ b/src/commands/leveling/setLevel.ts
@@ -1,6 +1,6 @@
import {
AllowedMentions,
- BushCommand,
+ BotCommand,
clientSendAndPermCheck,
emojis,
format,
@@ -12,7 +12,7 @@ import {
import assert from 'assert/strict';
import { ApplicationCommandOptionType, PermissionFlagsBits } from 'discord.js';
-export default class SetLevelCommand extends BushCommand {
+export default class SetLevelCommand extends BotCommand {
public constructor() {
super('setLevel', {
aliases: ['set-level'],
diff --git a/src/commands/leveling/setXp.ts b/src/commands/leveling/setXp.ts
index 5cd3a61..23f4463 100644
--- a/src/commands/leveling/setXp.ts
+++ b/src/commands/leveling/setXp.ts
@@ -1,6 +1,6 @@
import {
AllowedMentions,
- BushCommand,
+ BotCommand,
clientSendAndPermCheck,
emojis,
format,
@@ -12,7 +12,7 @@ import {
import assert from 'assert/strict';
import { ApplicationCommandOptionType, PermissionFlagsBits } from 'discord.js';
-export default class SetXpCommand extends BushCommand {
+export default class SetXpCommand extends BotCommand {
public constructor() {
super('setXp', {
aliases: ['set-xp'],
diff --git a/src/commands/moderation/_activePunishments.ts b/src/commands/moderation/_activePunishments.ts
index 06e33f2..4ded902 100644
--- a/src/commands/moderation/_activePunishments.ts
+++ b/src/commands/moderation/_activePunishments.ts
@@ -1,6 +1,6 @@
// import {
-// BushCommand,
// clientSendAndPermCheck,
+// CustomCommand,
// emojis,
// ModLog,
// ModLogModel,
@@ -14,7 +14,7 @@
// const punishmentTypes = ['ban', 'kick', 'mute', 'warn', 'role'] as const;
-// export default class ActivePunishmentsCommand extends BushCommand {
+// export default class ActivePunishmentsCommand extends CustomCommand {
// public constructor() {
// super('activePunishments', {
// aliases: ['active-punishments', 'ap'],
diff --git a/src/commands/moderation/ban.ts b/src/commands/moderation/ban.ts
index 00fde01..fdb8033 100644
--- a/src/commands/moderation/ban.ts
+++ b/src/commands/moderation/ban.ts
@@ -2,7 +2,7 @@ import {
AllowedMentions,
Arg,
banResponse,
- BushCommand,
+ BotCommand,
castDurationContent,
emojis,
format,
@@ -16,7 +16,7 @@ import {
import assert from 'assert/strict';
import { ApplicationCommandOptionType, PermissionFlagsBits, type User } from 'discord.js';
-export default class BanCommand extends BushCommand {
+export default class BanCommand extends BotCommand {
public constructor() {
super('ban', {
aliases: ['ban', 'force-ban', 'dban'],
@@ -108,7 +108,7 @@ export default class BanCommand extends BushCommand {
const opts = { reason: content, moderator: message.member, duration: duration, deleteDays: args.days };
- const responseCode = member ? await member.bushBan(opts) : await message.guild.bushBan({ user, ...opts });
+ const responseCode = member ? await member.customBan(opts) : await message.guild.customBan({ user, ...opts });
return await message.util.reply({
content: BanCommand.formatCode(user, responseCode),
diff --git a/src/commands/moderation/block.ts b/src/commands/moderation/block.ts
index 00a1996..a3f7bc1 100644
--- a/src/commands/moderation/block.ts
+++ b/src/commands/moderation/block.ts
@@ -1,7 +1,7 @@
import {
AllowedMentions,
blockResponse,
- BushCommand,
+ BotCommand,
castDurationContent,
clientSendAndPermCheck,
emojis,
@@ -17,7 +17,7 @@ import {
import assert from 'assert/strict';
import { ApplicationCommandOptionType, PermissionFlagsBits, type GuildMember } from 'discord.js';
-export default class BlockCommand extends BushCommand {
+export default class BlockCommand extends BotCommand {
public constructor() {
super('block', {
aliases: ['block'],
@@ -91,7 +91,7 @@ export default class BlockCommand extends BushCommand {
return message.util.reply(canModerateResponse);
}
- const responseCode = await member.bushBlock({
+ const responseCode = await member.customBlock({
reason: content,
moderator: message.member,
duration: duration,
diff --git a/src/commands/moderation/evidence.ts b/src/commands/moderation/evidence.ts
index d36000f..bc4cdb2 100644
--- a/src/commands/moderation/evidence.ts
+++ b/src/commands/moderation/evidence.ts
@@ -1,11 +1,12 @@
import {
- BushCommand,
+ BotCommand,
clientSendAndPermCheck,
emojis,
format,
ModLog,
OptArgType,
regex,
+ TanzaniteEvent,
userGuildPermCheck,
type ArgType,
type CommandMessage,
@@ -15,7 +16,7 @@ import assert from 'assert/strict';
import { Argument, ArgumentGeneratorReturn } from 'discord-akairo';
import { ApplicationCommandOptionType, PermissionFlagsBits, type Message } from 'discord.js';
-export default class EvidenceCommand extends BushCommand {
+export default class EvidenceCommand extends BotCommand {
public constructor() {
super('evidence', {
aliases: ['evidence'],
@@ -122,7 +123,7 @@ export default class EvidenceCommand extends BushCommand {
entry.evidence = _evidence.trim();
await entry.save();
- this.client.emit('bushUpdateModlog', message.member!, entry.id, 'evidence', oldEntry, entry.evidence);
+ this.client.emit(TanzaniteEvent.UpdateModlog, message.member!, entry.id, 'evidence', oldEntry, entry.evidence);
return message.util.reply(`${emojis.success} Successfully updated the evidence for case ${format.input(entry.id)}.`);
}
diff --git a/src/commands/moderation/hideCase.ts b/src/commands/moderation/hideCase.ts
index 9bd1d24..ca87ea5 100644
--- a/src/commands/moderation/hideCase.ts
+++ b/src/commands/moderation/hideCase.ts
@@ -1,9 +1,10 @@
import {
- BushCommand,
+ BotCommand,
clientSendAndPermCheck,
emojis,
format,
ModLog,
+ TanzaniteEvent,
userGuildPermCheck,
type CommandMessage,
type SlashMessage
@@ -11,7 +12,7 @@ import {
import assert from 'assert/strict';
import { ApplicationCommandOptionType, PermissionFlagsBits } from 'discord.js';
-export default class HideCaseCommand extends BushCommand {
+export default class HideCaseCommand extends BotCommand {
public constructor() {
super('hideCase', {
aliases: ['hide-case', 'hide_case', 'show-case', 'show_case', 'cover-up-mod-abuse', 'cover_up_mod_abuse'],
@@ -47,7 +48,7 @@ export default class HideCaseCommand extends BushCommand {
entry.hidden = !entry.hidden;
await entry.save();
- this.client.emit('bushUpdateModlog', message.member!, entry.id, 'hidden', oldEntry, entry.hidden);
+ this.client.emit(TanzaniteEvent.UpdateModlog, message.member!, entry.id, 'hidden', oldEntry, entry.hidden);
return await message.util.reply(`${emojis.success} CaseID ${format.input(caseID)} is ${action}.`);
}
diff --git a/src/commands/moderation/kick.ts b/src/commands/moderation/kick.ts
index 7807166..a5938f8 100644
--- a/src/commands/moderation/kick.ts
+++ b/src/commands/moderation/kick.ts
@@ -1,6 +1,6 @@
import {
AllowedMentions,
- BushCommand,
+ BotCommand,
clientSendAndPermCheck,
emojis,
format,
@@ -15,7 +15,7 @@ import {
import assert from 'assert/strict';
import { ApplicationCommandOptionType, PermissionFlagsBits, type GuildMember } from 'discord.js';
-export default class KickCommand extends BushCommand {
+export default class KickCommand extends BotCommand {
public constructor() {
super('kick', {
aliases: ['kick'],
@@ -77,7 +77,7 @@ export default class KickCommand extends BushCommand {
return message.util.reply(canModerateResponse);
}
- const responseCode = await member.bushKick({
+ const responseCode = await member.customKick({
reason,
moderator: message.member
});
diff --git a/src/commands/moderation/lockdown.ts b/src/commands/moderation/lockdown.ts
index 0561767..57f9caf 100644
--- a/src/commands/moderation/lockdown.ts
+++ b/src/commands/moderation/lockdown.ts
@@ -1,6 +1,6 @@
import {
AllowedMentions,
- BushCommand,
+ BotCommand,
clientSendAndPermCheck,
colors,
ConfirmationPrompt,
@@ -23,7 +23,7 @@ import {
VoiceChannel
} from 'discord.js';
-export default class LockdownCommand extends BushCommand {
+export default class LockdownCommand extends BotCommand {
public constructor() {
super('lockdown', {
aliases: ['lockdown', 'lock'],
diff --git a/src/commands/moderation/massBan.ts b/src/commands/moderation/massBan.ts
index db50c44..4ba4f47 100644
--- a/src/commands/moderation/massBan.ts
+++ b/src/commands/moderation/massBan.ts
@@ -2,12 +2,13 @@ import {
Arg,
BanResponse,
banResponse,
- BushCommand,
+ BotCommand,
clientSendAndPermCheck,
colors,
emojis,
overflowEmbed,
regex,
+ TanzaniteEvent,
type ArgType,
type CommandMessage,
type OptArgType,
@@ -16,7 +17,7 @@ import {
import assert from 'assert/strict';
import { ApplicationCommandOptionType, Collection, PermissionFlagsBits } from 'discord.js';
-export default class MassBanCommand extends BushCommand {
+export default class MassBanCommand extends BotCommand {
public constructor() {
super('massBan', {
aliases: ['mass-ban', 'mass-dban'],
@@ -96,7 +97,13 @@ export default class MassBanCommand extends BushCommand {
const res = await Promise.all(promises);
const map = new Collection(res.map((r, i) => [ids[i], r]));
- this.client.emit('massBan', message.member!, message.guild!, args.reason ? args.reason.trim() : 'No reason provided.', map);
+ this.client.emit(
+ TanzaniteEvent.MassBan,
+ message.member!,
+ message.guild!,
+ args.reason ? args.reason.trim() : 'No reason provided.',
+ map
+ );
const success = (res: BanResponse): boolean => [banResponse.SUCCESS, banResponse.DM_ERROR].includes(res as any);
diff --git a/src/commands/moderation/massEvidence.ts b/src/commands/moderation/massEvidence.ts
index cecf273..b44060e 100644
--- a/src/commands/moderation/massEvidence.ts
+++ b/src/commands/moderation/massEvidence.ts
@@ -1,11 +1,12 @@
import {
- BushCommand,
+ BotCommand,
clientSendAndPermCheck,
colors,
emojis,
ModLog,
overflowEmbed,
regex,
+ TanzaniteEvent,
type ArgType,
type CommandMessage,
type OptArgType,
@@ -15,7 +16,7 @@ import assert from 'assert/strict';
import { ApplicationCommandOptionType, PermissionFlagsBits } from 'discord.js';
import EvidenceCommand from './evidence.js';
-export default class MassEvidenceCommand extends BushCommand {
+export default class MassEvidenceCommand extends BotCommand {
public constructor() {
super('massEvidence', {
aliases: ['mass-evidence'],
@@ -93,7 +94,7 @@ export default class MassEvidenceCommand extends BushCommand {
return `${emojis.success} ${id} - ${case_.id}`;
});
- this.client.emit('massEvidence', message.member!, message.guild, evidence, lines);
+ this.client.emit(TanzaniteEvent.MassEvidence, message.member!, message.guild, evidence, lines);
const embeds = overflowEmbed(
{
diff --git a/src/commands/moderation/modlog.ts b/src/commands/moderation/modlog.ts
index 527ba36..08e5397 100644
--- a/src/commands/moderation/modlog.ts
+++ b/src/commands/moderation/modlog.ts
@@ -1,6 +1,6 @@
import {
Arg,
- BushCommand,
+ BotCommand,
ButtonPaginator,
chunk,
clientSendAndPermCheck,
@@ -17,7 +17,7 @@ import {
import assert from 'assert/strict';
import { ApplicationCommandOptionType, escapeMarkdown, PermissionFlagsBits, User } from 'discord.js';
-export default class ModlogCommand extends BushCommand {
+export default class ModlogCommand extends BotCommand {
public static separator = '\n━━━━━━━━━━━━━━━\n';
public constructor() {
diff --git a/src/commands/moderation/mute.ts b/src/commands/moderation/mute.ts
index 4627f2c..debcf03 100644
--- a/src/commands/moderation/mute.ts
+++ b/src/commands/moderation/mute.ts
@@ -1,6 +1,6 @@
import {
AllowedMentions,
- BushCommand,
+ BotCommand,
castDurationContent,
clientSendAndPermCheck,
emojis,
@@ -17,7 +17,7 @@ import {
import assert from 'assert/strict';
import { ApplicationCommandOptionType, PermissionFlagsBits, type GuildMember } from 'discord.js';
-export default class MuteCommand extends BushCommand {
+export default class MuteCommand extends BotCommand {
public constructor() {
super('mute', {
aliases: ['mute'],
@@ -86,7 +86,7 @@ export default class MuteCommand extends BushCommand {
return message.util.reply(canModerateResponse);
}
- const responseCode = await member.bushMute({
+ const responseCode = await member.customMute({
reason: content,
moderator: message.member,
duration
diff --git a/src/commands/moderation/myLogs.ts b/src/commands/moderation/myLogs.ts
index c1cc448..34ab8e0 100644
--- a/src/commands/moderation/myLogs.ts
+++ b/src/commands/moderation/myLogs.ts
@@ -1,5 +1,5 @@
import {
- BushCommand,
+ BotCommand,
ButtonPaginator,
chunk,
clientSendAndPermCheck,
@@ -14,7 +14,7 @@ import {
import { ApplicationCommandOptionType } from 'discord.js';
import { input, sanitizeInputForDiscord } from '../../../lib/utils/Format.js';
import ModlogCommand from './modlog.js';
-export default class MyLogsCommand extends BushCommand {
+export default class MyLogsCommand extends BotCommand {
public constructor() {
super('myLogs', {
aliases: ['my-logs', 'my-log', 'my-modlogs', 'my-modlog'],
diff --git a/src/commands/moderation/purge.ts b/src/commands/moderation/purge.ts
index 383c439..106f394 100644
--- a/src/commands/moderation/purge.ts
+++ b/src/commands/moderation/purge.ts
@@ -1,9 +1,10 @@
import {
Arg,
- BushCommand,
+ BotCommand,
clientSendAndPermCheck,
emojis,
OptArgType,
+ TanzaniteEvent,
type ArgType,
type CommandMessage,
type SlashMessage
@@ -11,7 +12,7 @@ import {
import assert from 'assert/strict';
import { ApplicationCommandOptionType, Collection, PermissionFlagsBits, type Message } from 'discord.js';
-export default class PurgeCommand extends BushCommand {
+export default class PurgeCommand extends BotCommand {
public constructor() {
super('purge', {
aliases: ['purge', 'clear'],
@@ -83,7 +84,7 @@ export default class PurgeCommand extends BushCommand {
const purged = await message.channel!.bulkDelete(messages, true).catch(() => null);
if (!purged) return message.util.reply(`${emojis.error} Failed to purge messages.`).catch(() => null);
else {
- this.client.emit('bushPurge', message.author, message.guild, message.channel!, messages);
+ this.client.emit(TanzaniteEvent.Purge, message.author, message.guild, message.channel!, messages);
await message.util.send(`${emojis.success} Successfully purged **${purged.size}** messages.`);
/* .then(async (purgeMessage) => {
if (!message.util.isSlashMessage(message)) {
diff --git a/src/commands/moderation/removeReactionEmoji.ts b/src/commands/moderation/removeReactionEmoji.ts
index cc3713c..5baeffc 100644
--- a/src/commands/moderation/removeReactionEmoji.ts
+++ b/src/commands/moderation/removeReactionEmoji.ts
@@ -1,6 +1,6 @@
import {
Arg,
- BushCommand,
+ BotCommand,
clientSendAndPermCheck,
emojis,
format,
@@ -11,7 +11,7 @@ import {
import assert from 'assert/strict';
import { ApplicationCommandOptionType, Message, PermissionFlagsBits } from 'discord.js';
-export default class RemoveReactionEmojiCommand extends BushCommand {
+export default class RemoveReactionEmojiCommand extends BotCommand {
public constructor() {
super('removeReactionEmoji', {
aliases: ['remove-reaction-emoji', 'rre'],
diff --git a/src/commands/moderation/role.ts b/src/commands/moderation/role.ts
index 5251be7..6b874da 100644
--- a/src/commands/moderation/role.ts
+++ b/src/commands/moderation/role.ts
@@ -1,7 +1,7 @@
import {
addRoleResponse,
AllowedMentions,
- BushCommand,
+ BotCommand,
clientSendAndPermCheck,
emojis,
format,
@@ -17,7 +17,7 @@ import assert from 'assert/strict';
import { type ArgumentGeneratorReturn } from 'discord-akairo';
import { ApplicationCommandOptionType, PermissionFlagsBits, type Snowflake } from 'discord.js';
-export default class RoleCommand extends BushCommand {
+export default class RoleCommand extends BotCommand {
public constructor() {
super('role', {
aliases: ['role', 'rr', 'ar', 'ra'],
@@ -169,7 +169,7 @@ export default class RoleCommand extends BushCommand {
const shouldLog = this.punishmentRoleNames.includes(args.role.name);
- const responseCode = await args.member[`bush${args.action === 'add' ? 'Add' : 'Remove'}Role`]({
+ const responseCode = await args.member[`custom${args.action === 'add' ? 'Add' : 'Remove'}Role`]({
moderator: message.member!,
addToModlog: shouldLog,
role: args.role,
diff --git a/src/commands/moderation/slowmode.ts b/src/commands/moderation/slowmode.ts
index 2e603c6..66bc2a0 100644
--- a/src/commands/moderation/slowmode.ts
+++ b/src/commands/moderation/slowmode.ts
@@ -1,6 +1,6 @@
import {
Arg,
- BushCommand,
+ BotCommand,
clientSendAndPermCheck,
emojis,
format,
@@ -14,7 +14,7 @@ import assert from 'assert/strict';
import { Argument } from 'discord-akairo';
import { ApplicationCommandOptionType, ChannelType, PermissionFlagsBits } from 'discord.js';
-export default class SlowmodeCommand extends BushCommand {
+export default class SlowmodeCommand extends BotCommand {
public constructor() {
super('slowmode', {
aliases: ['slowmode', 'slow'],
diff --git a/src/commands/moderation/timeout.ts b/src/commands/moderation/timeout.ts
index 3e2b10d..5ab62e4 100644
--- a/src/commands/moderation/timeout.ts
+++ b/src/commands/moderation/timeout.ts
@@ -1,6 +1,6 @@
import {
AllowedMentions,
- BushCommand,
+ BotCommand,
castDurationContent,
clientSendAndPermCheck,
emojis,
@@ -15,7 +15,7 @@ import {
import assert from 'assert/strict';
import { ApplicationCommandOptionType, PermissionFlagsBits, type GuildMember } from 'discord.js';
-export default class TimeoutCommand extends BushCommand {
+export default class TimeoutCommand extends BotCommand {
public constructor() {
super('timeout', {
aliases: ['timeout', 'to'],
@@ -80,7 +80,7 @@ export default class TimeoutCommand extends BushCommand {
return message.util.reply(canModerateResponse);
}
- const responseCode = await member.bushTimeout({
+ const responseCode = await member.customTimeout({
reason: content,
moderator: message.member,
duration: duration
diff --git a/src/commands/moderation/unban.ts b/src/commands/moderation/unban.ts
index 3a6221a..29dedab 100644
--- a/src/commands/moderation/unban.ts
+++ b/src/commands/moderation/unban.ts
@@ -1,7 +1,7 @@
import {
AllowedMentions,
Arg,
- BushCommand,
+ BotCommand,
emojis,
format,
unbanResponse,
@@ -14,7 +14,7 @@ import {
import assert from 'assert/strict';
import { ApplicationCommandOptionType, PermissionFlagsBits, type User } from 'discord.js';
-export default class UnbanCommand extends BushCommand {
+export default class UnbanCommand extends BotCommand {
public constructor() {
super('unban', {
aliases: ['unban'],
@@ -55,7 +55,7 @@ export default class UnbanCommand extends BushCommand {
) {
assert(message.inGuild());
- const responseCode = await message.guild.bushUnban({
+ const responseCode = await message.guild.customUnban({
user,
moderator: message.author,
reason
diff --git a/src/commands/moderation/unblock.ts b/src/commands/moderation/unblock.ts
index 6533da0..e342f0f 100644
--- a/src/commands/moderation/unblock.ts
+++ b/src/commands/moderation/unblock.ts
@@ -1,6 +1,6 @@
import {
AllowedMentions,
- BushCommand,
+ BotCommand,
clientSendAndPermCheck,
emojis,
format,
@@ -16,7 +16,7 @@ import {
import assert from 'assert/strict';
import { ApplicationCommandOptionType, PermissionFlagsBits, type GuildMember } from 'discord.js';
-export default class UnblockCommand extends BushCommand {
+export default class UnblockCommand extends BotCommand {
public constructor() {
super('unblock', {
aliases: ['unblock'],
@@ -83,7 +83,7 @@ export default class UnblockCommand extends BushCommand {
return message.util.reply(canModerateResponse);
}
- const responseCode = await member.bushUnblock({
+ const responseCode = await member.customUnblock({
reason: args.reason ?? '',
moderator: message.member,
channel: message.channel
diff --git a/src/commands/moderation/unlockdown.ts b/src/commands/moderation/unlockdown.ts
index 873ea87..38d2fe6 100644
--- a/src/commands/moderation/unlockdown.ts
+++ b/src/commands/moderation/unlockdown.ts
@@ -1,8 +1,8 @@
import { LockdownCommand } from '#commands';
-import { BushCommand, clientSendAndPermCheck, type ArgType, type CommandMessage, type OptArgType, type SlashMessage } from '#lib';
+import { BotCommand, clientSendAndPermCheck, type ArgType, type CommandMessage, type OptArgType, type SlashMessage } from '#lib';
import { ApplicationCommandOptionType, Constants, PermissionFlagsBits } from 'discord.js';
-export default class UnlockdownCommand extends BushCommand {
+export default class UnlockdownCommand extends BotCommand {
public constructor() {
super('unlockdown', {
aliases: ['unlockdown', 'unlock', 'lockup'],
diff --git a/src/commands/moderation/unmute.ts b/src/commands/moderation/unmute.ts
index f1e74ab..4f408eb 100644
--- a/src/commands/moderation/unmute.ts
+++ b/src/commands/moderation/unmute.ts
@@ -11,9 +11,9 @@ import {
} from '#lib';
import assert from 'assert/strict';
import { ApplicationCommandOptionType, PermissionFlagsBits } from 'discord.js';
-import { BushCommand } from '../../../lib/extensions/discord-akairo/BushCommand.js';
+import { BotCommand } from '../../../lib/extensions/discord-akairo/BotCommand.js';
-export default class UnmuteCommand extends BushCommand {
+export default class UnmuteCommand extends BotCommand {
public constructor() {
super('unmute', {
aliases: ['unmute'],
@@ -74,7 +74,7 @@ export default class UnmuteCommand extends BushCommand {
return message.util.reply(canModerateResponse);
}
- const responseCode = await member.bushUnmute({
+ const responseCode = await member.customUnmute({
reason,
moderator: message.member
});
diff --git a/src/commands/moderation/untimeout.ts b/src/commands/moderation/untimeout.ts
index 6ca28f4..8bc977b 100644
--- a/src/commands/moderation/untimeout.ts
+++ b/src/commands/moderation/untimeout.ts
@@ -1,6 +1,6 @@
import {
AllowedMentions,
- BushCommand,
+ BotCommand,
clientSendAndPermCheck,
emojis,
format,
@@ -15,7 +15,7 @@ import {
import assert from 'assert/strict';
import { ApplicationCommandOptionType, PermissionFlagsBits, type GuildMember } from 'discord.js';
-export default class UntimeoutCommand extends BushCommand {
+export default class UntimeoutCommand extends BotCommand {
public constructor() {
super('untimeout', {
aliases: ['untimeout', 'remove-timeout'],
@@ -80,7 +80,7 @@ export default class UntimeoutCommand extends BushCommand {
return message.util.reply(canModerateResponse);
}
- const responseCode = await member.bushRemoveTimeout({
+ const responseCode = await member.customRemoveTimeout({
reason: args.reason ?? undefined,
moderator: message.member
});
diff --git a/src/commands/moderation/warn.ts b/src/commands/moderation/warn.ts
index e1d1e90..9547583 100644
--- a/src/commands/moderation/warn.ts
+++ b/src/commands/moderation/warn.ts
@@ -1,6 +1,6 @@
import {
AllowedMentions,
- BushCommand,
+ BotCommand,
clientSendAndPermCheck,
emojis,
format,
@@ -17,7 +17,7 @@ import {
import assert from 'assert/strict';
import { ApplicationCommandOptionType, PermissionFlagsBits, type GuildMember } from 'discord.js';
-export default class WarnCommand extends BushCommand {
+export default class WarnCommand extends BotCommand {
public constructor() {
super('warn', {
aliases: ['warn'],
@@ -77,7 +77,7 @@ export default class WarnCommand extends BushCommand {
return message.util.reply(canModerateResponse);
}
- const { result: responseCode, caseNum } = await member.bushWarn({
+ const { result: responseCode, caseNum } = await member.customWarn({
reason,
moderator: message.member
});
diff --git a/src/commands/moulberry-bush/capePermissions.ts b/src/commands/moulberry-bush/capePermissions.ts
index 793ac59..fdeddd8 100644
--- a/src/commands/moulberry-bush/capePermissions.ts
+++ b/src/commands/moulberry-bush/capePermissions.ts
@@ -1,6 +1,6 @@
import {
AllowedMentions,
- BushCommand,
+ BotCommand,
clientSendAndPermCheck,
colors,
emojis,
@@ -12,7 +12,7 @@ import {
} from '#lib';
import { ApplicationCommandOptionType, EmbedBuilder, PermissionFlagsBits } from 'discord.js';
-export default class CapePermissionsCommand extends BushCommand {
+export default class CapePermissionsCommand extends BotCommand {
public constructor() {
super('capePermissions', {
aliases: ['cape-permissions', 'cape-perms', 'cape-perm'],
diff --git a/src/commands/moulberry-bush/capes.ts b/src/commands/moulberry-bush/capes.ts
index 6ffc540..79c163f 100644
--- a/src/commands/moulberry-bush/capes.ts
+++ b/src/commands/moulberry-bush/capes.ts
@@ -1,6 +1,6 @@
import {
AllowedMentions,
- BushCommand,
+ BotCommand,
ButtonPaginator,
clientSendAndPermCheck,
colors,
@@ -18,7 +18,7 @@ import { default as Fuse } from 'fuse.js';
assert(Fuse);
-export default class CapesCommand extends BushCommand {
+export default class CapesCommand extends BotCommand {
public constructor() {
super('capes', {
aliases: ['capes', 'cape'],
diff --git a/src/commands/moulberry-bush/giveawayPing.ts b/src/commands/moulberry-bush/giveawayPing.ts
index 8f8941f..aebcc52 100644
--- a/src/commands/moulberry-bush/giveawayPing.ts
+++ b/src/commands/moulberry-bush/giveawayPing.ts
@@ -1,8 +1,8 @@
-import { AllowedMentions, BushCommand, clientSendAndPermCheck, emojis, mappings, type CommandMessage } from '#lib';
+import { AllowedMentions, BotCommand, clientSendAndPermCheck, emojis, mappings, type CommandMessage } from '#lib';
import assert from 'assert/strict';
import { PermissionFlagsBits } from 'discord.js';
-export default class GiveawayPingCommand extends BushCommand {
+export default class GiveawayPingCommand extends BotCommand {
public constructor() {
super('giveawayPing', {
aliases: ['giveaway-ping', 'giveaway-pong'],
diff --git a/src/commands/moulberry-bush/moulHammer.ts b/src/commands/moulberry-bush/moulHammer.ts
index 7bb514e..0407428 100644
--- a/src/commands/moulberry-bush/moulHammer.ts
+++ b/src/commands/moulberry-bush/moulHammer.ts
@@ -1,16 +1,8 @@
-import {
- BushCommand,
- clientSendAndPermCheck,
- colors,
- mappings,
- type ArgType,
- type CommandMessage,
- type SlashMessage
-} from '#lib';
+import { BotCommand, clientSendAndPermCheck, colors, mappings, type ArgType, type CommandMessage, type SlashMessage } from '#lib';
import assert from 'assert/strict';
import { ApplicationCommandOptionType, EmbedBuilder, PermissionFlagsBits } from 'discord.js';
-export default class MoulHammerCommand extends BushCommand {
+export default class MoulHammerCommand extends BotCommand {
public constructor() {
super('moulHammer', {
aliases: ['moul-hammer'],
diff --git a/src/commands/moulberry-bush/neuRepo.ts b/src/commands/moulberry-bush/neuRepo.ts
index 4baae7d..d8eb7ed 100644
--- a/src/commands/moulberry-bush/neuRepo.ts
+++ b/src/commands/moulberry-bush/neuRepo.ts
@@ -1,4 +1,4 @@
-import { BushCommand, clientSendAndPermCheck, type ArgType, type CommandMessage, type SlashMessage } from '#lib';
+import { BotCommand, clientSendAndPermCheck, type ArgType, type CommandMessage, type SlashMessage } from '#lib';
import canvas from '@napi-rs/canvas';
import {
ApplicationCommandOptionType,
@@ -11,7 +11,7 @@ import { join } from 'path';
import tinycolor from 'tinycolor2';
import { formattingInfo, RawNeuItem } from '../../../lib/utils/Minecraft.js';
-export default class NeuRepoCommand extends BushCommand {
+export default class NeuRepoCommand extends BotCommand {
public static items: { name: string; id: string }[] = [];
public constructor() {
diff --git a/src/commands/moulberry-bush/report.ts b/src/commands/moulberry-bush/report.ts
index d0c4f33..8eb412c 100644
--- a/src/commands/moulberry-bush/report.ts
+++ b/src/commands/moulberry-bush/report.ts
@@ -1,6 +1,6 @@
import {
AllowedMentions,
- BushCommand,
+ BotCommand,
clientSendAndPermCheck,
colors,
emojis,
@@ -13,7 +13,7 @@ import { stripIndent } from '#tags';
import assert from 'assert/strict';
import { ApplicationCommandOptionType, EmbedBuilder, PermissionFlagsBits } from 'discord.js';
-export default class ReportCommand extends BushCommand {
+export default class ReportCommand extends BotCommand {
public constructor() {
super('report', {
aliases: ['report'],
diff --git a/src/commands/moulberry-bush/rule.ts b/src/commands/moulberry-bush/rule.ts
index ab5500d..5f2155f 100644
--- a/src/commands/moulberry-bush/rule.ts
+++ b/src/commands/moulberry-bush/rule.ts
@@ -1,7 +1,7 @@
import {
AllowedMentions,
Arg,
- BushCommand,
+ BotCommand,
clientSendAndPermCheck,
mappings,
type CommandMessage,
@@ -67,7 +67,7 @@ const rules = [
}
];
-export default class RuleCommand extends BushCommand {
+export default class RuleCommand extends BotCommand {
public constructor() {
super('rule', {
aliases: ['rule', 'rules'],
diff --git a/src/commands/moulberry-bush/serverStatus.ts b/src/commands/moulberry-bush/serverStatus.ts
index cde3f04..709de26 100644
--- a/src/commands/moulberry-bush/serverStatus.ts
+++ b/src/commands/moulberry-bush/serverStatus.ts
@@ -1,7 +1,7 @@
-import { BushCommand, clientSendAndPermCheck, colors, emojis, type CommandMessage } from '#lib';
+import { BotCommand, clientSendAndPermCheck, colors, emojis, type CommandMessage } from '#lib';
import { EmbedBuilder, PermissionFlagsBits } from 'discord.js';
-export default class ServerStatusCommand extends BushCommand {
+export default class ServerStatusCommand extends BotCommand {
public constructor() {
super('serverStatus', {
aliases: ['server-status', 'ss'],
diff --git a/src/commands/moulberry-bush/solved.ts b/src/commands/moulberry-bush/solved.ts
index ac7684a..197a3ce 100644
--- a/src/commands/moulberry-bush/solved.ts
+++ b/src/commands/moulberry-bush/solved.ts
@@ -1,7 +1,7 @@
-import { BushCommand, clientSendAndPermCheck, emojis, mappings, type CommandMessage, type SlashMessage } from '#lib';
+import { BotCommand, clientSendAndPermCheck, emojis, mappings, type CommandMessage, type SlashMessage } from '#lib';
import assert from 'assert/strict';
-export default class Solved extends BushCommand {
+export default class Solved extends BotCommand {
public constructor() {
super('solved', {
aliases: ['solved'],
diff --git a/src/commands/tickets/ticket-!.ts b/src/commands/tickets/ticket-!.ts
index 6ec4093..d1462fb 100644
--- a/src/commands/tickets/ticket-!.ts
+++ b/src/commands/tickets/ticket-!.ts
@@ -1,4 +1,4 @@
-import { BushCommand, clientSendAndPermCheck, deepWriteable, type SlashMessage } from '#lib';
+import { BotCommand, clientSendAndPermCheck, deepWriteable, type SlashMessage } from '#lib';
import { Flag, type ArgumentGeneratorReturn, type SlashOption } from 'discord-akairo';
import { ApplicationCommandOptionType } from 'discord.js';
@@ -18,7 +18,7 @@ export const ticketSubcommands = deepWriteable({
}
} as const);
-export default class TicketCommand extends BushCommand {
+export default class TicketCommand extends BotCommand {
public constructor() {
super('ticket', {
aliases: ['ticket'],
diff --git a/src/commands/utilities/_poll.ts b/src/commands/utilities/_poll.ts
index 1ceb13a..4655f36 100644
--- a/src/commands/utilities/_poll.ts
+++ b/src/commands/utilities/_poll.ts
@@ -1,7 +1,7 @@
-// import { BushCommand, clientSendAndPermCheck, emojis, type ArgType, type CommandMessage, type SlashMessage } from '#lib';
+// import { clientSendAndPermCheck, CustomCommand, emojis, type ArgType, type CommandMessage, type SlashMessage } from '#lib';
// import { ApplicationCommandOptionType, ComponentType } from 'discord.js';
-// export default class PollCommand extends BushCommand {
+// export default class PollCommand extends CustomCommand {
// public constructor() {
// super('poll', {
// aliases: ['poll', 'quick-poll'],
diff --git a/src/commands/utilities/activity.ts b/src/commands/utilities/activity.ts
index e5c2cdd..414e6a2 100644
--- a/src/commands/utilities/activity.ts
+++ b/src/commands/utilities/activity.ts
@@ -1,10 +1,10 @@
import {
- BushCommand,
+ BotCommand,
clientSendAndPermCheck,
emojis,
regex,
type ArgType,
- type BushArgumentTypeCaster,
+ type BotArgumentTypeCaster,
type CommandMessage,
type SlashMessage
} from '#lib';
@@ -75,14 +75,14 @@ function map(phase: string): Activity | null {
return null;
}
-const activityTypeCaster: BushArgumentTypeCaster<Snowflake | null> = (message: CommandMessage, phrase: string) => {
+const activityTypeCaster: BotArgumentTypeCaster<Snowflake | null> = (message: CommandMessage, phrase: string) => {
const parsedPhrase = phrase ?? message.util.parsed?.alias !== 'activity' ? message.util.parsed?.alias : undefined;
if (!parsedPhrase) return null;
const mappedPhrase = map(parsedPhrase)?.id;
return mappedPhrase ?? null;
};
-export default class ActivityCommand extends BushCommand {
+export default class ActivityCommand extends BotCommand {
public constructor() {
super('activity', {
aliases: ['activity', ...Object.values(activityMap).flatMap((a) => a.aliases)],
diff --git a/src/commands/utilities/calculator.ts b/src/commands/utilities/calculator.ts
index dc5593b..c9d300c 100644
--- a/src/commands/utilities/calculator.ts
+++ b/src/commands/utilities/calculator.ts
@@ -1,6 +1,6 @@
import {
AllowedMentions,
- BushCommand,
+ BotCommand,
clientSendAndPermCheck,
colors,
emojis,
@@ -13,7 +13,7 @@ import { evaluate } from 'mathjs';
assert(evaluate);
-export default class CalculatorCommand extends BushCommand {
+export default class CalculatorCommand extends BotCommand {
public constructor() {
super('calculator', {
aliases: ['calculator', 'calc', 'math'],
diff --git a/src/commands/utilities/decode.ts b/src/commands/utilities/decode.ts
index 065e9e5..12a016b 100644
--- a/src/commands/utilities/decode.ts
+++ b/src/commands/utilities/decode.ts
@@ -1,6 +1,6 @@
import {
AllowedMentions,
- BushCommand,
+ BotCommand,
capitalize,
clientSendAndPermCheck,
colors,
@@ -13,7 +13,7 @@ import { ApplicationCommandOptionType, EmbedBuilder } from 'discord.js';
const encodingTypesArray = ['ascii', 'utf8', 'utf-8', 'utf16le', 'ucs2', 'ucs-2', 'base64', 'latin1', 'binary', 'hex'];
const encodingTypesString = encodingTypesArray.map((e) => `\`${e}\``).join(', ');
-export default class DecodeCommand extends BushCommand {
+export default class DecodeCommand extends BotCommand {
public constructor() {
super('decode', {
aliases: ['decode', 'encode'],
diff --git a/src/commands/utilities/hash.ts b/src/commands/utilities/hash.ts
index 251d5e6..1c741bd 100644
--- a/src/commands/utilities/hash.ts
+++ b/src/commands/utilities/hash.ts
@@ -1,4 +1,4 @@
-// import { BushCommand, clientSendAndPermCheck, type CommandMessage } from '#lib';
+// import { clientSendAndPermCheck, CustomCommand, type CommandMessage } from '#lib';
// import assert from 'assert/strict';
// import crypto from 'crypto';
// import { ApplicationCommandOptionType } from 'discord.js';
@@ -7,7 +7,7 @@
// assert(crypto);
// assert(got);
-// export default class HashCommand extends BushCommand {
+// export default class HashCommand extends CustomCommand {
// public constructor() {
// super('hash', {
// aliases: ['hash'],
diff --git a/src/commands/utilities/highlight-!.ts b/src/commands/utilities/highlight-!.ts
index f2ee259..4995e97 100644
--- a/src/commands/utilities/highlight-!.ts
+++ b/src/commands/utilities/highlight-!.ts
@@ -1,4 +1,4 @@
-import { BushCommand, clientSendAndPermCheck, deepWriteable, Highlight, HighlightWord, type SlashMessage } from '#lib';
+import { BotCommand, clientSendAndPermCheck, deepWriteable, Highlight, HighlightWord, type SlashMessage } from '#lib';
import { Flag, type ArgumentGeneratorReturn, type SlashOption } from 'discord-akairo';
import { ApplicationCommandOptionType, Constants, type AutocompleteInteraction, type CacheType } from 'discord.js';
@@ -133,7 +133,7 @@ export const highlightSubcommands = deepWriteable({
}
} as const);
-export default class HighlightCommand extends BushCommand {
+export default class HighlightCommand extends BotCommand {
public constructor() {
super('highlight', {
aliases: ['highlight', 'hl'],
diff --git a/src/commands/utilities/highlight-add.ts b/src/commands/utilities/highlight-add.ts
index e7d3ec6..101b26e 100644
--- a/src/commands/utilities/highlight-add.ts
+++ b/src/commands/utilities/highlight-add.ts
@@ -1,8 +1,8 @@
-import { AllowedMentions, BushCommand, emojis, format, type ArgType, type CommandMessage, type SlashMessage } from '#lib';
+import { AllowedMentions, BotCommand, emojis, format, type ArgType, type CommandMessage, type SlashMessage } from '#lib';
import assert from 'assert/strict';
import { highlightSubcommands } from './highlight-!.js';
-export default class HighlightAddCommand extends BushCommand {
+export default class HighlightAddCommand extends BotCommand {
public constructor() {
super('highlight-add', {
aliases: [],
diff --git a/src/commands/utilities/highlight-block.ts b/src/commands/utilities/highlight-block.ts
index 58e7766..b16852e 100644
--- a/src/commands/utilities/highlight-block.ts
+++ b/src/commands/utilities/highlight-block.ts
@@ -1,11 +1,11 @@
-import { AllowedMentions, BushCommand, emojis, type ArgType, type CommandMessage, type SlashMessage } from '#lib';
+import { AllowedMentions, BotCommand, emojis, type ArgType, type CommandMessage, type SlashMessage } from '#lib';
import assert from 'assert/strict';
import { Argument, ArgumentGeneratorReturn } from 'discord-akairo';
import { BaseChannel, GuildMember, User } from 'discord.js';
import { HighlightBlockResult } from '../../../lib/common/HighlightManager.js';
import { highlightSubcommands } from './highlight-!.js';
-export default class HighlightBlockCommand extends BushCommand {
+export default class HighlightBlockCommand extends BotCommand {
public constructor() {
super('highlight-block', {
aliases: [],
diff --git a/src/commands/utilities/highlight-clear.ts b/src/commands/utilities/highlight-clear.ts
index 5451e4e..d02cda6 100644
--- a/src/commands/utilities/highlight-clear.ts
+++ b/src/commands/utilities/highlight-clear.ts
@@ -1,8 +1,8 @@
-import { BushCommand, ConfirmationPrompt, emojis, type CommandMessage, type SlashMessage } from '#lib';
+import { BotCommand, ConfirmationPrompt, emojis, type CommandMessage, type SlashMessage } from '#lib';
import assert from 'assert/strict';
import { highlightSubcommands } from './highlight-!.js';
-export default class HighlightClearCommand extends BushCommand {
+export default class HighlightClearCommand extends BotCommand {
public constructor() {
super('highlight-clear', {
aliases: [],
diff --git a/src/commands/utilities/highlight-matches.ts b/src/commands/utilities/highlight-matches.ts
index 863445e..d54fd4a 100644
--- a/src/commands/utilities/highlight-matches.ts
+++ b/src/commands/utilities/highlight-matches.ts
@@ -1,10 +1,10 @@
-import { BushCommand, ButtonPaginator, chunk, colors, emojis, type ArgType, type CommandMessage, type SlashMessage } from '#lib';
+import { BotCommand, ButtonPaginator, chunk, colors, emojis, type ArgType, type CommandMessage, type SlashMessage } from '#lib';
import assert from 'assert/strict';
import { type ArgumentGeneratorReturn } from 'discord-akairo';
import { type APIEmbed } from 'discord.js';
import { highlightSubcommands } from './highlight-!.js';
-export default class HighlightMatchesCommand extends BushCommand {
+export default class HighlightMatchesCommand extends BotCommand {
public constructor() {
super('highlight-matches', {
aliases: [],
diff --git a/src/commands/utilities/highlight-remove.ts b/src/commands/utilities/highlight-remove.ts
index fd2fa90..b91bc8c 100644
--- a/src/commands/utilities/highlight-remove.ts
+++ b/src/commands/utilities/highlight-remove.ts
@@ -1,8 +1,8 @@
-import { AllowedMentions, BushCommand, emojis, type ArgType, type CommandMessage, type SlashMessage } from '#lib';
+import { AllowedMentions, BotCommand, emojis, type ArgType, type CommandMessage, type SlashMessage } from '#lib';
import assert from 'assert/strict';
import { highlightSubcommands } from './highlight-!.js';
-export default class HighlightRemoveCommand extends BushCommand {
+export default class HighlightRemoveCommand extends BotCommand {
public constructor() {
super('highlight-remove', {
aliases: [],
diff --git a/src/commands/utilities/highlight-show.ts b/src/commands/utilities/highlight-show.ts
index 2ed5ed1..6d386e9 100644
--- a/src/commands/utilities/highlight-show.ts
+++ b/src/commands/utilities/highlight-show.ts
@@ -1,9 +1,9 @@
-import { AllowedMentions, BushCommand, colors, emojis, Highlight, type CommandMessage, type SlashMessage } from '#lib';
+import { AllowedMentions, BotCommand, colors, emojis, Highlight, type CommandMessage, type SlashMessage } from '#lib';
import assert from 'assert/strict';
import { EmbedBuilder } from 'discord.js';
import { highlightSubcommands } from './highlight-!.js';
-export default class HighlightShowCommand extends BushCommand {
+export default class HighlightShowCommand extends BotCommand {
public constructor() {
super('highlight-show', {
aliases: [],
diff --git a/src/commands/utilities/highlight-unblock.ts b/src/commands/utilities/highlight-unblock.ts
index 2238831..0f2dd78 100644
--- a/src/commands/utilities/highlight-unblock.ts
+++ b/src/commands/utilities/highlight-unblock.ts
@@ -1,11 +1,11 @@
-import { AllowedMentions, BushCommand, emojis, type ArgType, type CommandMessage, type SlashMessage } from '#lib';
+import { AllowedMentions, BotCommand, emojis, type ArgType, type CommandMessage, type SlashMessage } from '#lib';
import assert from 'assert';
import { Argument, ArgumentGeneratorReturn } from 'discord-akairo';
import { BaseChannel, GuildMember, User } from 'discord.js';
import { HighlightUnblockResult } from '../../../lib/common/HighlightManager.js';
import { highlightSubcommands } from './highlight-!.js';
-export default class HighlightUnblockCommand extends BushCommand {
+export default class HighlightUnblockCommand extends BotCommand {
public constructor() {
super('highlight-unblock', {
aliases: [],
diff --git a/src/commands/utilities/price.ts b/src/commands/utilities/price.ts
index bfe1f10..a1645dc 100644
--- a/src/commands/utilities/price.ts
+++ b/src/commands/utilities/price.ts
@@ -1,11 +1,11 @@
-import { ArgType, BushCommand, clientSendAndPermCheck, colors, emojis, format, oxford, type CommandMessage } from '#lib';
+import { ArgType, BotCommand, clientSendAndPermCheck, colors, emojis, format, oxford, type CommandMessage } from '#lib';
import assert from 'assert/strict';
import { ApplicationCommandOptionType, AutocompleteInteraction, EmbedBuilder, PermissionFlagsBits } from 'discord.js';
import { default as Fuse } from 'fuse.js';
assert(Fuse);
-export default class PriceCommand extends BushCommand {
+export default class PriceCommand extends BotCommand {
public static cachedItemList: string[] = [];
public static readonly urls = [
{ url: 'https://api.hypixel.net/skyblock/bazaar', error: 'bazaar' },
diff --git a/src/commands/utilities/remind.ts b/src/commands/utilities/remind.ts
index 3a1cd18..498a63d 100644
--- a/src/commands/utilities/remind.ts
+++ b/src/commands/utilities/remind.ts
@@ -1,5 +1,5 @@
import {
- BushCommand,
+ BotCommand,
castDurationContent,
clientSendAndPermCheck,
dateDelta,
@@ -14,7 +14,7 @@ import {
} from '#lib';
import { ApplicationCommandOptionType } from 'discord.js';
-export default class RemindCommand extends BushCommand {
+export default class RemindCommand extends BotCommand {
public constructor() {
super('remind', {
aliases: ['remind', 'remindme', 'reminder'],
diff --git a/src/commands/utilities/reminders.ts b/src/commands/utilities/reminders.ts
index fdce981..f98166f 100644
--- a/src/commands/utilities/reminders.ts
+++ b/src/commands/utilities/reminders.ts
@@ -1,5 +1,5 @@
import {
- BushCommand,
+ BotCommand,
ButtonPaginator,
chunk,
clientSendAndPermCheck,
@@ -16,7 +16,7 @@ import { Op } from 'sequelize';
assert(Op);
-export default class RemindersCommand extends BushCommand {
+export default class RemindersCommand extends BotCommand {
public constructor() {
super('reminders', {
aliases: ['reminders', 'view-reminders', 'list-reminders'],
diff --git a/src/commands/utilities/steal.ts b/src/commands/utilities/steal.ts
index b07338f..7f70830 100644
--- a/src/commands/utilities/steal.ts
+++ b/src/commands/utilities/steal.ts
@@ -1,6 +1,6 @@
import {
Arg,
- BushCommand,
+ BotCommand,
clientSendAndPermCheck,
emojis,
format,
@@ -28,7 +28,7 @@ const enum lang {
nameDescription = 'The name to give the new emoji.'
}
-export default class StealCommand extends BushCommand {
+export default class StealCommand extends BotCommand {
public constructor() {
super('steal', {
aliases: ['steal', 'copy-emoji', 'emoji'],
diff --git a/src/commands/utilities/suicide.ts b/src/commands/utilities/suicide.ts
index f4c76be..bc76d9c 100644
--- a/src/commands/utilities/suicide.ts
+++ b/src/commands/utilities/suicide.ts
@@ -1,8 +1,8 @@
-import { AllowedMentions, BushCommand, clientSendAndPermCheck, colors, type CommandMessage, type SlashMessage } from '#lib';
+import { AllowedMentions, BotCommand, clientSendAndPermCheck, colors, type CommandMessage, type SlashMessage } from '#lib';
import { stripIndent } from '#tags';
import { EmbedBuilder } from 'discord.js';
-export default class SuicideCommand extends BushCommand {
+export default class SuicideCommand extends BotCommand {
public constructor() {
super('suicide', {
aliases: ['suicide'],
diff --git a/src/commands/utilities/uuid.ts b/src/commands/utilities/uuid.ts
index 04d4013..041acfc 100644
--- a/src/commands/utilities/uuid.ts
+++ b/src/commands/utilities/uuid.ts
@@ -1,7 +1,7 @@
import {
AllowedMentions,
ArgType,
- BushCommand,
+ BotCommand,
clientSendAndPermCheck,
emojis,
format,
@@ -11,7 +11,7 @@ import {
} from '#lib';
import { ApplicationCommandOptionType } from 'discord.js';
-export default class UuidCommand extends BushCommand {
+export default class UuidCommand extends BotCommand {
public constructor() {
super('uuid', {
aliases: ['uuid'],
diff --git a/src/commands/utilities/viewRaw.ts b/src/commands/utilities/viewRaw.ts
index a7d8b25..63125c3 100644
--- a/src/commands/utilities/viewRaw.ts
+++ b/src/commands/utilities/viewRaw.ts
@@ -1,6 +1,6 @@
import {
Arg,
- BushCommand,
+ BotCommand,
clientSendAndPermCheck,
colors,
emojis,
@@ -13,7 +13,7 @@ import {
import assert from 'assert/strict';
import { ApplicationCommandOptionType, Constants, EmbedBuilder, Message, PermissionFlagsBits } from 'discord.js';
-export default class ViewRawCommand extends BushCommand {
+export default class ViewRawCommand extends BotCommand {
public constructor() {
super('view-raw', {
aliases: ['view-raw', 'vr'],
diff --git a/src/commands/utilities/whoHasRole.ts b/src/commands/utilities/whoHasRole.ts
index 789701c..23eccd6 100644
--- a/src/commands/utilities/whoHasRole.ts
+++ b/src/commands/utilities/whoHasRole.ts
@@ -1,5 +1,5 @@
import {
- BushCommand,
+ BotCommand,
ButtonPaginator,
chunk,
clientSendAndPermCheck,
@@ -13,7 +13,7 @@ import {
import assert from 'assert/strict';
import { ApplicationCommandOptionType, escapeMarkdown, type CommandInteraction, type Role } from 'discord.js';
-export default class WhoHasRoleCommand extends BushCommand {
+export default class WhoHasRoleCommand extends BotCommand {
public constructor() {
super('whoHasRole', {
aliases: ['who-has-role', 'whr', 'dump'],
diff --git a/src/commands/utilities/wolframAlpha.ts b/src/commands/utilities/wolframAlpha.ts
index 5ba55f7..863b16a 100644
--- a/src/commands/utilities/wolframAlpha.ts
+++ b/src/commands/utilities/wolframAlpha.ts
@@ -1,6 +1,6 @@
import {
AllowedMentions,
- BushCommand,
+ BotCommand,
clientSendAndPermCheck,
colors,
emojis,
@@ -14,7 +14,7 @@ import { ApplicationCommandOptionType, EmbedBuilder, type MessageOptions } from
assert(WolframAlphaAPI);
-export default class WolframAlphaCommand extends BushCommand {
+export default class WolframAlphaCommand extends BotCommand {
public constructor() {
super('wolframAlpha', {
aliases: ['wolfram-alpha', 'wolfram', 'alpha', 'wolf', 'wa'],
diff --git a/src/inhibitors/blacklist/channelGlobalBlacklist.ts b/src/inhibitors/blacklist/channelGlobalBlacklist.ts
index 7f23604..988931b 100644
--- a/src/inhibitors/blacklist/channelGlobalBlacklist.ts
+++ b/src/inhibitors/blacklist/channelGlobalBlacklist.ts
@@ -1,16 +1,15 @@
-import { BushInhibitor, type BushCommand, type CommandMessage, type SlashMessage } from '#lib';
+import { BotInhibitor, type BotCommand, type CommandMessage, type SlashMessage } from '#lib';
-export default class UserGlobalBlacklistInhibitor extends BushInhibitor {
+export default class UserGlobalBlacklistInhibitor extends BotInhibitor {
public constructor() {
super('channelGlobalBlacklist', {
reason: 'channelGlobalBlacklist',
- category: 'blacklist',
type: 'post',
priority: 500
});
}
- public exec(message: CommandMessage | SlashMessage, command: BushCommand): boolean {
+ public exec(message: CommandMessage | SlashMessage, command: BotCommand): boolean {
if (!message.author || !message.inGuild()) return false;
// do not change to message.author.isOwner()
if (this.client.isOwner(message.author) || this.client.user!.id === message.author.id) return false;
diff --git a/src/inhibitors/blacklist/channelGuildBlacklist.ts b/src/inhibitors/blacklist/channelGuildBlacklist.ts
index ae087bd..4bf42d2 100644
--- a/src/inhibitors/blacklist/channelGuildBlacklist.ts
+++ b/src/inhibitors/blacklist/channelGuildBlacklist.ts
@@ -1,16 +1,15 @@
-import { BushInhibitor, type BushCommand, type CommandMessage, type SlashMessage } from '#lib';
+import { BotInhibitor, type BotCommand, type CommandMessage, type SlashMessage } from '#lib';
-export default class ChannelGuildBlacklistInhibitor extends BushInhibitor {
+export default class ChannelGuildBlacklistInhibitor extends BotInhibitor {
public constructor() {
super('channelGuildBlacklist', {
reason: 'channelGuildBlacklist',
- category: 'blacklist',
type: 'post',
priority: 499
});
}
- public async exec(message: CommandMessage | SlashMessage, command: BushCommand): Promise<boolean> {
+ public async exec(message: CommandMessage | SlashMessage, command: BotCommand): Promise<boolean> {
if (!message.author || !message.inGuild()) return false;
// do not change to message.author.isOwner()
if (this.client.isOwner(message.author) || this.client.user!.id === message.author.id) return false;
diff --git a/src/inhibitors/blacklist/guildBlacklist.ts b/src/inhibitors/blacklist/guildBlacklist.ts
index b7df41a..636d0a3 100644
--- a/src/inhibitors/blacklist/guildBlacklist.ts
+++ b/src/inhibitors/blacklist/guildBlacklist.ts
@@ -1,10 +1,9 @@
-import { BushInhibitor, type CommandMessage, type SlashMessage } from '#lib';
+import { BotInhibitor, type CommandMessage, type SlashMessage } from '#lib';
-export default class GuildBlacklistInhibitor extends BushInhibitor {
+export default class GuildBlacklistInhibitor extends BotInhibitor {
public constructor() {
super('guildBlacklist', {
reason: 'guildBlacklist',
- category: 'blacklist',
type: 'all',
priority: 50
});
diff --git a/src/inhibitors/blacklist/userGlobalBlacklist.ts b/src/inhibitors/blacklist/userGlobalBlacklist.ts
index e8a1306..f5b15df 100644
--- a/src/inhibitors/blacklist/userGlobalBlacklist.ts
+++ b/src/inhibitors/blacklist/userGlobalBlacklist.ts
@@ -1,10 +1,9 @@
-import { BushInhibitor, type CommandMessage, type SlashMessage } from '#lib';
+import { BotInhibitor, type CommandMessage, type SlashMessage } from '#lib';
-export default class UserGlobalBlacklistInhibitor extends BushInhibitor {
+export default class UserGlobalBlacklistInhibitor extends BotInhibitor {
public constructor() {
super('userGlobalBlacklist', {
reason: 'userGlobalBlacklist',
- category: 'blacklist',
type: 'pre',
priority: 30
});
diff --git a/src/inhibitors/blacklist/userGuildBlacklist.ts b/src/inhibitors/blacklist/userGuildBlacklist.ts
index a661606..3186d59 100644
--- a/src/inhibitors/blacklist/userGuildBlacklist.ts
+++ b/src/inhibitors/blacklist/userGuildBlacklist.ts
@@ -1,10 +1,9 @@
-import { BushInhibitor, type CommandMessage, type SlashMessage } from '#lib';
+import { BotInhibitor, type CommandMessage, type SlashMessage } from '#lib';
-export default class UserGuildBlacklistInhibitor extends BushInhibitor {
+export default class UserGuildBlacklistInhibitor extends BotInhibitor {
public constructor() {
super('userGuildBlacklist', {
reason: 'userGuildBlacklist',
- category: 'blacklist',
type: 'pre',
priority: 20
});
diff --git a/src/inhibitors/checks/fatal.ts b/src/inhibitors/checks/fatal.ts
index 9fda504..4364d48 100644
--- a/src/inhibitors/checks/fatal.ts
+++ b/src/inhibitors/checks/fatal.ts
@@ -1,12 +1,11 @@
-import { BushInhibitor, type SlashMessage } from '#lib';
+import { BotInhibitor, type SlashMessage } from '#lib';
import { type Message } from 'discord.js';
-export default class FatalInhibitor extends BushInhibitor {
+export default class FatalInhibitor extends BotInhibitor {
public constructor() {
super('fatal', {
reason: 'fatal',
type: 'all',
- category: 'checks',
priority: 100
});
}
diff --git a/src/inhibitors/checks/guildUnavailable.ts b/src/inhibitors/checks/guildUnavailable.ts
index f5b62f4..4439d69 100644
--- a/src/inhibitors/checks/guildUnavailable.ts
+++ b/src/inhibitors/checks/guildUnavailable.ts
@@ -1,12 +1,11 @@
-import { BushInhibitor, type SlashMessage } from '#lib';
+import { BotInhibitor, type SlashMessage } from '#lib';
import { type Message } from 'discord.js';
-export default class GuildUnavailableInhibitor extends BushInhibitor {
+export default class GuildUnavailableInhibitor extends BotInhibitor {
public constructor() {
super('guildUnavailable', {
reason: 'guildUnavailable',
type: 'all',
- category: 'checks',
priority: 70
});
}
diff --git a/src/inhibitors/command/dm.ts b/src/inhibitors/command/dm.ts
index 5516c81..f25f542 100644
--- a/src/inhibitors/command/dm.ts
+++ b/src/inhibitors/command/dm.ts
@@ -1,16 +1,15 @@
-import { BushInhibitor, type BushCommand, type CommandMessage, type SlashMessage } from '#lib';
+import { BotInhibitor, type BotCommand, type CommandMessage, type SlashMessage } from '#lib';
-export default class DMInhibitor extends BushInhibitor {
+export default class DMInhibitor extends BotInhibitor {
public constructor() {
super('dm', {
reason: 'dm',
- category: 'command',
type: 'post',
priority: 75
});
}
- public async exec(message: CommandMessage | SlashMessage, command: BushCommand): Promise<boolean> {
+ public async exec(message: CommandMessage | SlashMessage, command: BotCommand): Promise<boolean> {
if (command.channel === 'dm' && message.guild) {
void this.client.console.verbose(
'dm',
diff --git a/src/inhibitors/command/globalDisabledCommand.ts b/src/inhibitors/command/globalDisabledCommand.ts
index f013183..4a93f2f 100644
--- a/src/inhibitors/command/globalDisabledCommand.ts
+++ b/src/inhibitors/command/globalDisabledCommand.ts
@@ -1,16 +1,15 @@
-import { BushInhibitor, type BushCommand, type CommandMessage, type SlashMessage } from '#lib';
+import { BotInhibitor, type BotCommand, type CommandMessage, type SlashMessage } from '#lib';
-export default class DisabledGuildCommandInhibitor extends BushInhibitor {
+export default class DisabledGuildCommandInhibitor extends BotInhibitor {
public constructor() {
super('disabledGlobalCommand', {
reason: 'disabledGlobal',
- category: 'command',
type: 'post',
priority: 300
});
}
- public async exec(message: CommandMessage | SlashMessage, command: BushCommand): Promise<boolean> {
+ public async exec(message: CommandMessage | SlashMessage, command: BotCommand): Promise<boolean> {
if (message.author.isOwner()) return false;
if (this.client.cache.global.disabledCommands.includes(command?.id)) {
void this.client.console.verbose(
diff --git a/src/inhibitors/command/guild.ts b/src/inhibitors/command/guild.ts
index ea52d99..1d70c7d 100644
--- a/src/inhibitors/command/guild.ts
+++ b/src/inhibitors/command/guild.ts
@@ -1,16 +1,15 @@
-import { BushInhibitor, type BushCommand, type CommandMessage, type SlashMessage } from '#lib';
+import { BotInhibitor, type BotCommand, type CommandMessage, type SlashMessage } from '#lib';
-export default class GuildInhibitor extends BushInhibitor {
+export default class GuildInhibitor extends BotInhibitor {
public constructor() {
super('guild', {
reason: 'guild',
- category: 'command',
type: 'post',
priority: 80
});
}
- public async exec(message: CommandMessage | SlashMessage, command: BushCommand): Promise<boolean> {
+ public async exec(message: CommandMessage | SlashMessage, command: BotCommand): Promise<boolean> {
if (command.channel === 'guild' && !message.guild) {
void this.client.console.verbose(
'guild',
diff --git a/src/inhibitors/command/guildDisabledCommand.ts b/src/inhibitors/command/guildDisabledCommand.ts
index 7fef78a..97ac995 100644
--- a/src/inhibitors/command/guildDisabledCommand.ts
+++ b/src/inhibitors/command/guildDisabledCommand.ts
@@ -1,16 +1,15 @@
-import { BushInhibitor, type BushCommand, type CommandMessage, type SlashMessage } from '#lib';
+import { BotInhibitor, type BotCommand, type CommandMessage, type SlashMessage } from '#lib';
-export default class DisabledGuildCommandInhibitor extends BushInhibitor {
+export default class DisabledGuildCommandInhibitor extends BotInhibitor {
public constructor() {
super('disabledGuildCommand', {
reason: 'disabledGuild',
- category: 'command',
type: 'post',
priority: 250
});
}
- public async exec(message: CommandMessage | SlashMessage, command: BushCommand): Promise<boolean> {
+ public async exec(message: CommandMessage | SlashMessage, command: BotCommand): Promise<boolean> {
if (!message.guild || !message.guild) return false;
if (message.author.isOwner() || message.author.isSuperUser()) return false; // super users bypass guild disabled commands
diff --git a/src/inhibitors/command/nsfw.ts b/src/inhibitors/command/nsfw.ts
index ed55b00..623115e 100644
--- a/src/inhibitors/command/nsfw.ts
+++ b/src/inhibitors/command/nsfw.ts
@@ -1,17 +1,16 @@
-import { BushInhibitor, type BushCommand, type CommandMessage, type SlashMessage } from '#lib';
+import { BotInhibitor, type BotCommand, type CommandMessage, type SlashMessage } from '#lib';
import { type TextChannel } from 'discord.js';
-export default class NsfwInhibitor extends BushInhibitor {
+export default class NsfwInhibitor extends BotInhibitor {
public constructor() {
super('nsfw', {
reason: 'notNsfw',
- category: 'command',
type: 'post',
priority: 25
});
}
- public async exec(message: CommandMessage | SlashMessage, command: BushCommand): Promise<boolean> {
+ public async exec(message: CommandMessage | SlashMessage, command: BotCommand): Promise<boolean> {
if (command.onlyNsfw && !(message.channel as TextChannel).nsfw) {
void this.client.console.verbose(
'notNsfw',
diff --git a/src/inhibitors/command/owner.ts b/src/inhibitors/command/owner.ts
index 7a39063..15643be 100644
--- a/src/inhibitors/command/owner.ts
+++ b/src/inhibitors/command/owner.ts
@@ -1,16 +1,15 @@
-import { BushInhibitor, type BushCommand, type CommandMessage, type SlashMessage } from '#lib';
+import { BotInhibitor, type BotCommand, type CommandMessage, type SlashMessage } from '#lib';
-export default class OwnerInhibitor extends BushInhibitor {
+export default class OwnerInhibitor extends BotInhibitor {
public constructor() {
super('owner', {
reason: 'owner',
- category: 'command',
type: 'post',
priority: 100
});
}
- public async exec(message: CommandMessage | SlashMessage, command: BushCommand): Promise<boolean> {
+ public async exec(message: CommandMessage | SlashMessage, command: BotCommand): Promise<boolean> {
if (command.ownerOnly) {
if (!this.client.isOwner(message.author)) {
void this.client.console.verbose(
diff --git a/src/inhibitors/command/restrictedChannel.ts b/src/inhibitors/command/restrictedChannel.ts
index 849166a..ec23604 100644
--- a/src/inhibitors/command/restrictedChannel.ts
+++ b/src/inhibitors/command/restrictedChannel.ts
@@ -1,16 +1,15 @@
-import { BushInhibitor, type BushCommand, type CommandMessage, type SlashMessage } from '#lib';
+import { BotInhibitor, type BotCommand, type CommandMessage, type SlashMessage } from '#lib';
-export default class RestrictedChannelInhibitor extends BushInhibitor {
+export default class RestrictedChannelInhibitor extends BotInhibitor {
public constructor() {
super('restrictedChannel', {
reason: 'restrictedChannel',
- category: 'command',
type: 'post',
priority: 10
});
}
- public async exec(message: CommandMessage | SlashMessage, command: BushCommand): Promise<boolean> {
+ public async exec(message: CommandMessage | SlashMessage, command: BotCommand): Promise<boolean> {
if (command.restrictedChannels?.length && message.channel) {
if (!command.restrictedChannels.includes(message.channel.id)) {
void this.client.console.verbose(
diff --git a/src/inhibitors/command/restrictedGuild.ts b/src/inhibitors/command/restrictedGuild.ts
index 1e2d1b2..ec0ad2c 100644
--- a/src/inhibitors/command/restrictedGuild.ts
+++ b/src/inhibitors/command/restrictedGuild.ts
@@ -1,16 +1,15 @@
-import { BushInhibitor, type BushCommand, type CommandMessage, type SlashMessage } from '#lib';
+import { BotInhibitor, type BotCommand, type CommandMessage, type SlashMessage } from '#lib';
-export default class RestrictedGuildInhibitor extends BushInhibitor {
+export default class RestrictedGuildInhibitor extends BotInhibitor {
public constructor() {
super('restrictedGuild', {
reason: 'restrictedGuild',
- category: 'command',
type: 'post',
priority: 5
});
}
- public async exec(message: CommandMessage | SlashMessage, command: BushCommand): Promise<boolean> {
+ public async exec(message: CommandMessage | SlashMessage, command: BotCommand): Promise<boolean> {
if (command.restrictedChannels?.length && message.channel) {
if (!command.restrictedChannels.includes(message.channel.id)) {
void this.client.console.verbose(
diff --git a/src/inhibitors/command/superUser.ts b/src/inhibitors/command/superUser.ts
index 69e95a2..a923c1a 100644
--- a/src/inhibitors/command/superUser.ts
+++ b/src/inhibitors/command/superUser.ts
@@ -1,16 +1,15 @@
-import { BushInhibitor, type BushCommand, type CommandMessage, type SlashMessage } from '#lib';
+import { BotInhibitor, type BotCommand, type CommandMessage, type SlashMessage } from '#lib';
-export default class SuperUserInhibitor extends BushInhibitor {
+export default class SuperUserInhibitor extends BotInhibitor {
public constructor() {
super('superUser', {
reason: 'superUser',
- category: 'command',
type: 'post',
priority: 99
});
}
- public async exec(message: CommandMessage | SlashMessage, command: BushCommand): Promise<boolean> {
+ public async exec(message: CommandMessage | SlashMessage, command: BotCommand): Promise<boolean> {
if (command.superUserOnly) {
if (!this.client.isSuperUser(message.author)) {
void this.client.console.verbose(
diff --git a/src/listeners/automod/automodCreate.ts b/src/listeners/automod/automodCreate.ts
index 529651c..e2454e6 100644
--- a/src/listeners/automod/automodCreate.ts
+++ b/src/listeners/automod/automodCreate.ts
@@ -1,15 +1,14 @@
-import { BushListener, MessageAutomod, type BushClientEvents } from '#lib';
+import { BotListener, MessageAutomod, type BotClientEvents } from '#lib';
-export default class AutomodMessageCreateListener extends BushListener {
+export default class AutomodMessageCreateListener extends BotListener {
public constructor() {
super('automodCreate', {
emitter: 'client',
- event: 'messageCreate',
- category: 'message'
+ event: 'messageCreate'
});
}
- public async exec(...[message]: BushClientEvents['messageCreate']) {
+ public async exec(...[message]: BotClientEvents['messageCreate']) {
if (message.member === null) return;
return new MessageAutomod(message);
}
diff --git a/src/listeners/automod/automodUpdate.ts b/src/listeners/automod/automodUpdate.ts
index d68759f..0609e67 100644
--- a/src/listeners/automod/automodUpdate.ts
+++ b/src/listeners/automod/automodUpdate.ts
@@ -1,15 +1,14 @@
-import { BushListener, MessageAutomod, type BushClientEvents } from '#lib';
+import { BotListener, MessageAutomod, type BotClientEvents } from '#lib';
-export default class AutomodMessageUpdateListener extends BushListener {
+export default class AutomodMessageUpdateListener extends BotListener {
public constructor() {
super('automodUpdate', {
emitter: 'client',
- event: 'messageUpdate',
- category: 'message'
+ event: 'messageUpdate'
});
}
- public async exec(...[_, newMessage]: BushClientEvents['messageUpdate']) {
+ public async exec(...[_, newMessage]: BotClientEvents['messageUpdate']) {
const fullMessage = newMessage.partial ? await newMessage.fetch().catch(() => null) : newMessage;
if (!fullMessage?.member) return;
return new MessageAutomod(fullMessage);
diff --git a/src/listeners/automod/memberAutomod.ts b/src/listeners/automod/memberAutomod.ts
index 01eb56c..557d13a 100644
--- a/src/listeners/automod/memberAutomod.ts
+++ b/src/listeners/automod/memberAutomod.ts
@@ -1,7 +1,7 @@
-import { BushClientEvents, BushListener, MemberAutomod } from '#lib';
+import { BotClientEvents, BotListener, MemberAutomod } from '#lib';
import chalk from 'chalk';
-export default class PresenceAutomodListener extends BushListener {
+export default class PresenceAutomodListener extends BotListener {
public constructor() {
super('memberAutomod', {
emitter: 'client',
@@ -9,7 +9,7 @@ export default class PresenceAutomodListener extends BushListener {
});
}
- public async exec(...[_, newMember]: BushClientEvents['guildMemberUpdate']) {
+ public async exec(...[_, newMember]: BotClientEvents['guildMemberUpdate']) {
if (!(await newMember.guild.hasFeature('automodMembers'))) return;
if (!(await newMember.guild.hasFeature('automod'))) return;
diff --git a/src/listeners/automod/presenceAutomod.ts b/src/listeners/automod/presenceAutomod.ts
index eb536bf..a89d45c 100644
--- a/src/listeners/automod/presenceAutomod.ts
+++ b/src/listeners/automod/presenceAutomod.ts
@@ -1,6 +1,6 @@
-import { BushClientEvents, BushListener, PresenceAutomod } from '#lib';
+import { BotClientEvents, BotListener, PresenceAutomod } from '#lib';
-export default class PresenceAutomodListener extends BushListener {
+export default class PresenceAutomodListener extends BotListener {
public constructor() {
super('presenceAutomod', {
emitter: 'client',
@@ -8,7 +8,7 @@ export default class PresenceAutomodListener extends BushListener {
});
}
- public async exec(...[_, newPresence]: BushClientEvents['presenceUpdate']) {
+ public async exec(...[_, newPresence]: BotClientEvents['presenceUpdate']) {
if (!newPresence.member || !newPresence.guild) return;
if (!newPresence.activities.length) return;
diff --git a/src/listeners/bush/appealListener.ts b/src/listeners/bush/appealListener.ts
index a4e1f00..ecc65c5 100644
--- a/src/listeners/bush/appealListener.ts
+++ b/src/listeners/bush/appealListener.ts
@@ -1,19 +1,18 @@
-import { BushListener, colors, mappings, ModLog, type BushClientEvents } from '#lib';
+import { BotListener, colors, mappings, ModLog, type BotClientEvents } from '#lib';
import assert from 'assert/strict';
import { EmbedBuilder } from 'discord.js';
import UserInfoCommand from '../../commands/info/userInfo.js';
import ModlogCommand from '../../commands/moderation/modlog.js';
-export default class AppealListener extends BushListener {
+export default class AppealListener extends BotListener {
public constructor() {
super('appealListener', {
emitter: 'client',
- event: 'messageCreate',
- category: 'bush'
+ event: 'messageCreate'
});
}
- public async exec(...[message]: BushClientEvents['messageCreate']): Promise<any> {
+ public async exec(...[message]: BotClientEvents['messageCreate']): Promise<any> {
if (!this.client.config.isProduction || !message.inGuild() || message.guildId !== mappings.guilds["Moulberry's Bush"]) return;
if (message.author.id !== '855446927688335370' || message.embeds.length < 1) return;
diff --git a/src/listeners/bush/joinAutoBan.ts b/src/listeners/bush/joinAutoBan.ts
index 4370e86..66fdf54 100644
--- a/src/listeners/bush/joinAutoBan.ts
+++ b/src/listeners/bush/joinAutoBan.ts
@@ -1,16 +1,15 @@
-import { AllowedMentions, BushListener, colors, emojis, format, mappings, type BushClientEvents } from '#lib';
+import { AllowedMentions, BotListener, colors, emojis, format, mappings, type BotClientEvents } from '#lib';
import { TextChannel } from 'discord.js';
-export default class JoinAutoBanListener extends BushListener {
+export default class JoinAutoBanListener extends BotListener {
public constructor() {
super('joinAutoBan', {
emitter: 'client',
- event: 'guildMemberAdd',
- category: 'bush'
+ event: 'guildMemberAdd'
});
}
- public async exec(...[member]: BushClientEvents['guildMemberAdd']): Promise<void> {
+ public async exec(...[member]: BotClientEvents['guildMemberAdd']): Promise<void> {
if (!this.client.config.isProduction) return;
if (member.guild.id !== mappings.guilds["Moulberry's Bush"]) return;
const guild = member.guild;
@@ -20,7 +19,7 @@ export default class JoinAutoBanListener extends BushListener {
const code = this.client.utils.getShared('autoBanCode');
if (!code) return;
if (eval(code)) {
- const res = await member.bushBan({
+ const res = await member.customBan({
reason: '[AutoBan] Impersonation is not allowed.',
moderator: member.guild.members.me!
});
diff --git a/src/listeners/bush/supportThread.ts b/src/listeners/bush/supportThread.ts
index 5145ff2..3e806e2 100644
--- a/src/listeners/bush/supportThread.ts
+++ b/src/listeners/bush/supportThread.ts
@@ -1,18 +1,17 @@
-import { BushListener, colors, mappings, type BushClientEvents } from '#lib';
+import { BotListener, colors, mappings, type BotClientEvents } from '#lib';
import { stripIndent } from '#tags';
import assert from 'assert/strict';
import { EmbedBuilder, MessageType, PermissionFlagsBits, TextChannel } from 'discord.js';
-export default class SupportThreadListener extends BushListener {
+export default class SupportThreadListener extends BotListener {
public constructor() {
super('supportThread', {
emitter: 'client',
- event: 'messageCreate',
- category: 'bush'
+ event: 'messageCreate'
});
}
- public async exec(...[message]: BushClientEvents['messageCreate']): Promise<void | undefined> {
+ public async exec(...[message]: BotClientEvents['messageCreate']): Promise<void | undefined> {
if (!this.client.config.isProduction || !message.inGuild()) return;
if (![MessageType.Default, MessageType.Reply].includes(message.type)) return;
if (message.thread) return;
diff --git a/src/listeners/bush/userUpdateAutoBan.ts b/src/listeners/bush/userUpdateAutoBan.ts
index adfb80c..ae8bca3 100644
--- a/src/listeners/bush/userUpdateAutoBan.ts
+++ b/src/listeners/bush/userUpdateAutoBan.ts
@@ -1,16 +1,15 @@
-import { AllowedMentions, BushListener, colors, emojis, format, mappings, type BushClientEvents } from '#lib';
+import { AllowedMentions, BotListener, colors, emojis, format, mappings, type BotClientEvents } from '#lib';
import { GuildMember, type TextChannel } from 'discord.js';
-export default class UserUpdateAutoBanListener extends BushListener {
+export default class UserUpdateAutoBanListener extends BotListener {
public constructor() {
super('userUpdateAutoBan', {
emitter: 'client',
- event: 'userUpdate',
- category: 'bush'
+ event: 'userUpdate'
});
}
- public async exec(...[_oldUser, newUser]: BushClientEvents['userUpdate']): Promise<void> {
+ public async exec(...[_oldUser, newUser]: BotClientEvents['userUpdate']): Promise<void> {
if (!this.client.config.isProduction) return;
// eslint-disable-next-line @typescript-eslint/no-unused-vars
@@ -26,7 +25,7 @@ export default class UserUpdateAutoBanListener extends BushListener {
const guild = member.guild;
- const res = await member.bushBan({
+ const res = await member.customBan({
reason: '[AutoBan] Impersonation is not allowed.',
moderator: member.guild.members.me!
});
diff --git a/src/listeners/client/akairoDebug.ts b/src/listeners/client/akairoDebug.ts
index 3fa7977..af973bf 100644
--- a/src/listeners/client/akairoDebug.ts
+++ b/src/listeners/client/akairoDebug.ts
@@ -1,15 +1,14 @@
-import { BushListener, type BushClientEvents } from '#lib';
+import { BotListener, type BotClientEvents } from '#lib';
-export default class DiscordJsDebugListener extends BushListener {
+export default class DiscordJsDebugListener extends BotListener {
public constructor() {
super('akairoDebug', {
emitter: 'client',
- event: 'akairoDebug',
- category: 'client'
+ event: 'akairoDebug'
});
}
- public async exec(...[message, ...other]: BushClientEvents['debug']): Promise<void> {
+ public async exec(...[message, ...other]: BotClientEvents['debug']): Promise<void> {
if (other.length && !message.includes('[registerInteractionCommands]'))
void this.client.console.superVerboseRaw('akairoDebug', message, ...other);
else void this.client.console.superVerbose('akairoDebug', message);
diff --git a/src/listeners/client/dcjsDebug.ts b/src/listeners/client/dcjsDebug.ts
deleted file mode 100644
index 4b80c65..0000000
--- a/src/listeners/client/dcjsDebug.ts
+++ /dev/null
@@ -1,15 +0,0 @@
-import { BushListener, type BushClientEvents } from '#lib';
-
-export default class DiscordJsDebugListener extends BushListener {
- public constructor() {
- super('discordJsDebug', {
- emitter: 'client',
- event: 'debug',
- category: 'client'
- });
- }
-
- public async exec(...[message]: BushClientEvents['debug']): Promise<void> {
- void this.client.console.superVerbose('dc.js-debug', message);
- }
-}
diff --git a/src/listeners/client/dcjsError.ts b/src/listeners/client/dcjsError.ts
deleted file mode 100644
index a39a92d..0000000
--- a/src/listeners/client/dcjsError.ts
+++ /dev/null
@@ -1,15 +0,0 @@
-import { BushListener, type BushClientEvents } from '#lib';
-
-export default class DiscordJsErrorListener extends BushListener {
- public constructor() {
- super('discordJsError', {
- emitter: 'client',
- event: 'error',
- category: 'client'
- });
- }
-
- public async exec(...[error]: BushClientEvents['error']): Promise<void> {
- void this.client.console.superVerbose('dc.js-error', error);
- }
-}
diff --git a/src/listeners/client/dcjsWarn.ts b/src/listeners/client/dcjsWarn.ts
deleted file mode 100644
index b187f0c..0000000
--- a/src/listeners/client/dcjsWarn.ts
+++ /dev/null
@@ -1,15 +0,0 @@
-import { BushListener, type BushClientEvents } from '#lib';
-
-export default class DiscordJsWarnListener extends BushListener {
- public constructor() {
- super('discordJsWarn', {
- emitter: 'client',
- event: 'warn',
- category: 'client'
- });
- }
-
- public async exec(...[message]: BushClientEvents['warn']): Promise<void> {
- void this.client.console.superVerbose('dc.js-warn', message);
- }
-}
diff --git a/src/listeners/client/djsDebug.ts b/src/listeners/client/djsDebug.ts
new file mode 100644
index 0000000..28bac7f
--- /dev/null
+++ b/src/listeners/client/djsDebug.ts
@@ -0,0 +1,14 @@
+import { BotListener, type BotClientEvents } from '#lib';
+
+export default class DiscordJsDebugListener extends BotListener {
+ public constructor() {
+ super('discordJsDebug', {
+ emitter: 'client',
+ event: 'debug'
+ });
+ }
+
+ public async exec(...[message]: BotClientEvents['debug']): Promise<void> {
+ void this.client.console.superVerbose('dc.js-debug', message);
+ }
+}
diff --git a/src/listeners/client/djsError.ts b/src/listeners/client/djsError.ts
new file mode 100644
index 0000000..04fbfaa
--- /dev/null
+++ b/src/listeners/client/djsError.ts
@@ -0,0 +1,14 @@
+import { BotListener, type BotClientEvents } from '#lib';
+
+export default class DiscordJsErrorListener extends BotListener {
+ public constructor() {
+ super('discordJsError', {
+ emitter: 'client',
+ event: 'error'
+ });
+ }
+
+ public async exec(...[error]: BotClientEvents['error']): Promise<void> {
+ void this.client.console.superVerbose('dc.js-error', error);
+ }
+}
diff --git a/src/listeners/client/djsWarn.ts b/src/listeners/client/djsWarn.ts
new file mode 100644
index 0000000..9162a36
--- /dev/null
+++ b/src/listeners/client/djsWarn.ts
@@ -0,0 +1,14 @@
+import { BotListener, type BotClientEvents } from '#lib';
+
+export default class DiscordJsWarnListener extends BotListener {
+ public constructor() {
+ super('discordJsWarn', {
+ emitter: 'client',
+ event: 'warn'
+ });
+ }
+
+ public async exec(...[message]: BotClientEvents['warn']): Promise<void> {
+ void this.client.console.superVerbose('dc.js-warn', message);
+ }
+}
diff --git a/src/listeners/client/ready.ts b/src/listeners/client/ready.ts
index a6a289c..1c887ed 100644
--- a/src/listeners/client/ready.ts
+++ b/src/listeners/client/ready.ts
@@ -1,7 +1,7 @@
-import { BushClientEvents, BushListener, Guild } from '#lib';
+import { BotClientEvents, BotListener, Guild } from '#lib';
import chalk from 'chalk';
-export default class ReadyListener extends BushListener {
+export default class ReadyListener extends BotListener {
public constructor() {
super('ready', {
emitter: 'client',
@@ -11,7 +11,7 @@ export default class ReadyListener extends BushListener {
}
// eslint-disable-next-line no-empty-pattern
- public async exec(...[]: BushClientEvents['ready']) {
+ public async exec(...[]: BotClientEvents['ready']) {
process.emit('ready' as any);
const tag = `<<${this.client.user?.tag}>>`,
diff --git a/src/listeners/commands/commandBlocked.ts b/src/listeners/commands/commandBlocked.ts
index 1324d5f..d9a95c1 100644
--- a/src/listeners/commands/commandBlocked.ts
+++ b/src/listeners/commands/commandBlocked.ts
@@ -1,33 +1,32 @@
import {
BlockedReasons,
- BushListener,
+ BotListener,
emojis,
format,
oxford,
- type BushCommand,
- type BushCommandHandlerEvents,
+ type BotCommand,
+ type BotCommandHandlerEvents,
type CommandMessage,
type SlashMessage
} from '#lib';
import { type Client, type InteractionReplyOptions, type ReplyMessageOptions } from 'discord.js';
-export default class CommandBlockedListener extends BushListener {
+export default class CommandBlockedListener extends BotListener {
public constructor() {
super('commandBlocked', {
emitter: 'commandHandler',
- event: 'commandBlocked',
- category: 'commands'
+ event: 'commandBlocked'
});
}
- public async exec(...[message, command, reason]: BushCommandHandlerEvents['commandBlocked']) {
+ public async exec(...[message, command, reason]: BotCommandHandlerEvents['commandBlocked']) {
return await CommandBlockedListener.handleBlocked(this.client, message, command, reason);
}
public static async handleBlocked(
client: Client,
message: CommandMessage | SlashMessage,
- command: BushCommand | null,
+ command: BotCommand | null,
reason?: string
) {
const isSlash = !!command && !!message.util?.isSlash;
diff --git a/src/listeners/commands/commandCooldown.ts b/src/listeners/commands/commandCooldown.ts
index 5f4d70e..1a5b790 100644
--- a/src/listeners/commands/commandCooldown.ts
+++ b/src/listeners/commands/commandCooldown.ts
@@ -1,15 +1,14 @@
-import { BushListener, type BushCommandHandlerEvents } from '#lib';
+import { BotListener, type BotCommandHandlerEvents } from '#lib';
-export default class CommandCooldownListener extends BushListener {
+export default class CommandCooldownListener extends BotListener {
public constructor() {
super('commandCooldown', {
emitter: 'commandHandler',
- event: 'cooldown',
- category: 'commands'
+ event: 'cooldown'
});
}
- public async exec(...[message, command, remaining]: BushCommandHandlerEvents['cooldown']) {
+ public async exec(...[message, command, remaining]: BotCommandHandlerEvents['cooldown']) {
void this.client.console.info(
'commandCooldown',
`<<${message.author.tag}>> tried to run <<${
diff --git a/src/listeners/commands/commandError.ts b/src/listeners/commands/commandError.ts
index 7e14bc3..b96b8de 100644
--- a/src/listeners/commands/commandError.ts
+++ b/src/listeners/commands/commandError.ts
@@ -1,15 +1,14 @@
-import { BushListener, handleCommandError, type BushCommandHandlerEvents } from '#lib';
+import { BotListener, handleCommandError, type BotCommandHandlerEvents } from '#lib';
-export default class CommandErrorListener extends BushListener {
+export default class CommandErrorListener extends BotListener {
public constructor() {
super('commandError', {
emitter: 'commandHandler',
- event: 'error',
- category: 'commands'
+ event: 'error'
});
}
- public exec(...[error, message, command]: BushCommandHandlerEvents['error']) {
+ public exec(...[error, message, command]: BotCommandHandlerEvents['error']) {
return handleCommandError(this.client, error, message, command);
}
}
diff --git a/src/listeners/commands/commandLocked.ts b/src/listeners/commands/commandLocked.ts
index 22ed8e1..fbceca8 100644
--- a/src/listeners/commands/commandLocked.ts
+++ b/src/listeners/commands/commandLocked.ts
@@ -1,15 +1,14 @@
-import { BushListener, emojis, format, type BushCommandHandlerEvents } from '#lib';
+import { BotListener, emojis, format, type BotCommandHandlerEvents } from '#lib';
-export default class CommandLockedListener extends BushListener {
+export default class CommandLockedListener extends BotListener {
public constructor() {
super('commandLocked', {
emitter: 'commandHandler',
- event: 'commandLocked',
- category: 'commands'
+ event: 'commandLocked'
});
}
- public async exec(...[message, command]: BushCommandHandlerEvents['commandLocked']) {
+ public async exec(...[message, command]: BotCommandHandlerEvents['commandLocked']) {
return message.util.reply(
`${emojis.error} You cannot use the ${format.input(command.id)} command because it is already in use.`
);
diff --git a/src/listeners/commands/commandMissingPermissions.ts b/src/listeners/commands/commandMissingPermissions.ts
index 4d39264..a2ec461 100644
--- a/src/listeners/commands/commandMissingPermissions.ts
+++ b/src/listeners/commands/commandMissingPermissions.ts
@@ -1,24 +1,23 @@
-import { BushListener, emojis, format, mappings, oxford, surroundArray, type BushCommandHandlerEvents } from '#lib';
+import { BotListener, emojis, format, mappings, oxford, surroundArray, type BotCommandHandlerEvents } from '#lib';
import { Client, type PermissionsString } from 'discord.js';
-export default class CommandMissingPermissionsListener extends BushListener {
+export default class CommandMissingPermissionsListener extends BotListener {
public constructor() {
super('commandMissingPermissions', {
emitter: 'commandHandler',
- event: 'missingPermissions',
- category: 'commands'
+ event: 'missingPermissions'
});
}
- public async exec(...[message, command, type, missing]: BushCommandHandlerEvents['missingPermissions']) {
+ public async exec(...[message, command, type, missing]: BotCommandHandlerEvents['missingPermissions']) {
return await CommandMissingPermissionsListener.handleMissing(this.client, message, command, type, missing);
}
public static async handleMissing(
client: Client,
...[message, command, type, missing]:
- | BushCommandHandlerEvents['missingPermissions']
- | BushCommandHandlerEvents['slashMissingPermissions']
+ | BotCommandHandlerEvents['missingPermissions']
+ | BotCommandHandlerEvents['slashMissingPermissions']
) {
const niceMissing = (missing.includes('Administrator') ? (['Administrator'] as PermissionsString[]) : missing).map(
(perm) => mappings.permissions[perm]?.name ?? missing
diff --git a/src/listeners/commands/commandStarted.ts b/src/listeners/commands/commandStarted.ts
index 9d0e4cb..407662c 100644
--- a/src/listeners/commands/commandStarted.ts
+++ b/src/listeners/commands/commandStarted.ts
@@ -1,16 +1,15 @@
-import { BushListener, type BushCommandHandlerEvents } from '#lib';
+import { BotListener, type BotCommandHandlerEvents } from '#lib';
import { ChannelType } from 'discord.js';
-export default class CommandStartedListener extends BushListener {
+export default class CommandStartedListener extends BotListener {
public constructor() {
super('commandStarted', {
emitter: 'commandHandler',
- event: 'commandStarted',
- category: 'commands'
+ event: 'commandStarted'
});
}
- public exec(...[message, command]: BushCommandHandlerEvents['commandStarted']): void {
+ public exec(...[message, command]: BotCommandHandlerEvents['commandStarted']): void {
this.client.sentry.addBreadcrumb({
message: `[commandStarted] The ${command.id} was started by ${message.author.tag}.`,
level: 'info',
diff --git a/src/listeners/commands/messageBlocked.ts b/src/listeners/commands/messageBlocked.ts
index d73cff1..3d92d32 100644
--- a/src/listeners/commands/messageBlocked.ts
+++ b/src/listeners/commands/messageBlocked.ts
@@ -1,15 +1,14 @@
-import { BushListener, type BushCommandHandlerEvents } from '#lib';
+import { BotListener, type BotCommandHandlerEvents } from '#lib';
-export default class MessageBlockedListener extends BushListener {
+export default class MessageBlockedListener extends BotListener {
public constructor() {
super('messageBlocked', {
emitter: 'commandHandler',
- event: 'messageBlocked',
- category: 'commands'
+ event: 'messageBlocked'
});
}
- public async exec(...[message, reason]: BushCommandHandlerEvents['messageBlocked']) {
+ public async exec(...[message, reason]: BotCommandHandlerEvents['messageBlocked']) {
if (['client', 'bot'].includes(reason)) return;
// return await CommandBlockedListener.handleBlocked(message as Message, null, reason);
return void this.client.console.verbose(
diff --git a/src/listeners/commands/slashBlocked.ts b/src/listeners/commands/slashBlocked.ts
index c877708..528c97b 100644
--- a/src/listeners/commands/slashBlocked.ts
+++ b/src/listeners/commands/slashBlocked.ts
@@ -1,16 +1,15 @@
-import { BushListener, type BushCommandHandlerEvents } from '#lib';
+import { BotListener, type BotCommandHandlerEvents } from '#lib';
import CommandBlockedListener from './commandBlocked.js';
-export default class SlashBlockedListener extends BushListener {
+export default class SlashBlockedListener extends BotListener {
public constructor() {
super('slashBlocked', {
emitter: 'commandHandler',
- event: 'slashBlocked',
- category: 'commands'
+ event: 'slashBlocked'
});
}
- public async exec(...[message, command, reason]: BushCommandHandlerEvents['slashBlocked']) {
+ public async exec(...[message, command, reason]: BotCommandHandlerEvents['slashBlocked']) {
return await CommandBlockedListener.handleBlocked(this.client, message, command, reason);
}
}
diff --git a/src/listeners/commands/slashCommandError.ts b/src/listeners/commands/slashCommandError.ts
index aca7c5b..03eb34a 100644
--- a/src/listeners/commands/slashCommandError.ts
+++ b/src/listeners/commands/slashCommandError.ts
@@ -1,15 +1,14 @@
-import { BushListener, handleCommandError, type BushCommandHandlerEvents } from '#lib';
+import { BotListener, handleCommandError, type BotCommandHandlerEvents } from '#lib';
-export default class SlashCommandErrorListener extends BushListener {
+export default class SlashCommandErrorListener extends BotListener {
public constructor() {
super('slashError', {
emitter: 'commandHandler',
- event: 'slashError',
- category: 'commands'
+ event: 'slashError'
});
}
- public async exec(...[error, message, command]: BushCommandHandlerEvents['slashError']) {
+ public async exec(...[error, message, command]: BotCommandHandlerEvents['slashError']) {
return await handleCommandError(this.client, error, message, command);
}
}
diff --git a/src/listeners/commands/slashMissingPermissions.ts b/src/listeners/commands/slashMissingPermissions.ts
index 0a1383b..68388bf 100644
--- a/src/listeners/commands/slashMissingPermissions.ts
+++ b/src/listeners/commands/slashMissingPermissions.ts
@@ -1,16 +1,15 @@
-import { BushListener, type BushCommandHandlerEvents } from '#lib';
+import { BotListener, type BotCommandHandlerEvents } from '#lib';
import CommandMissingPermissionsListener from './commandMissingPermissions.js';
-export default class SlashMissingPermissionsListener extends BushListener {
+export default class SlashMissingPermissionsListener extends BotListener {
public constructor() {
super('slashMissingPermissions', {
emitter: 'commandHandler',
- event: 'slashMissingPermissions',
- category: 'commands'
+ event: 'slashMissingPermissions'
});
}
- public async exec(...[message, command, type, missing]: BushCommandHandlerEvents['slashMissingPermissions']) {
+ public async exec(...[message, command, type, missing]: BotCommandHandlerEvents['slashMissingPermissions']) {
return await CommandMissingPermissionsListener.handleMissing(this.client, message, command, type, missing);
}
}
diff --git a/src/listeners/commands/slashNotFound.ts b/src/listeners/commands/slashNotFound.ts
index cc14969..7e76fe6 100644
--- a/src/listeners/commands/slashNotFound.ts
+++ b/src/listeners/commands/slashNotFound.ts
@@ -1,15 +1,14 @@
-import { BushListener, type BushCommandHandlerEvents } from '#lib';
+import { BotListener, type BotCommandHandlerEvents } from '#lib';
-export default class SlashNotFoundListener extends BushListener {
+export default class SlashNotFoundListener extends BotListener {
public constructor() {
super('slashNotFound', {
emitter: 'commandHandler',
- event: 'slashNotFound',
- category: 'commands'
+ event: 'slashNotFound'
});
}
- public async exec(...[interaction]: BushCommandHandlerEvents['slashNotFound']) {
+ public async exec(...[interaction]: BotCommandHandlerEvents['slashNotFound']) {
void this.client.console.info('slashNotFound', `<<${interaction?.commandName}>> could not be found.`);
}
}
diff --git a/src/listeners/commands/slashStarted.ts b/src/listeners/commands/slashStarted.ts
index c2ece5e..898af13 100644
--- a/src/listeners/commands/slashStarted.ts
+++ b/src/listeners/commands/slashStarted.ts
@@ -1,16 +1,15 @@
-import { BushListener, type BushCommandHandlerEvents } from '#lib';
+import { BotListener, type BotCommandHandlerEvents } from '#lib';
import { ChannelType } from 'discord.js';
-export default class SlashStartedListener extends BushListener {
+export default class SlashStartedListener extends BotListener {
public constructor() {
super('slashStarted', {
emitter: 'commandHandler',
- event: 'slashStarted',
- category: 'commands'
+ event: 'slashStarted'
});
}
- public async exec(...[message, command]: BushCommandHandlerEvents['slashStarted']) {
+ public async exec(...[message, command]: BotCommandHandlerEvents['slashStarted']) {
this.client.sentry.addBreadcrumb({
message: `[slashStarted] The ${command.id} was started by ${message.author.tag}.`,
level: 'info',
diff --git a/src/listeners/contextCommands/contextCommandBlocked.ts b/src/listeners/contextCommands/contextCommandBlocked.ts
index bb237a0..d8d002e 100644
--- a/src/listeners/contextCommands/contextCommandBlocked.ts
+++ b/src/listeners/contextCommands/contextCommandBlocked.ts
@@ -1,12 +1,11 @@
-import { BlockedReasons, BushListener, emojis, format } from '#lib';
+import { BlockedReasons, BotListener, emojis, format } from '#lib';
import { type ContextMenuCommandHandlerEvents } from 'discord-akairo';
-export default class ContextCommandBlockedListener extends BushListener {
+export default class ContextCommandBlockedListener extends BotListener {
public constructor() {
super('contextCommandBlocked', {
emitter: 'contextMenuCommandHandler',
- event: 'blocked',
- category: 'contextCommands'
+ event: 'blocked'
});
}
diff --git a/src/listeners/contextCommands/contextCommandError.ts b/src/listeners/contextCommands/contextCommandError.ts
index 6951ce3..091bee9 100644
--- a/src/listeners/contextCommands/contextCommandError.ts
+++ b/src/listeners/contextCommands/contextCommandError.ts
@@ -1,13 +1,12 @@
-import { BushListener, colors, format, formatError, getErrorHaste, getErrorStack, IFuckedUpError } from '#lib';
+import { BotListener, colors, format, formatError, getErrorHaste, getErrorStack, IFuckedUpError } from '#lib';
import { type ContextMenuCommand, type ContextMenuCommandHandlerEvents } from 'discord-akairo';
import { ChannelType, Client, ContextMenuCommandInteraction, EmbedBuilder, GuildTextBasedChannel } from 'discord.js';
-export default class ContextCommandErrorListener extends BushListener {
+export default class ContextCommandErrorListener extends BotListener {
public constructor() {
super('contextCommandError', {
emitter: 'contextMenuCommandHandler',
- event: 'error',
- category: 'contextCommands'
+ event: 'error'
});
}
diff --git a/src/listeners/contextCommands/contextCommandNotFound.ts b/src/listeners/contextCommands/contextCommandNotFound.ts
index f5097f3..4bb397e 100644
--- a/src/listeners/contextCommands/contextCommandNotFound.ts
+++ b/src/listeners/contextCommands/contextCommandNotFound.ts
@@ -1,12 +1,11 @@
-import { BushListener } from '#lib';
+import { BotListener } from '#lib';
import { type ContextMenuCommandHandlerEvents } from 'discord-akairo';
-export default class ContextCommandNotFoundListener extends BushListener {
+export default class ContextCommandNotFoundListener extends BotListener {
public constructor() {
super('contextCommandNotFound', {
emitter: 'contextMenuCommandHandler',
- event: 'notFound',
- category: 'contextCommands'
+ event: 'notFound'
});
}
diff --git a/src/listeners/contextCommands/contextCommandStarted.ts b/src/listeners/contextCommands/contextCommandStarted.ts
index 2d1e9ef..867af54 100644
--- a/src/listeners/contextCommands/contextCommandStarted.ts
+++ b/src/listeners/contextCommands/contextCommandStarted.ts
@@ -1,13 +1,12 @@
-import { BushListener } from '#lib';
+import { BotListener } from '#lib';
import { ContextMenuCommandHandlerEvents } from 'discord-akairo';
import { ApplicationCommandType, ChannelType } from 'discord.js';
-export default class ContextCommandStartedListener extends BushListener {
+export default class ContextCommandStartedListener extends BotListener {
public constructor() {
super('contextCommandStarted', {
emitter: 'contextMenuCommandHandler',
- event: 'started',
- category: 'contextCommands'
+ event: 'started'
});
}
diff --git a/src/listeners/guild-custom/bushLockdown.ts b/src/listeners/guild-custom/lockdown.ts
index 51d1c3d..bf3ee7c 100644
--- a/src/listeners/guild-custom/bushLockdown.ts
+++ b/src/listeners/guild-custom/lockdown.ts
@@ -1,16 +1,15 @@
-import { BushListener, colors, emojis, type BushClientEvents } from '#lib';
+import { BotListener, colors, emojis, type BotClientEvents } from '#lib';
import { EmbedBuilder } from 'discord.js';
-export default class BushLockdownListener extends BushListener {
+export default class LockdownListener extends BotListener {
public constructor() {
- super('bushLockdown', {
+ super('lockdown', {
emitter: 'client',
- event: 'bushLockdown',
- category: 'guild-custom'
+ event: 'lockdown'
});
}
- public async exec(...[moderator, reason, channelsSuccessMap, _all]: BushClientEvents['bushLockdown']) {
+ public async exec(...[moderator, reason, channelsSuccessMap, _all]: BotClientEvents['lockdown']) {
const logChannel = await moderator.guild.getLogChannel('moderation');
if (!logChannel) return;
diff --git a/src/listeners/guild-custom/bushUnlockdown.ts b/src/listeners/guild-custom/unlockdown.ts
index 18cb792..e08a42b 100644
--- a/src/listeners/guild-custom/bushUnlockdown.ts
+++ b/src/listeners/guild-custom/unlockdown.ts
@@ -1,16 +1,15 @@
-import { BushListener, colors, emojis, type BushClientEvents } from '#lib';
+import { BotListener, colors, emojis, type BotClientEvents } from '#lib';
import { EmbedBuilder } from 'discord.js';
-export default class BushUnlockdownListener extends BushListener {
+export default class UnlockdownListener extends BotListener {
public constructor() {
- super('bushUnlockdown', {
+ super('unlockdown', {
emitter: 'client',
- event: 'bushUnlockdown',
- category: 'guild-custom'
+ event: 'unlockdown'
});
}
- public async exec(...[moderator, reason, channelsSuccessMap, _all]: BushClientEvents['bushUnlockdown']) {
+ public async exec(...[moderator, reason, channelsSuccessMap, _all]: BotClientEvents['unlockdown']) {
const logChannel = await moderator.guild.getLogChannel('moderation');
if (!logChannel) return;
diff --git a/src/listeners/guild/guildCreate.ts b/src/listeners/guild/guildCreate.ts
index 9f5f56c..3db28d6 100644
--- a/src/listeners/guild/guildCreate.ts
+++ b/src/listeners/guild/guildCreate.ts
@@ -1,15 +1,14 @@
-import { BushListener, colors, emojis, format, Guild, type BushClientEvents } from '#lib';
+import { BotListener, colors, emojis, format, Guild, type BotClientEvents } from '#lib';
-export default class GuildCreateListener extends BushListener {
+export default class GuildCreateListener extends BotListener {
public constructor() {
super('guildCreate', {
emitter: 'client',
- event: 'guildCreate', // when the bot joins a guild
- category: 'guild'
+ event: 'guildCreate' // when the bot joins a guild
});
}
- public async exec(...[guild]: BushClientEvents['guildCreate']) {
+ public async exec(...[guild]: BotClientEvents['guildCreate']) {
void this.client.console.info(
'guildCreate',
`Joined <<${guild.name}>> with <<${guild.memberCount?.toLocaleString()}>> members.`
diff --git a/src/listeners/guild/guildDelete.ts b/src/listeners/guild/guildDelete.ts
index 62d98e3..2cc23f1 100644
--- a/src/listeners/guild/guildDelete.ts
+++ b/src/listeners/guild/guildDelete.ts
@@ -1,15 +1,14 @@
-import { BushListener, colors, emojis, format, type BushClientEvents } from '#lib';
+import { BotListener, colors, emojis, format, type BotClientEvents } from '#lib';
-export default class GuildDeleteListener extends BushListener {
+export default class GuildDeleteListener extends BotListener {
public constructor() {
super('guildDelete', {
emitter: 'client',
- event: 'guildDelete', // when the bot leaves a guild
- category: 'guild'
+ event: 'guildDelete' // when the bot leaves a guild
});
}
- public async exec(...[guild]: BushClientEvents['guildDelete']) {
+ public async exec(...[guild]: BotClientEvents['guildDelete']) {
void this.client.console.info(
'guildDelete',
`Left <<${guild.name}>> with <<${guild.memberCount?.toLocaleString()}>> members.`
diff --git a/src/listeners/guild/guildMemberAdd.ts b/src/listeners/guild/guildMemberAdd.ts
index f1f90af..9268f01 100644
--- a/src/listeners/guild/guildMemberAdd.ts
+++ b/src/listeners/guild/guildMemberAdd.ts
@@ -1,16 +1,15 @@
-import { BushListener, colors, emojis, format, type BushClientEvents } from '#lib';
+import { BotListener, colors, emojis, format, type BotClientEvents } from '#lib';
import { EmbedBuilder, type GuildMember, type TextChannel } from 'discord.js';
-export default class GuildMemberAddListener extends BushListener {
+export default class GuildMemberAddListener extends BotListener {
public constructor() {
super('guildMemberAdd', {
emitter: 'client',
- event: 'guildMemberAdd',
- category: 'guild'
+ event: 'guildMemberAdd'
});
}
- public async exec(...[member]: BushClientEvents['guildMemberAdd']) {
+ public async exec(...[member]: BotClientEvents['guildMemberAdd']) {
void this.sendWelcomeMessage(member);
}
diff --git a/src/listeners/guild/guildMemberRemove.ts b/src/listeners/guild/guildMemberRemove.ts
index 39bab24..ee626d6 100644
--- a/src/listeners/guild/guildMemberRemove.ts
+++ b/src/listeners/guild/guildMemberRemove.ts
@@ -1,16 +1,15 @@
-import { BushListener, colors, emojis, format, sleep, StickyRole, Time, type BushClientEvents } from '#lib';
+import { BotListener, colors, emojis, format, sleep, StickyRole, Time, type BotClientEvents } from '#lib';
import { EmbedBuilder, type GuildMember, type PartialGuildMember, type TextChannel } from 'discord.js';
-export default class GuildMemberRemoveListener extends BushListener {
+export default class GuildMemberRemoveListener extends BotListener {
public constructor() {
super('guildMemberRemove', {
emitter: 'client',
- event: 'guildMemberRemove',
- category: 'guild'
+ event: 'guildMemberRemove'
});
}
- public async exec(...[member]: BushClientEvents['guildMemberRemove']) {
+ public async exec(...[member]: BotClientEvents['guildMemberRemove']) {
void this.sendWelcomeMessage(member);
void this.stickyRoles(member);
}
diff --git a/src/listeners/guild/joinRoles.ts b/src/listeners/guild/joinRoles.ts
index 539fa71..142d4cd 100644
--- a/src/listeners/guild/joinRoles.ts
+++ b/src/listeners/guild/joinRoles.ts
@@ -1,16 +1,15 @@
-import { BushListener, colors, format, StickyRole, type BushClientEvents } from '#lib';
+import { BotListener, colors, format, StickyRole, type BotClientEvents } from '#lib';
import { type GuildMember, type Snowflake } from 'discord.js';
-export default class JoinRolesListener extends BushListener {
+export default class JoinRolesListener extends BotListener {
public constructor() {
super('joinRoles', {
emitter: 'client',
- event: 'guildMemberUpdate', // listens to guildMemberUpdate so that the role's aren't given before the member accepts the welcome screen
- category: 'guild'
+ event: 'guildMemberUpdate' // listens to guildMemberUpdate so that the role's aren't given before the member accepts the welcome screen
});
}
- public async exec(...[oldMember, newMember]: BushClientEvents['guildMemberUpdate']) {
+ public async exec(...[oldMember, newMember]: BotClientEvents['guildMemberUpdate']) {
if (this.client.config.isDevelopment) return;
if (oldMember.pending && !newMember.pending) {
const feat = {
diff --git a/src/listeners/guild/syncUnbanPunishmentModel.ts b/src/listeners/guild/syncUnbanPunishmentModel.ts
index 80a8ce2..352d704 100644
--- a/src/listeners/guild/syncUnbanPunishmentModel.ts
+++ b/src/listeners/guild/syncUnbanPunishmentModel.ts
@@ -1,15 +1,14 @@
-import { ActivePunishment, ActivePunishmentType, BushListener, type BushClientEvents } from '#lib';
+import { ActivePunishment, ActivePunishmentType, BotListener, type BotClientEvents } from '#lib';
-export default class SyncUnbanListener extends BushListener {
+export default class SyncUnbanListener extends BotListener {
public constructor() {
super('syncUnbanPunishmentModel', {
emitter: 'client',
- event: 'guildBanRemove',
- category: 'guild'
+ event: 'guildBanRemove'
});
}
- public async exec(...[ban]: BushClientEvents['guildBanRemove']) {
+ public async exec(...[ban]: BotClientEvents['guildBanRemove']) {
const bans = await ActivePunishment.findAll({
where: {
user: ban.user.id,
diff --git a/src/listeners/interaction/interactionCreate.ts b/src/listeners/interaction/interactionCreate.ts
index 8dd753b..d8a5cc9 100644
--- a/src/listeners/interaction/interactionCreate.ts
+++ b/src/listeners/interaction/interactionCreate.ts
@@ -1,16 +1,15 @@
-import { BushListener, emojis, format, handleAutomodInteraction, oxford, surroundArray, type BushClientEvents } from '#lib';
+import { BotListener, emojis, format, handleAutomodInteraction, oxford, surroundArray, type BotClientEvents } from '#lib';
import { InteractionType } from 'discord.js';
-export default class InteractionCreateListener extends BushListener {
+export default class InteractionCreateListener extends BotListener {
public constructor() {
super('interactionCreate', {
emitter: 'client',
- event: 'interactionCreate',
- category: 'interaction'
+ event: 'interactionCreate'
});
}
- public async exec(...[interaction]: BushClientEvents['interactionCreate']) {
+ public async exec(...[interaction]: BotClientEvents['interactionCreate']) {
if (!interaction) return;
if ('customId' in interaction && (interaction as any)['customId'].startsWith('test')) return;
void this.client.console.verbose(
diff --git a/src/listeners/member-custom/bushBan.ts b/src/listeners/member-custom/customBan.ts
index 2cde91d..5b199bb 100644
--- a/src/listeners/member-custom/bushBan.ts
+++ b/src/listeners/member-custom/customBan.ts
@@ -1,16 +1,15 @@
-import { BushListener, colors, humanizeDuration, type BushClientEvents } from '#lib';
+import { BotListener, colors, humanizeDuration, TanzaniteEvent, type BotClientEvents } from '#lib';
import { EmbedBuilder, GuildMember } from 'discord.js';
-export default class BushBanListener extends BushListener {
+export default class CustomBanListener extends BotListener {
public constructor() {
- super('bushBan', {
+ super(TanzaniteEvent.Ban, {
emitter: 'client',
- event: 'bushBan',
- category: 'member-custom'
+ event: TanzaniteEvent.Ban
});
}
- public async exec(...[victim, moderator, guild, reason, caseID, duration, dmSuccess]: BushClientEvents['bushBan']) {
+ public async exec(...[victim, moderator, guild, reason, caseID, duration, dmSuccess]: BotClientEvents[TanzaniteEvent.Ban]) {
const logChannel = await guild.getLogChannel('moderation');
if (!logChannel) return;
const user = victim instanceof GuildMember ? victim.user : victim;
diff --git a/src/listeners/member-custom/bushBlock.ts b/src/listeners/member-custom/customBlock.ts
index a3af924..8faa0b7 100644
--- a/src/listeners/member-custom/bushBlock.ts
+++ b/src/listeners/member-custom/customBlock.ts
@@ -1,16 +1,17 @@
-import { BushListener, colors, humanizeDuration, type BushClientEvents } from '#lib';
+import { BotListener, colors, humanizeDuration, TanzaniteEvent, type BotClientEvents } from '#lib';
import { EmbedBuilder, GuildMember } from 'discord.js';
-export default class BushBlockListener extends BushListener {
+export default class CustomBlockListener extends BotListener {
public constructor() {
- super('bushBlock', {
+ super(TanzaniteEvent.Block, {
emitter: 'client',
- event: 'bushBlock',
- category: 'member-custom'
+ event: TanzaniteEvent.Block
});
}
- public async exec(...[victim, moderator, guild, reason, caseID, duration, dmSuccess, channel]: BushClientEvents['bushBlock']) {
+ public async exec(
+ ...[victim, moderator, guild, reason, caseID, duration, dmSuccess, channel]: BotClientEvents[TanzaniteEvent.Block]
+ ) {
const logChannel = await guild.getLogChannel('moderation');
if (!logChannel) return;
const user = victim instanceof GuildMember ? victim.user : victim;
diff --git a/src/listeners/member-custom/bushKick.ts b/src/listeners/member-custom/customKick.ts
index ff3e40e..bf3e2fe 100644
--- a/src/listeners/member-custom/bushKick.ts
+++ b/src/listeners/member-custom/customKick.ts
@@ -1,16 +1,15 @@
-import { BushListener, colors, type BushClientEvents } from '#lib';
+import { BotListener, colors, TanzaniteEvent, type BotClientEvents } from '#lib';
import { EmbedBuilder, GuildMember } from 'discord.js';
-export default class BushKickListener extends BushListener {
+export default class CustomKickListener extends BotListener {
public constructor() {
- super('bushKick', {
+ super(TanzaniteEvent.Kick, {
emitter: 'client',
- event: 'bushKick',
- category: 'member-custom'
+ event: TanzaniteEvent.Kick
});
}
- public async exec(...[victim, moderator, guild, reason, caseID, dmSuccess]: BushClientEvents['bushKick']) {
+ public async exec(...[victim, moderator, guild, reason, caseID, dmSuccess]: BotClientEvents[TanzaniteEvent.Kick]) {
const logChannel = await guild.getLogChannel('moderation');
if (!logChannel) return;
const user = victim instanceof GuildMember ? victim.user : victim;
diff --git a/src/listeners/member-custom/bushMute.ts b/src/listeners/member-custom/customMute.ts
index 73f9490..21a24e8 100644
--- a/src/listeners/member-custom/bushMute.ts
+++ b/src/listeners/member-custom/customMute.ts
@@ -1,16 +1,15 @@
-import { BushListener, colors, humanizeDuration, type BushClientEvents } from '#lib';
+import { BotListener, colors, humanizeDuration, TanzaniteEvent, type BotClientEvents } from '#lib';
import { EmbedBuilder, GuildMember } from 'discord.js';
-export default class BushMuteListener extends BushListener {
+export default class CustomMuteListener extends BotListener {
public constructor() {
- super('bushMute', {
+ super(TanzaniteEvent.Mute, {
emitter: 'client',
- event: 'bushMute',
- category: 'member-custom'
+ event: TanzaniteEvent.Mute
});
}
- public async exec(...[victim, moderator, guild, reason, caseID, duration, dmSuccess]: BushClientEvents['bushMute']) {
+ public async exec(...[victim, moderator, guild, reason, caseID, duration, dmSuccess]: BotClientEvents[TanzaniteEvent.Mute]) {
const logChannel = await guild.getLogChannel('moderation');
if (!logChannel) return;
const user = victim instanceof GuildMember ? victim.user : victim;
diff --git a/src/listeners/member-custom/bushPurge.ts b/src/listeners/member-custom/customPurge.ts
index 75faaeb..956fcb7 100644
--- a/src/listeners/member-custom/bushPurge.ts
+++ b/src/listeners/member-custom/customPurge.ts
@@ -1,16 +1,15 @@
-import { BushListener, colors, emojis, type BushClientEvents } from '#lib';
+import { BotListener, colors, emojis, TanzaniteEvent, type BotClientEvents } from '#lib';
import { EmbedBuilder } from 'discord.js';
-export default class BushPurgeListener extends BushListener {
+export default class CustomPurgeListener extends BotListener {
public constructor() {
- super('bushPurge', {
+ super(TanzaniteEvent.Purge, {
emitter: 'client',
- event: 'bushPurge',
- category: 'member-custom'
+ event: TanzaniteEvent.Purge
});
}
- public async exec(...[moderator, guild, channel, messages]: BushClientEvents['bushPurge']) {
+ public async exec(...[moderator, guild, channel, messages]: BotClientEvents[TanzaniteEvent.Purge]) {
const logChannel = await guild.getLogChannel('moderation');
if (!logChannel) return;
diff --git a/src/listeners/member-custom/bushRemoveTimeout.ts b/src/listeners/member-custom/customRemoveTimeout.ts
index c389538..00454bd 100644
--- a/src/listeners/member-custom/bushRemoveTimeout.ts
+++ b/src/listeners/member-custom/customRemoveTimeout.ts
@@ -1,16 +1,15 @@
-import { BushListener, colors, type BushClientEvents } from '#lib';
+import { BotListener, colors, TanzaniteEvent, type BotClientEvents } from '#lib';
import { EmbedBuilder, GuildMember } from 'discord.js';
-export default class BushRemoveTimeoutListener extends BushListener {
+export default class CustomRemoveTimeoutListener extends BotListener {
public constructor() {
- super('bushRemoveTimeout', {
+ super(TanzaniteEvent.RemoveTimeout, {
emitter: 'client',
- event: 'bushRemoveTimeout',
- category: 'member-custom'
+ event: TanzaniteEvent.RemoveTimeout
});
}
- public async exec(...[victim, moderator, guild, reason, caseID, dmSuccess]: BushClientEvents['bushRemoveTimeout']) {
+ public async exec(...[victim, moderator, guild, reason, caseID, dmSuccess]: BotClientEvents[TanzaniteEvent.RemoveTimeout]) {
const logChannel = await guild.getLogChannel('moderation');
if (!logChannel) return;
const user = victim instanceof GuildMember ? victim.user : victim;
diff --git a/src/listeners/member-custom/bushTimeout.ts b/src/listeners/member-custom/customTimeout.ts
index 82169d6..6b142ec 100644
--- a/src/listeners/member-custom/bushTimeout.ts
+++ b/src/listeners/member-custom/customTimeout.ts
@@ -1,16 +1,15 @@
-import { BushListener, colors, humanizeDuration, type BushClientEvents } from '#lib';
+import { BotListener, colors, humanizeDuration, TanzaniteEvent, type BotClientEvents } from '#lib';
import { EmbedBuilder, GuildMember } from 'discord.js';
-export default class BushTimeoutListener extends BushListener {
+export default class CustomTimeoutListener extends BotListener {
public constructor() {
- super('bushTimeout', {
+ super(TanzaniteEvent.Timeout, {
emitter: 'client',
- event: 'bushTimeout',
- category: 'member-custom'
+ event: TanzaniteEvent.Timeout
});
}
- public async exec(...[victim, moderator, guild, reason, caseID, duration, dmSuccess]: BushClientEvents['bushTimeout']) {
+ public async exec(...[victim, moderator, guild, reason, caseID, duration, dmSuccess]: BotClientEvents[TanzaniteEvent.Timeout]) {
const logChannel = await guild.getLogChannel('moderation');
if (!logChannel) return;
const user = victim instanceof GuildMember ? victim.user : victim;
diff --git a/src/listeners/member-custom/bushUnban.ts b/src/listeners/member-custom/customUnban.ts
index 40394cd..aa4cd75 100644
--- a/src/listeners/member-custom/bushUnban.ts
+++ b/src/listeners/member-custom/customUnban.ts
@@ -1,16 +1,15 @@
-import { BushListener, colors, type BushClientEvents } from '#lib';
+import { BotListener, colors, TanzaniteEvent, type BotClientEvents } from '#lib';
import { EmbedBuilder, GuildMember } from 'discord.js';
-export default class BushUnbanListener extends BushListener {
+export default class CustomUnbanListener extends BotListener {
public constructor() {
- super('bushUnban', {
+ super(TanzaniteEvent.Unban, {
emitter: 'client',
- event: 'bushUnban',
- category: 'member-custom'
+ event: TanzaniteEvent.Unban
});
}
- public async exec(...[victim, moderator, guild, reason, caseID, dmSuccess]: BushClientEvents['bushUnban']) {
+ public async exec(...[victim, moderator, guild, reason, caseID, dmSuccess]: BotClientEvents[TanzaniteEvent.Unban]) {
const logChannel = await guild.getLogChannel('moderation');
if (!logChannel) return;
const user = victim instanceof GuildMember ? victim.user : victim;
diff --git a/src/listeners/member-custom/bushUnblock.ts b/src/listeners/member-custom/customUnblock.ts
index 867d391..a7553d9 100644
--- a/src/listeners/member-custom/bushUnblock.ts
+++ b/src/listeners/member-custom/customUnblock.ts
@@ -1,16 +1,15 @@
-import { BushListener, colors, type BushClientEvents } from '#lib';
+import { BotListener, colors, TanzaniteEvent, type BotClientEvents } from '#lib';
import { EmbedBuilder, GuildMember } from 'discord.js';
-export default class BushUnblockListener extends BushListener {
+export default class CustomUnblockListener extends BotListener {
public constructor() {
- super('bushUnblock', {
+ super(TanzaniteEvent.Unblock, {
emitter: 'client',
- event: 'bushUnblock',
- category: 'member-custom'
+ event: TanzaniteEvent.Unblock
});
}
- public async exec(...[victim, moderator, guild, reason, caseID, dmSuccess, channel]: BushClientEvents['bushUnblock']) {
+ public async exec(...[victim, moderator, guild, reason, caseID, dmSuccess, channel]: BotClientEvents[TanzaniteEvent.Unblock]) {
const logChannel = await guild.getLogChannel('moderation');
if (!logChannel) return;
const user = victim instanceof GuildMember ? victim.user : victim;
diff --git a/src/listeners/member-custom/bushUnmute.ts b/src/listeners/member-custom/customUnmute.ts
index 2ff53b9..ef7b22f 100644
--- a/src/listeners/member-custom/bushUnmute.ts
+++ b/src/listeners/member-custom/customUnmute.ts
@@ -1,16 +1,15 @@
-import { BushListener, colors, type BushClientEvents } from '#lib';
+import { BotListener, colors, TanzaniteEvent, type BotClientEvents } from '#lib';
import { EmbedBuilder, GuildMember } from 'discord.js';
-export default class BushUnmuteListener extends BushListener {
+export default class CustomUnmuteListener extends BotListener {
public constructor() {
- super('bushUnmute', {
+ super(TanzaniteEvent.Unmute, {
emitter: 'client',
- event: 'bushUnmute',
- category: 'member-custom'
+ event: TanzaniteEvent.Unmute
});
}
- public async exec(...[victim, moderator, guild, reason, caseID, dmSuccess]: BushClientEvents['bushUnmute']) {
+ public async exec(...[victim, moderator, guild, reason, caseID, dmSuccess]: BotClientEvents[TanzaniteEvent.Unmute]) {
const logChannel = await guild.getLogChannel('moderation');
if (!logChannel) return;
const user = victim instanceof GuildMember ? victim.user : victim;
diff --git a/src/listeners/member-custom/bushWarn.ts b/src/listeners/member-custom/customWarnMember.ts
index 822a491..3ca7e08 100644
--- a/src/listeners/member-custom/bushWarn.ts
+++ b/src/listeners/member-custom/customWarnMember.ts
@@ -1,16 +1,15 @@
-import { BushListener, colors, type BushClientEvents } from '#lib';
+import { BotListener, colors, TanzaniteEvent, type BotClientEvents } from '#lib';
import { EmbedBuilder, GuildMember } from 'discord.js';
-export default class BushWarnListener extends BushListener {
+export default class CustomWarnListener extends BotListener {
public constructor() {
- super('bushWarn', {
+ super(TanzaniteEvent.Warn, {
emitter: 'client',
- event: 'bushWarn',
- category: 'member-custom'
+ event: TanzaniteEvent.Warn
});
}
- public async exec(...[victim, moderator, guild, reason, caseID, dmSuccess]: BushClientEvents['bushWarn']) {
+ public async exec(...[victim, moderator, guild, reason, caseID, dmSuccess]: BotClientEvents[TanzaniteEvent.Warn]) {
const logChannel = await guild.getLogChannel('moderation');
if (!logChannel) return;
const user = victim instanceof GuildMember ? victim.user : victim;
diff --git a/src/listeners/member-custom/bushLevelUpdate.ts b/src/listeners/member-custom/levelUpdate.ts
index 702f7cc..64dd388 100644
--- a/src/listeners/member-custom/bushLevelUpdate.ts
+++ b/src/listeners/member-custom/levelUpdate.ts
@@ -1,15 +1,14 @@
-import { BushListener, format, type BushClientEvents } from '#lib';
+import { BotListener, format, TanzaniteEvent, type BotClientEvents } from '#lib';
import assert from 'assert/strict';
import { type TextChannel } from 'discord.js';
-type Args = BushClientEvents['bushLevelUpdate'];
+type Args = BotClientEvents[TanzaniteEvent.LevelUpdate];
-export default class BushLevelUpdateListener extends BushListener {
+export default class LevelUpdateListener extends BotListener {
public constructor() {
- super('bushLevelUpdate', {
+ super(TanzaniteEvent.LevelUpdate, {
emitter: 'client',
- event: 'bushLevelUpdate',
- category: 'member-custom'
+ event: TanzaniteEvent.LevelUpdate
});
}
@@ -32,7 +31,7 @@ export default class BushLevelUpdateListener extends BushListener {
if (!success)
await message.guild.error(
- 'bushLevelUpdate',
+ 'LevelUpdate',
`Could not send level up message for ${member.user.tag} in <#${message.channel.id}>.`
);
}
@@ -54,7 +53,7 @@ export default class BushLevelUpdateListener extends BushListener {
if (promises.length) await Promise.all(promises);
} catch (e: any) {
await member.guild.error(
- 'bushLevelUpdate',
+ 'LevelUpdate',
`There was an error adding level roles to ${member.user.tag} upon reaching to level ${newLevel}.\n${
'message' in e ? e.message : e
}`
diff --git a/src/listeners/member-custom/massBan.ts b/src/listeners/member-custom/massBan.ts
index ca41f29..7a6cd34 100644
--- a/src/listeners/member-custom/massBan.ts
+++ b/src/listeners/member-custom/massBan.ts
@@ -1,15 +1,14 @@
-import { BanResponse, banResponse, BushListener, colors, emojis, overflowEmbed, type BushClientEvents } from '#lib';
+import { BanResponse, banResponse, BotListener, colors, emojis, overflowEmbed, TanzaniteEvent, type BotClientEvents } from '#lib';
-export default class MassBanListener extends BushListener {
+export default class MassBanListener extends BotListener {
public constructor() {
- super('massBan', {
+ super(TanzaniteEvent.MassBan, {
emitter: 'client',
- event: 'massBan',
- category: 'member-custom'
+ event: TanzaniteEvent.MassBan
});
}
- public async exec(...[moderator, guild, reason, results]: BushClientEvents['massBan']) {
+ public async exec(...[moderator, guild, reason, results]: BotClientEvents[TanzaniteEvent.MassBan]) {
const logChannel = await guild.getLogChannel('moderation');
if (!logChannel) return;
diff --git a/src/listeners/member-custom/massEvidence.ts b/src/listeners/member-custom/massEvidence.ts
index f0f75df..acfa4f7 100644
--- a/src/listeners/member-custom/massEvidence.ts
+++ b/src/listeners/member-custom/massEvidence.ts
@@ -1,15 +1,14 @@
-import { BushListener, colors, overflowEmbed, type BushClientEvents } from '#lib';
+import { BotListener, colors, overflowEmbed, TanzaniteEvent, type BotClientEvents } from '#lib';
-export default class MassEvidenceListener extends BushListener {
+export default class MassEvidenceListener extends BotListener {
public constructor() {
- super('massEvidence', {
+ super(TanzaniteEvent.MassEvidence, {
emitter: 'client',
- event: 'massEvidence',
- category: 'member-custom'
+ event: TanzaniteEvent.MassEvidence
});
}
- public async exec(...[moderator, guild, evidence, lines]: BushClientEvents['massEvidence']) {
+ public async exec(...[moderator, guild, evidence, lines]: BotClientEvents[TanzaniteEvent.MassEvidence]) {
const logChannel = await guild.getLogChannel('moderation');
if (!logChannel) return;
diff --git a/src/listeners/member-custom/bushPunishRole.ts b/src/listeners/member-custom/punishRole.ts
index 1f28811..70a04d7 100644
--- a/src/listeners/member-custom/bushPunishRole.ts
+++ b/src/listeners/member-custom/punishRole.ts
@@ -1,16 +1,15 @@
-import { BushListener, colors, humanizeDuration, type BushClientEvents } from '#lib';
+import { BotListener, colors, humanizeDuration, TanzaniteEvent, type BotClientEvents } from '#lib';
import { EmbedBuilder, GuildMember } from 'discord.js';
-export default class BushPunishRoleListener extends BushListener {
+export default class PunishRoleListener extends BotListener {
public constructor() {
- super('bushPunishRole', {
+ super(TanzaniteEvent.PunishRoleAdd, {
emitter: 'client',
- event: 'bushPunishRole',
- category: 'member-custom'
+ event: TanzaniteEvent.PunishRoleAdd
});
}
- public async exec(...[victim, moderator, guild, reason, caseID, duration]: BushClientEvents['bushPunishRole']) {
+ public async exec(...[victim, moderator, guild, reason, caseID, duration]: BotClientEvents[TanzaniteEvent.PunishRoleAdd]) {
const logChannel = await guild.getLogChannel('moderation');
if (!logChannel) return;
const user = victim instanceof GuildMember ? victim.user : victim;
diff --git a/src/listeners/member-custom/bushPunishRoleRemove.ts b/src/listeners/member-custom/punishRoleRemove.ts
index ef1d429..f144284 100644
--- a/src/listeners/member-custom/bushPunishRoleRemove.ts
+++ b/src/listeners/member-custom/punishRoleRemove.ts
@@ -1,16 +1,15 @@
-import { BushListener, colors, type BushClientEvents } from '#lib';
+import { BotListener, colors, TanzaniteEvent, type BotClientEvents } from '#lib';
import { EmbedBuilder, GuildMember } from 'discord.js';
-export default class BushPunishRoleRemoveListener extends BushListener {
+export default class PunishRoleRemoveListener extends BotListener {
public constructor() {
- super('bushPunishRoleRemove', {
+ super(TanzaniteEvent.PunishRoleRemove, {
emitter: 'client',
- event: 'bushPunishRoleRemove',
- category: 'member-custom'
+ event: TanzaniteEvent.PunishRoleRemove
});
}
- public async exec(...[victim, moderator, guild, reason, caseID, role]: BushClientEvents['bushPunishRoleRemove']) {
+ public async exec(...[victim, moderator, guild, reason, caseID, role]: BotClientEvents[TanzaniteEvent.PunishRoleRemove]) {
const logChannel = await guild.getLogChannel('moderation');
if (!logChannel) return;
const user = victim instanceof GuildMember ? victim.user : victim;
diff --git a/src/listeners/member-custom/bushUpdateModlog.ts b/src/listeners/member-custom/updateModlog.ts
index 1896ede..f5f910d 100644
--- a/src/listeners/member-custom/bushUpdateModlog.ts
+++ b/src/listeners/member-custom/updateModlog.ts
@@ -1,16 +1,15 @@
-import { BushListener, colors, type BushClientEvents } from '#lib';
+import { BotListener, colors, TanzaniteEvent, type BotClientEvents } from '#lib';
import { EmbedBuilder } from 'discord.js';
-export default class BushUpdateModlogListener extends BushListener {
+export default class UpdateModlogListener extends BotListener {
public constructor() {
- super('bushUpdateModlog', {
+ super(TanzaniteEvent.UpdateModlog, {
emitter: 'client',
- event: 'bushUpdateModlog',
- category: 'member-custom'
+ event: TanzaniteEvent.UpdateModlog
});
}
- public async exec(...[moderator, modlogID, key, oldModlog, newModlog]: BushClientEvents['bushUpdateModlog']) {
+ public async exec(...[moderator, modlogID, key, oldModlog, newModlog]: BotClientEvents[TanzaniteEvent.UpdateModlog]) {
const logChannel = await moderator.guild.getLogChannel('moderation');
if (!logChannel) return;
diff --git a/src/listeners/member-custom/bushUpdateSettings.ts b/src/listeners/member-custom/updateSettings.ts
index a0be2f9..329212a 100644
--- a/src/listeners/member-custom/bushUpdateSettings.ts
+++ b/src/listeners/member-custom/updateSettings.ts
@@ -1,16 +1,15 @@
-import { BushListener, colors, type BushClientEvents } from '#lib';
+import { BotListener, colors, TanzaniteEvent, type BotClientEvents } from '#lib';
import { EmbedBuilder } from 'discord.js';
-export default class BushUpdateSettingsListener extends BushListener {
+export default class UpdateSettingsListener extends BotListener {
public constructor() {
- super('bushUpdateSettings', {
+ super(TanzaniteEvent.UpdateSettings, {
emitter: 'client',
- event: 'bushUpdateSettings',
- category: 'member-custom'
+ event: TanzaniteEvent.UpdateSettings
});
}
- public async exec(...[setting, guild, oldSettings, newSettings, moderator]: BushClientEvents['bushUpdateSettings']) {
+ public async exec(...[setting, guild, oldSettings, newSettings, moderator]: BotClientEvents[TanzaniteEvent.UpdateSettings]) {
const logChannel = await guild.getLogChannel('moderation');
if (!logChannel) return;
diff --git a/src/listeners/message/autoPublisher.ts b/src/listeners/message/autoPublisher.ts
index a6fb7e0..36dcbe2 100644
--- a/src/listeners/message/autoPublisher.ts
+++ b/src/listeners/message/autoPublisher.ts
@@ -1,16 +1,15 @@
-import { BushListener, type BushClientEvents } from '#lib';
+import { BotListener, type BotClientEvents } from '#lib';
import { ChannelType } from 'discord.js';
-export default class autoPublisherListener extends BushListener {
+export default class autoPublisherListener extends BotListener {
public constructor() {
super('autoPublisher', {
emitter: 'client',
- event: 'messageCreate',
- category: 'message'
+ event: 'messageCreate'
});
}
- public async exec(...[message]: BushClientEvents['messageCreate']) {
+ public async exec(...[message]: BotClientEvents['messageCreate']) {
if (!message.guild || !(await message.guild.hasFeature('autoPublish'))) return;
const autoPublishChannels = await message.guild.getSetting('autoPublishChannels');
if (autoPublishChannels) {
diff --git a/src/listeners/message/blacklistedFile.ts b/src/listeners/message/blacklistedFile.ts
index f3e082c..31fbe9d 100644
--- a/src/listeners/message/blacklistedFile.ts
+++ b/src/listeners/message/blacklistedFile.ts
@@ -1,9 +1,9 @@
-// import { BushListener, type BushClientEvents } from '#lib';
+// import { CustomListener, type CustomClientEvents } from '#lib';
// import * as crypto from 'crypto';
// import { ChannelType } from 'discord.js';
// import got from 'got';
-// export default class BlacklistedFileListener extends BushListener {
+// export default class BlacklistedFileListener extends CustomListener {
// #blacklistedFiles: { hash: string[]; name: string; description: string }[] = [
// {
// hash: ['a0f5e30426234bc9d09306ffc9474422'],
@@ -61,11 +61,10 @@
// super('blacklistedFile', {
// emitter: 'client',
// event: 'messageCreate',
-// category: 'message'
// });
// }
-// public async exec(...[message]: BushClientEvents['messageCreate']) {
+// public async exec(...[message]: CustomClientEvents['messageCreate']) {
// if (!message.guild || !(await message.guild.hasFeature('blacklistedFile'))) return;
// // const embedAttachments = message.embeds.filter((e) => ['image', 'video', 'gifv'].includes(e.type));
// const foundEmojis = [...message.content.matchAll(/<(?<animated>a?):\w+:(?<id>\d+)>/g)];
diff --git a/src/listeners/message/boosterMessage.ts b/src/listeners/message/boosterMessage.ts
index 0879ced..43fb04e 100644
--- a/src/listeners/message/boosterMessage.ts
+++ b/src/listeners/message/boosterMessage.ts
@@ -1,16 +1,15 @@
-import { BushListener, type BushClientEvents } from '#lib';
+import { BotListener, type BotClientEvents } from '#lib';
import { MessageType } from 'discord.js';
-export default class BoosterMessageListener extends BushListener {
+export default class BoosterMessageListener extends BotListener {
public constructor() {
super('boosterMessage', {
emitter: 'client',
- event: 'messageCreate',
- category: 'message'
+ event: 'messageCreate'
});
}
- public async exec(...[message]: BushClientEvents['messageCreate']) {
+ public async exec(...[message]: BotClientEvents['messageCreate']) {
if (!message.guild || !(await message.guild?.hasFeature('boosterMessageReact'))) return;
if (
[MessageType.GuildBoost, MessageType.GuildBoostTier1, MessageType.GuildBoostTier2, MessageType.GuildBoostTier3].includes(
diff --git a/src/listeners/message/directMessage.ts b/src/listeners/message/directMessage.ts
index 7278e63..efa5bb6 100644
--- a/src/listeners/message/directMessage.ts
+++ b/src/listeners/message/directMessage.ts
@@ -1,16 +1,15 @@
-import { BushListener, colors, type BushClientEvents } from '#lib';
+import { BotListener, colors, type BotClientEvents } from '#lib';
import { ChannelType, EmbedBuilder } from 'discord.js';
-export default class DirectMessageListener extends BushListener {
+export default class DirectMessageListener extends BotListener {
public constructor() {
super('directMessage', {
emitter: 'client',
- event: 'messageCreate',
- category: 'message'
+ event: 'messageCreate'
});
}
- public async exec(...[message]: BushClientEvents['messageCreate']) {
+ public async exec(...[message]: BotClientEvents['messageCreate']) {
if (message.channel.type === ChannelType.DM) {
if (!(message.author.id == this.client.user!.id) && message.author.bot) return;
if (this.client.cache.global.blacklistedUsers.includes(message.author.id)) return;
diff --git a/src/listeners/message/highlight.ts b/src/listeners/message/highlight.ts
index d9d3c0b..d5d8304 100644
--- a/src/listeners/message/highlight.ts
+++ b/src/listeners/message/highlight.ts
@@ -1,15 +1,14 @@
-import { BushListener, type BushClientEvents } from '#lib';
+import { BotListener, type BotClientEvents } from '#lib';
-export default class HighlightListener extends BushListener {
+export default class HighlightListener extends BotListener {
public constructor() {
super('highlight', {
emitter: 'client',
- event: 'messageCreate',
- category: 'message'
+ event: 'messageCreate'
});
}
- public async exec(...[message]: BushClientEvents['messageCreate']) {
+ public async exec(...[message]: BotClientEvents['messageCreate']) {
if (!message.inGuild()) return;
if (message.author.bot || message.system) return;
if (!(await message.guild.hasFeature('highlight'))) return; // allows highlighting to be disabled on a guild-by-guild basis
diff --git a/src/listeners/message/level.ts b/src/listeners/message/level.ts
index 526dac9..5c314a8 100644
--- a/src/listeners/message/level.ts
+++ b/src/listeners/message/level.ts
@@ -1,17 +1,16 @@
-import { BushListener, Level, type BushCommandHandlerEvents } from '#lib';
+import { BotListener, Level, TanzaniteEvent, type BotCommandHandlerEvents } from '#lib';
import { MessageType } from 'discord.js';
-export default class LevelListener extends BushListener {
+export default class LevelListener extends BotListener {
#levelCooldowns: Set<string> = new Set();
public constructor() {
super('level', {
emitter: 'commandHandler',
- event: 'messageInvalid', // Using messageInvalid here so commands don't give xp
- category: 'message'
+ event: 'messageInvalid' // Using messageInvalid here so commands don't give xp
});
}
- public async exec(...[message]: BushCommandHandlerEvents['messageInvalid']) {
+ public async exec(...[message]: BotCommandHandlerEvents['messageInvalid']) {
if (message.author.bot || !message.author || !message.inGuild()) return;
if (!(await message.guild.hasFeature('leveling'))) return;
if (this.#levelCooldowns.has(`${message.guildId}-${message.author.id}`)) return;
@@ -38,7 +37,7 @@ export default class LevelListener extends BushListener {
});
const newLevel = Level.convertXpToLevel(user.xp);
if (previousLevel !== newLevel)
- this.client.emit('bushLevelUpdate', message.member!, previousLevel, newLevel, user.xp, message);
+ this.client.emit(TanzaniteEvent.LevelUpdate, message.member!, previousLevel, newLevel, user.xp, message);
if (success)
void this.client.logger.verbose(`level`, `Gave <<${xpToGive}>> XP to <<${message.author.tag}>> in <<${message.guild}>>.`);
this.#levelCooldowns.add(`${message.guildId}-${message.author.id}`);
diff --git a/src/listeners/message/quoteCreate.ts b/src/listeners/message/quoteCreate.ts
index 166bbb7..9bad9b8 100644
--- a/src/listeners/message/quoteCreate.ts
+++ b/src/listeners/message/quoteCreate.ts
@@ -1,15 +1,14 @@
-import { BushListener, mappings, type BushClientEvents } from '#lib';
+import { BotListener, mappings, type BotClientEvents } from '#lib';
-export default class QuoteCreateListener extends BushListener {
+export default class QuoteCreateListener extends BotListener {
public constructor() {
super('quoteCreate', {
emitter: 'client',
- event: 'messageCreate',
- category: 'message'
+ event: 'messageCreate'
});
}
- public async exec(...[message]: BushClientEvents['messageCreate']) {
+ public async exec(...[message]: BotClientEvents['messageCreate']) {
if (message.author.id !== mappings.users['IRONM00N'] || !this.client.config.isProduction) return;
if (!message.inGuild()) return;
diff --git a/src/listeners/message/quoteEdit.ts b/src/listeners/message/quoteEdit.ts
index 7da0d95..8422026 100644
--- a/src/listeners/message/quoteEdit.ts
+++ b/src/listeners/message/quoteEdit.ts
@@ -1,15 +1,14 @@
-// import { BushListener, type BushClientEvents } from '#lib';
+// import { CustomListener, type CustomClientEvents } from '#lib';
-// export default class QuoteEditListener extends BushListener {
+// export default class QuoteEditListener extends CustomListener {
// public constructor() {
// super('quoteEdit', {
// emitter: 'client',
// event: 'messageUpdate',
-// category: 'message'
// });
// }
-// public async exec(...[_, newMessage]: BushClientEvents['messageUpdate']) {
+// public async exec(...[_, newMessage]: CustomClientEvents['messageUpdate']) {
// return;
// // if (newMessage.partial) newMessage = await newMessage.fetch();
// // return new QuoteCreateListener().exec(newMessage);
diff --git a/src/listeners/message/verbose.ts b/src/listeners/message/verbose.ts
index f5e94de..9c4ac3a 100644
--- a/src/listeners/message/verbose.ts
+++ b/src/listeners/message/verbose.ts
@@ -1,16 +1,15 @@
-import { BushListener, type BushClientEvents } from '#lib';
+import { BotListener, type BotClientEvents } from '#lib';
import { ChannelType } from 'discord.js';
-export default class MessageVerboseListener extends BushListener {
+export default class MessageVerboseListener extends BotListener {
public constructor() {
super('messageVerbose', {
emitter: 'client',
- event: 'messageCreate',
- category: 'message'
+ event: 'messageCreate'
});
}
- public exec(...[message]: BushClientEvents['messageCreate']): void {
+ public exec(...[message]: BotClientEvents['messageCreate']): void {
if (this.client.customReady) {
if (message.channel?.type === ChannelType.DM) return;
void this.client.console.verbose(
diff --git a/src/listeners/other/consoleListener.ts b/src/listeners/other/consoleListener.ts
index b9da46e..dc6b66b 100644
--- a/src/listeners/other/consoleListener.ts
+++ b/src/listeners/other/consoleListener.ts
@@ -1,60 +1,60 @@
-import { BushListener } from '#lib';
-import { exec } from 'child_process';
-import { promisify } from 'util';
+// import { CustomListener } from '#lib';
+// import { exec } from 'child_process';
+// import { promisify } from 'util';
-// eslint-disable-next-line @typescript-eslint/no-unused-vars
-/* export default */ class ConsoleListener extends BushListener {
- public constructor() {
- super('console', {
- emitter: 'stdin',
- event: 'line'
- });
- }
+// // eslint-disable-next-line @typescript-eslint/no-unused-vars
+// /* export default */ class ConsoleListener extends CustomListener {
+// public constructor() {
+// super('console', {
+// emitter: 'stdin',
+// event: 'line'
+// });
+// }
- public async exec(line: string) {
- if (line.startsWith('eval ') || line.startsWith('ev ')) {
- /* eslint-disable @typescript-eslint/no-unused-vars */
- const sh = promisify(exec),
- bot = this.client,
- client = this.client,
- config = this.client.config,
- { ActivePunishment, Global, Guild, Level, ModLog, StickyRole } = await import('#lib'),
- {
- ButtonInteraction,
- Collector,
- CommandInteraction,
- Message,
- ActionRow,
- Attachment,
- ButtonComponent,
- MessageCollector,
- InteractionCollector,
- Embed,
- SelectMenuComponent,
- ReactionCollector,
- Collection
- } = await import('discord.js');
- /* eslint-enable @typescript-eslint/no-unused-vars */
- try {
- const depth = /--depth (?<depth>\d+)/.exec(line)?.groups?.depth ?? undefined;
- const hidden = /--hidden/.test(line);
- if (depth) line = line.replace(/--depth \d+/, '');
- if (hidden) line = line.replace(/--hidden/, '');
- const input = line.replace('eval ', '').replace('ev ', '');
- const output = await eval(input);
- console.dir(output, {
- colors: true,
- getters: true,
- maxArrayLength: Infinity,
- maxStringLength: Infinity,
- depth: +(depth ?? 2),
- showHidden: hidden
- });
- } catch (e) {
- console.error(e);
- }
- } else if (line.startsWith('stop')) {
- process.exit(0);
- }
- }
-}
+// public async exec(line: string) {
+// if (line.startsWith('eval ') || line.startsWith('ev ')) {
+// /* eslint-disable @typescript-eslint/no-unused-vars */
+// const sh = promisify(exec),
+// bot = this.client,
+// client = this.client,
+// config = this.client.config,
+// { ActivePunishment, Global, Guild, Level, ModLog, StickyRole } = await import('#lib'),
+// {
+// ButtonInteraction,
+// Collector,
+// CommandInteraction,
+// Message,
+// ActionRow,
+// Attachment,
+// ButtonComponent,
+// MessageCollector,
+// InteractionCollector,
+// Embed,
+// SelectMenuComponent,
+// ReactionCollector,
+// Collection
+// } = await import('discord.js');
+// /* eslint-enable @typescript-eslint/no-unused-vars */
+// try {
+// const depth = /--depth (?<depth>\d+)/.exec(line)?.groups?.depth ?? undefined;
+// const hidden = /--hidden/.test(line);
+// if (depth) line = line.replace(/--depth \d+/, '');
+// if (hidden) line = line.replace(/--hidden/, '');
+// const input = line.replace('eval ', '').replace('ev ', '');
+// const output = await eval(input);
+// console.dir(output, {
+// colors: true,
+// getters: true,
+// maxArrayLength: Infinity,
+// maxStringLength: Infinity,
+// depth: +(depth ?? 2),
+// showHidden: hidden
+// });
+// } catch (e) {
+// console.error(e);
+// }
+// } else if (line.startsWith('stop')) {
+// process.exit(0);
+// }
+// }
+// }
diff --git a/src/listeners/other/exit.ts b/src/listeners/other/exit.ts
index ac074df..e1c8fee 100644
--- a/src/listeners/other/exit.ts
+++ b/src/listeners/other/exit.ts
@@ -1,6 +1,6 @@
-import { BushListener } from '#lib';
+import { BotListener } from '#lib';
-export default class ExitListener extends BushListener {
+export default class ExitListener extends BotListener {
public constructor() {
super('exit', {
emitter: 'process',
diff --git a/src/listeners/other/promiseRejection.ts b/src/listeners/other/promiseRejection.ts
index 4ff6c0e..b56cef9 100644
--- a/src/listeners/other/promiseRejection.ts
+++ b/src/listeners/other/promiseRejection.ts
@@ -1,6 +1,6 @@
-import { BushListener, formatError, generateErrorEmbed } from '#lib';
+import { BotListener, formatError, generateErrorEmbed } from '#lib';
-export default class PromiseRejectionListener extends BushListener {
+export default class PromiseRejectionListener extends BotListener {
public constructor() {
super('promiseRejection', {
emitter: 'process',
diff --git a/src/listeners/other/uncaughtException.ts b/src/listeners/other/uncaughtException.ts
index c976a22..ab1c1b7 100644
--- a/src/listeners/other/uncaughtException.ts
+++ b/src/listeners/other/uncaughtException.ts
@@ -1,6 +1,6 @@
-import { BushListener, formatError, generateErrorEmbed } from '#lib';
+import { BotListener, formatError, generateErrorEmbed } from '#lib';
-export default class UncaughtExceptionListener extends BushListener {
+export default class UncaughtExceptionListener extends BotListener {
public constructor() {
super('uncaughtException', {
emitter: 'process',
diff --git a/src/listeners/other/warning.ts b/src/listeners/other/warning.ts
index 5cf9764..7fdcd46 100644
--- a/src/listeners/other/warning.ts
+++ b/src/listeners/other/warning.ts
@@ -1,6 +1,6 @@
-import { BushListener, colors, formatError, generateErrorEmbed } from '#lib';
+import { BotListener, colors, formatError, generateErrorEmbed } from '#lib';
-export default class WarningListener extends BushListener {
+export default class WarningListener extends BotListener {
public constructor() {
super('warning', {
emitter: 'process',
diff --git a/src/listeners/rest/rateLimit.ts b/src/listeners/rest/rateLimit.ts
index 9071416..46e5471 100644
--- a/src/listeners/rest/rateLimit.ts
+++ b/src/listeners/rest/rateLimit.ts
@@ -1,12 +1,11 @@
-import { BushListener } from '#lib';
+import { BotListener } from '#lib';
import type { RestEvents } from '@discordjs/rest';
-export default class RateLimitedListener extends BushListener {
+export default class RateLimitedListener extends BotListener {
public constructor() {
super('rateLimited', {
emitter: 'rest',
- event: 'rateLimited',
- category: 'rest'
+ event: 'rateLimited'
});
}
diff --git a/src/listeners/track-manual-punishments/modlogSyncBan.ts b/src/listeners/track-manual-punishments/modlogSyncBan.ts
index 3c0ff34..5ecb8f3 100644
--- a/src/listeners/track-manual-punishments/modlogSyncBan.ts
+++ b/src/listeners/track-manual-punishments/modlogSyncBan.ts
@@ -1,16 +1,15 @@
-import { BushListener, colors, humanizeDuration, Moderation, ModLogType, sleep, Time, type BushClientEvents } from '#lib';
+import { BotListener, colors, humanizeDuration, Moderation, ModLogType, sleep, Time, type BotClientEvents } from '#lib';
import { AuditLogEvent, EmbedBuilder, PermissionFlagsBits } from 'discord.js';
-export default class ModlogSyncBanListener extends BushListener {
+export default class ModlogSyncBanListener extends BotListener {
public constructor() {
super('modlogSyncBan', {
emitter: 'client',
- event: 'guildBanAdd',
- category: 'guild'
+ event: 'guildBanAdd'
});
}
- public async exec(...[ban]: BushClientEvents['guildBanAdd']) {
+ public async exec(...[ban]: BotClientEvents['guildBanAdd']) {
if (!(await ban.guild.hasFeature('logManualPunishments'))) return;
if (!ban.guild.members.me) return; // bot was banned
if (!ban.guild.members.me.permissions.has(PermissionFlagsBits.ViewAuditLog)) {
diff --git a/src/listeners/track-manual-punishments/modlogSyncKick.ts b/src/listeners/track-manual-punishments/modlogSyncKick.ts
index 7f7e9bc..fc3fab9 100644
--- a/src/listeners/track-manual-punishments/modlogSyncKick.ts
+++ b/src/listeners/track-manual-punishments/modlogSyncKick.ts
@@ -1,16 +1,15 @@
-import { BushListener, colors, humanizeDuration, Moderation, ModLogType, sleep, Time, type BushClientEvents } from '#lib';
+import { BotListener, colors, humanizeDuration, Moderation, ModLogType, sleep, Time, type BotClientEvents } from '#lib';
import { AuditLogEvent, EmbedBuilder, PermissionFlagsBits } from 'discord.js';
-export default class ModlogSyncKickListener extends BushListener {
+export default class ModlogSyncKickListener extends BotListener {
public constructor() {
super('modlogSyncKick', {
emitter: 'client',
- event: 'guildMemberRemove',
- category: 'guild'
+ event: 'guildMemberRemove'
});
}
- public async exec(...[member]: BushClientEvents['guildMemberRemove']) {
+ public async exec(...[member]: BotClientEvents['guildMemberRemove']) {
if (!(await member.guild.hasFeature('logManualPunishments'))) return;
if (!member.guild.members.me) return; // bot was removed from guild
if (!member.guild.members.me.permissions.has(PermissionFlagsBits.ViewAuditLog)) {
diff --git a/src/listeners/track-manual-punishments/modlogSyncTimeout.ts b/src/listeners/track-manual-punishments/modlogSyncTimeout.ts
index 50d1331..6248654 100644
--- a/src/listeners/track-manual-punishments/modlogSyncTimeout.ts
+++ b/src/listeners/track-manual-punishments/modlogSyncTimeout.ts
@@ -1,16 +1,15 @@
-import { BushListener, colors, humanizeDuration, Moderation, ModLogType, sleep, Time, type BushClientEvents } from '#lib';
+import { BotListener, colors, humanizeDuration, Moderation, ModLogType, sleep, Time, type BotClientEvents } from '#lib';
import { AuditLogEvent, EmbedBuilder, PermissionFlagsBits } from 'discord.js';
-export default class ModlogSyncTimeoutListener extends BushListener {
+export default class ModlogSyncTimeoutListener extends BotListener {
public constructor() {
super('modlogSyncTimeout', {
emitter: 'client',
- event: 'guildMemberUpdate',
- category: 'guild'
+ event: 'guildMemberUpdate'
});
}
- public async exec(...[_oldMember, newMember]: BushClientEvents['guildMemberUpdate']) {
+ public async exec(...[_oldMember, newMember]: BotClientEvents['guildMemberUpdate']) {
if (!(await newMember.guild.hasFeature('logManualPunishments'))) return;
if (!newMember.guild.members.me!.permissions.has(PermissionFlagsBits.ViewAuditLog)) {
return newMember.guild.error(
diff --git a/src/listeners/track-manual-punishments/modlogSyncUnban.ts b/src/listeners/track-manual-punishments/modlogSyncUnban.ts
index 8dfd39b..96de018 100644
--- a/src/listeners/track-manual-punishments/modlogSyncUnban.ts
+++ b/src/listeners/track-manual-punishments/modlogSyncUnban.ts
@@ -1,16 +1,15 @@
-import { BushListener, colors, humanizeDuration, Moderation, ModLogType, sleep, Time, type BushClientEvents } from '#lib';
+import { BotListener, colors, humanizeDuration, Moderation, ModLogType, sleep, Time, type BotClientEvents } from '#lib';
import { AuditLogEvent, EmbedBuilder, PermissionFlagsBits } from 'discord.js';
-export default class ModlogSyncUnbanListener extends BushListener {
+export default class ModlogSyncUnbanListener extends BotListener {
public constructor() {
super('modlogSyncUnban', {
emitter: 'client',
- event: 'guildBanRemove',
- category: 'guild'
+ event: 'guildBanRemove'
});
}
- public async exec(...[ban]: BushClientEvents['guildBanRemove']) {
+ public async exec(...[ban]: BotClientEvents['guildBanRemove']) {
if (!(await ban.guild.hasFeature('logManualPunishments'))) return;
if (!ban.guild.members.me!.permissions.has(PermissionFlagsBits.ViewAuditLog)) {
return ban.guild.error(
diff --git a/src/listeners/ws/INTERACTION_CREATE.ts b/src/listeners/ws/INTERACTION_CREATE.ts
index 67fe56b..250d8b5 100644
--- a/src/listeners/ws/INTERACTION_CREATE.ts
+++ b/src/listeners/ws/INTERACTION_CREATE.ts
@@ -1,4 +1,4 @@
-import { BushListener, capitalize, colors, emojis, Moderation, PunishmentTypePresent } from '#lib';
+import { BotListener, capitalize, colors, emojis, Moderation, PunishmentTypePresent } from '#lib';
import assert from 'assert/strict';
import {
ActionRowBuilder,
@@ -21,12 +21,11 @@ import {
type APIModalInteractionResponse
} from 'discord.js';
-export default class WsInteractionCreateListener extends BushListener {
+export default class WsInteractionCreateListener extends BotListener {
public constructor() {
super('wsInteractionCreate', {
emitter: 'ws',
- event: GatewayDispatchEvents.InteractionCreate,
- category: 'ws'
+ event: GatewayDispatchEvents.InteractionCreate
});
}
diff --git a/src/tasks/cache/cpuUsage.ts b/src/tasks/cache/cpuUsage.ts
index 61e7a54..3cd52ba 100644
--- a/src/tasks/cache/cpuUsage.ts
+++ b/src/tasks/cache/cpuUsage.ts
@@ -1,7 +1,7 @@
-import { BushTask, Time } from '#lib';
+import { BotTask, Time } from '#lib';
import os from 'node:os';
-export default class CpuUsageTask extends BushTask {
+export default class CpuUsageTask extends BotTask {
public constructor() {
super('cpuUsage', {
delay: Time.Minute,
diff --git a/src/tasks/cache/updateCache.ts b/src/tasks/cache/updateCache.ts
index 190e2a4..8b42ad3 100644
--- a/src/tasks/cache/updateCache.ts
+++ b/src/tasks/cache/updateCache.ts
@@ -1,6 +1,6 @@
-import { BushTask, Time, updateEveryCache } from '#lib';
+import { BotTask, Time, updateEveryCache } from '#lib';
-export default class UpdateCacheTask extends BushTask {
+export default class UpdateCacheTask extends BotTask {
public constructor() {
super('updateCache', {
delay: 5 * Time.Minute,
diff --git a/src/tasks/cache/updateHighlightCache.ts b/src/tasks/cache/updateHighlightCache.ts
index 4ab5544..90139a6 100644
--- a/src/tasks/cache/updateHighlightCache.ts
+++ b/src/tasks/cache/updateHighlightCache.ts
@@ -1,7 +1,6 @@
-import { BushTask } from '../../../lib/extensions/discord-akairo/BushTask.js';
-import { Time } from '../../../lib/utils/BushConstants.js';
+import { BotTask, Time } from '#lib';
-export default class UpdateHighlightCacheTask extends BushTask {
+export default class UpdateHighlightCacheTask extends BotTask {
public constructor() {
super('updateHighlightCache', {
delay: 5 * Time.Minute,
diff --git a/src/tasks/cache/updateNeuItemCache.ts b/src/tasks/cache/updateNeuItemCache.ts
index 14c107b..5c88377 100644
--- a/src/tasks/cache/updateNeuItemCache.ts
+++ b/src/tasks/cache/updateNeuItemCache.ts
@@ -1,6 +1,6 @@
-import { BushTask, Time } from '#lib';
+import { BotTask, Time } from '#lib';
-export default class UpdateNeuItemCache extends BushTask {
+export default class UpdateNeuItemCache extends BotTask {
public constructor() {
super('updateNeuItemCache', {
delay: 1 * Time.Hour,
diff --git a/src/tasks/cache/updatePriceItemCache.ts b/src/tasks/cache/updatePriceItemCache.ts
index bafbfaf..04ae19a 100644
--- a/src/tasks/cache/updatePriceItemCache.ts
+++ b/src/tasks/cache/updatePriceItemCache.ts
@@ -1,7 +1,7 @@
-import { BushTask, Time } from '#lib';
+import { BotTask, Time } from '#lib';
import PriceCommand, { AuctionAverages, Bazaar, LowestBIN } from '../../commands/utilities/price.js';
-export default class UpdatePriceItemCache extends BushTask {
+export default class UpdatePriceItemCache extends BotTask {
public constructor() {
super('updatePriceItemCache', {
delay: 10 * Time.Minute,
diff --git a/src/tasks/feature/handleReminders.ts b/src/tasks/feature/handleReminders.ts
index a9f5658..afe6dd6 100644
--- a/src/tasks/feature/handleReminders.ts
+++ b/src/tasks/feature/handleReminders.ts
@@ -1,7 +1,7 @@
-import { BushTask, dateDelta, format, Reminder, Time } from '#lib';
+import { BotTask, dateDelta, format, Reminder, Time } from '#lib';
import { Op } from 'sequelize';
-export default class HandlerRemindersTask extends BushTask {
+export default class HandlerRemindersTask extends BotTask {
public constructor() {
super('handlerReminders', {
delay: 30 * Time.Second,
diff --git a/src/tasks/feature/removeExpiredPunishements.ts b/src/tasks/feature/removeExpiredPunishements.ts
index 30b8eba..eac325a 100644
--- a/src/tasks/feature/removeExpiredPunishements.ts
+++ b/src/tasks/feature/removeExpiredPunishements.ts
@@ -1,8 +1,8 @@
-import { ActivePunishment, ActivePunishmentType, BushTask, Time } from '#lib';
+import { ActivePunishment, ActivePunishmentType, BotTask, Time } from '#lib';
import assert from 'assert/strict';
import { Op } from 'sequelize';
-export default class RemoveExpiredPunishmentsTask extends BushTask {
+export default class RemoveExpiredPunishmentsTask extends BotTask {
public constructor() {
super('removeExpiredPunishments', {
delay: 15 * Time.Second,
@@ -37,7 +37,7 @@ export default class RemoveExpiredPunishmentsTask extends BushTask {
switch (entry.type) {
case ActivePunishmentType.BAN: {
assert(user);
- const result = await guild.bushUnban({ user: user, reason: 'Punishment expired' });
+ const result = await guild.customUnban({ user: user, reason: 'Punishment expired' });
if (['success', 'user not banned', 'cannot resolve user'].includes(result)) await entry.destroy();
else throw new Error(result);
void this.client.logger.verbose(`removeExpiredPunishments`, `Unbanned ${entry.user}.`);
@@ -48,7 +48,7 @@ export default class RemoveExpiredPunishmentsTask extends BushTask {
await entry.destroy(); // channel overrides are removed when the member leaves the guild
return;
}
- const result = await member.bushUnblock({ reason: 'Punishment expired', channel: entry.extraInfo });
+ const result = await member.customUnblock({ reason: 'Punishment expired', channel: entry.extraInfo });
if (['success', 'user not blocked'].includes(result)) await entry.destroy();
else throw new Error(result);
void this.client.logger.verbose(`removeExpiredPunishments`, `Unblocked ${entry.user}.`);
@@ -56,7 +56,7 @@ export default class RemoveExpiredPunishmentsTask extends BushTask {
}
case ActivePunishmentType.MUTE: {
if (!member) return;
- const result = await member.bushUnmute({ reason: 'Punishment expired' });
+ const result = await member.customUnmute({ reason: 'Punishment expired' });
if (['success', 'failed to dm'].includes(result)) await entry.destroy();
else throw new Error(result);
void this.client.logger.verbose(`removeExpiredPunishments`, `Unmuted ${entry.user}.`);
@@ -66,7 +66,7 @@ export default class RemoveExpiredPunishmentsTask extends BushTask {
if (!member) return;
const role = guild?.roles?.cache?.get(entry.extraInfo);
if (!role) throw new Error(`Cannot unmute ${member.user.tag} because I cannot find the mute role.`);
- const result = await member.bushRemoveRole({
+ const result = await member.customRemoveRole({
reason: 'Punishment expired',
role: role,
addToModlog: true
diff --git a/src/tasks/feature/updateStats.ts b/src/tasks/feature/updateStats.ts
index 77b7c30..ded7aa1 100644
--- a/src/tasks/feature/updateStats.ts
+++ b/src/tasks/feature/updateStats.ts
@@ -1,6 +1,6 @@
-import { BushTask, Stat, Time } from '#lib';
+import { BotTask, Stat, Time } from '#lib';
-export default class UpdateStatsTask extends BushTask {
+export default class UpdateStatsTask extends BotTask {
public constructor() {
super('updateStats', {
delay: 10 * Time.Minute,
diff --git a/src/tasks/stats/guildCount.ts b/src/tasks/stats/guildCount.ts
index f52dc95..177c959 100644
--- a/src/tasks/stats/guildCount.ts
+++ b/src/tasks/stats/guildCount.ts
@@ -1,7 +1,6 @@
-import { BushTask, Time } from '#lib';
-import { GuildCount } from '../../../lib/models/shared/GuildCount.js';
+import { BotTask, GuildCount, Time } from '#lib';
-export default class GuildCountTask extends BushTask {
+export default class GuildCountTask extends BotTask {
public constructor() {
super('guildCount', {
delay: 15 * Time.Minute,
diff --git a/src/tasks/stats/memberCount.ts b/src/tasks/stats/memberCount.ts
index 9c31c5b..7cafde5 100644
--- a/src/tasks/stats/memberCount.ts
+++ b/src/tasks/stats/memberCount.ts
@@ -1,7 +1,7 @@
-import { BushTask, MemberCount, Time } from '#lib';
+import { BotTask, MemberCount, Time } from '#lib';
import assert from 'assert/strict';
-export default class MemberCountTask extends BushTask {
+export default class MemberCountTask extends BotTask {
public constructor() {
super('memberCount', {
delay: Time.Minute,
diff --git a/yarn.lock b/yarn.lock
index 430a36b..13f66b0 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -1013,65 +1013,6 @@ __metadata:
languageName: node
linkType: hard
-"bush-bot@workspace:.":
- version: 0.0.0-use.local
- resolution: "bush-bot@workspace:."
- dependencies:
- "@discordjs/builders": ^1.1.0
- "@discordjs/rest": ^1.0.1
- "@ironm00n/nbt-ts": ^1.4.0
- "@napi-rs/canvas": ^0.1.29
- "@notenoughupdates/discord.js-minesweeper": ^1.0.10
- "@notenoughupdates/events-intercept": ^3.0.1
- "@notenoughupdates/humanize-duration": ^4.0.1
- "@notenoughupdates/simplify-number": ^1.0.1
- "@notenoughupdates/wolfram-alpha-api": ^1.0.2
- "@sapphire/snowflake": ^3.2.2
- "@sentry/integrations": ^7.11.1
- "@sentry/node": ^7.11.1
- "@sentry/tracing": ^7.11.1
- "@sentry/types": ^7.11.1
- "@types/eslint": ^8.4.6
- "@types/express": ^4.17.13
- "@types/lodash": ^4.14.184
- "@types/node": ^18.7.13
- "@types/numeral": ^2.0.2
- "@types/pg": ^8.6.5
- "@types/prettier": ^2.7.0
- "@types/rimraf": ^3.0.2
- "@types/tinycolor2": ^1.4.3
- "@types/validator": ^13.7.5
- "@typescript-eslint/eslint-plugin": ^5.35.1
- "@typescript-eslint/parser": ^5.35.1
- chalk: ^5.0.1
- deep-lock: ^1.0.0
- discord-akairo: "npm:@notenoughupdates/discord-akairo@dev"
- discord-api-types: 0.37.1
- discord.js: "npm:@notenoughupdates/discord.js@forum"
- eslint: ^8.23.0
- eslint-config-prettier: ^8.5.0
- eslint-plugin-deprecation: ^1.3.2
- fuse.js: ^6.6.2
- gif-to-apng: ^0.1.2
- googleapis: ^107.0.0
- lodash: ^4.17.21
- mathjs: ^11.1.0
- nanoid: ^4.0.0
- numeral: ^2.0.6
- pg: ^8.8.0
- pg-hstore: ^2.3.4
- prettier: ^2.7.1
- pretty-bytes: ^6.0.0
- rimraf: ^3.0.2
- sequelize: 6.21.4
- tinycolor2: ^1.4.2
- ts-essentials: ^9.3.0
- typescript: ^4.8.2
- vitest: ^0.22.1
- vm2: ^3.9.10
- languageName: unknown
- linkType: soft
-
"cacache@npm:^16.1.0":
version: 16.1.3
resolution: "cacache@npm:16.1.3"
@@ -3906,6 +3847,65 @@ __metadata:
languageName: node
linkType: hard
+"tanzanite@workspace:.":
+ version: 0.0.0-use.local
+ resolution: "tanzanite@workspace:."
+ dependencies:
+ "@discordjs/builders": ^1.1.0
+ "@discordjs/rest": ^1.0.1
+ "@ironm00n/nbt-ts": ^1.4.0
+ "@napi-rs/canvas": ^0.1.29
+ "@notenoughupdates/discord.js-minesweeper": ^1.0.10
+ "@notenoughupdates/events-intercept": ^3.0.1
+ "@notenoughupdates/humanize-duration": ^4.0.1
+ "@notenoughupdates/simplify-number": ^1.0.1
+ "@notenoughupdates/wolfram-alpha-api": ^1.0.2
+ "@sapphire/snowflake": ^3.2.2
+ "@sentry/integrations": ^7.11.1
+ "@sentry/node": ^7.11.1
+ "@sentry/tracing": ^7.11.1
+ "@sentry/types": ^7.11.1
+ "@types/eslint": ^8.4.6
+ "@types/express": ^4.17.13
+ "@types/lodash": ^4.14.184
+ "@types/node": ^18.7.13
+ "@types/numeral": ^2.0.2
+ "@types/pg": ^8.6.5
+ "@types/prettier": ^2.7.0
+ "@types/rimraf": ^3.0.2
+ "@types/tinycolor2": ^1.4.3
+ "@types/validator": ^13.7.5
+ "@typescript-eslint/eslint-plugin": ^5.35.1
+ "@typescript-eslint/parser": ^5.35.1
+ chalk: ^5.0.1
+ deep-lock: ^1.0.0
+ discord-akairo: "npm:@notenoughupdates/discord-akairo@dev"
+ discord-api-types: 0.37.1
+ discord.js: "npm:@notenoughupdates/discord.js@forum"
+ eslint: ^8.23.0
+ eslint-config-prettier: ^8.5.0
+ eslint-plugin-deprecation: ^1.3.2
+ fuse.js: ^6.6.2
+ gif-to-apng: ^0.1.2
+ googleapis: ^107.0.0
+ lodash: ^4.17.21
+ mathjs: ^11.1.0
+ nanoid: ^4.0.0
+ numeral: ^2.0.6
+ pg: ^8.8.0
+ pg-hstore: ^2.3.4
+ prettier: ^2.7.1
+ pretty-bytes: ^6.0.0
+ rimraf: ^3.0.2
+ sequelize: 6.21.4
+ tinycolor2: ^1.4.2
+ ts-essentials: ^9.3.0
+ typescript: ^4.8.2
+ vitest: ^0.22.1
+ vm2: ^3.9.10
+ languageName: unknown
+ linkType: soft
+
"tar-stream@npm:^1.5.2":
version: 1.6.2
resolution: "tar-stream@npm:1.6.2"