gitextract_rchn42w_/ ├── .clabot ├── .cursorignore ├── .devcontainer/ │ └── devcontainer.json ├── .dockerignore ├── .editorconfig ├── .eslintrc.js ├── .gitattributes ├── .github/ │ ├── dependabot.yml │ └── workflows/ │ └── codequality.yml ├── .gitignore ├── .nvmrc ├── .prettierignore ├── .prettierrc ├── AGENTS.md ├── DEVELOPMENT.md ├── Dockerfile ├── LICENSE.md ├── MANAGEMENT.md ├── PRODUCTION.md ├── README.md ├── assets/ │ └── icons/ │ ├── LICENSE │ └── case_icons.afphoto ├── backend/ │ ├── .gitignore │ ├── .prettierignore │ ├── package.json │ ├── register-tsconfig-paths.js │ ├── src/ │ │ ├── Blocker.ts │ │ ├── DiscordJSError.ts │ │ ├── Queue.ts │ │ ├── QueuedEventEmitter.ts │ │ ├── RecoverablePluginError.ts │ │ ├── RegExpRunner.ts │ │ ├── SimpleCache.ts │ │ ├── SimpleError.ts │ │ ├── api/ │ │ │ ├── archives.ts │ │ │ ├── auth.ts │ │ │ ├── docs.ts │ │ │ ├── guilds/ │ │ │ │ ├── importExport.ts │ │ │ │ ├── index.ts │ │ │ │ └── misc.ts │ │ │ ├── guilds.ts │ │ │ ├── index.ts │ │ │ ├── permissions.ts │ │ │ ├── rateLimits.ts │ │ │ ├── responses.ts │ │ │ ├── staff.ts │ │ │ ├── start.ts │ │ │ └── tasks.ts │ │ ├── commandTypes.ts │ │ ├── configValidator.ts │ │ ├── data/ │ │ │ ├── AllowedGuilds.ts │ │ │ ├── ApiAuditLog.ts │ │ │ ├── ApiLogins.ts │ │ │ ├── ApiPermissionAssignments.ts │ │ │ ├── ApiUserInfo.ts │ │ │ ├── Archives.ts │ │ │ ├── BaseGuildRepository.ts │ │ │ ├── BaseRepository.ts │ │ │ ├── CaseTypes.ts │ │ │ ├── Configs.ts │ │ │ ├── DefaultLogMessages.json │ │ │ ├── FishFish.ts │ │ │ ├── GuildAntiraidLevels.ts │ │ │ ├── GuildArchives.ts │ │ │ ├── GuildAutoReactions.ts │ │ │ ├── GuildButtonRoles.ts │ │ │ ├── GuildCases.ts │ │ │ ├── GuildContextMenuLinks.ts │ │ │ ├── GuildCounters.ts │ │ │ ├── GuildEvents.ts │ │ │ ├── GuildLogs.ts │ │ │ ├── GuildMemberCache.ts │ │ │ ├── GuildMemberTimezones.ts │ │ │ ├── GuildMutes.ts │ │ │ ├── GuildNicknameHistory.ts │ │ │ ├── GuildPersistedData.ts │ │ │ ├── GuildPingableRoles.ts │ │ │ ├── GuildReactionRoles.ts │ │ │ ├── GuildReminders.ts │ │ │ ├── GuildRoleButtons.ts │ │ │ ├── GuildRoleQueue.ts │ │ │ ├── GuildSavedMessages.ts │ │ │ ├── GuildScheduledPosts.ts │ │ │ ├── GuildSlowmodes.ts │ │ │ ├── GuildStarboardMessages.ts │ │ │ ├── GuildStarboardReactions.ts │ │ │ ├── GuildStats.ts │ │ │ ├── GuildTags.ts │ │ │ ├── GuildTempbans.ts │ │ │ ├── GuildVCAlerts.ts │ │ │ ├── LogType.ts │ │ │ ├── MemberCache.ts │ │ │ ├── MuteTypes.ts │ │ │ ├── Mutes.ts │ │ │ ├── Reminders.ts │ │ │ ├── ScheduledPosts.ts │ │ │ ├── Supporters.ts │ │ │ ├── Tempbans.ts │ │ │ ├── UsernameHistory.ts │ │ │ ├── VCAlerts.ts │ │ │ ├── Webhooks.ts │ │ │ ├── Zalgo.ts │ │ │ ├── apiAuditLogTypes.ts │ │ │ ├── buildEntity.ts │ │ │ ├── cleanup/ │ │ │ │ ├── configs.ts │ │ │ │ ├── messages.ts │ │ │ │ ├── nicknames.ts │ │ │ │ └── usernames.ts │ │ │ ├── dataSource.ts │ │ │ ├── db.ts │ │ │ ├── entities/ │ │ │ │ ├── AllowedGuild.ts │ │ │ │ ├── AntiraidLevel.ts │ │ │ │ ├── ApiAuditLogEntry.ts │ │ │ │ ├── ApiLogin.ts │ │ │ │ ├── ApiPermissionAssignment.ts │ │ │ │ ├── ApiUserInfo.ts │ │ │ │ ├── ArchiveEntry.ts │ │ │ │ ├── AutoReaction.ts │ │ │ │ ├── ButtonRole.ts │ │ │ │ ├── Case.ts │ │ │ │ ├── CaseNote.ts │ │ │ │ ├── Config.ts │ │ │ │ ├── ContextMenuLink.ts │ │ │ │ ├── Counter.ts │ │ │ │ ├── CounterTrigger.ts │ │ │ │ ├── CounterTriggerState.ts │ │ │ │ ├── CounterValue.ts │ │ │ │ ├── MemberCacheItem.ts │ │ │ │ ├── MemberTimezone.ts │ │ │ │ ├── Mute.ts │ │ │ │ ├── NicknameHistoryEntry.ts │ │ │ │ ├── PersistedData.ts │ │ │ │ ├── PingableRole.ts │ │ │ │ ├── ReactionRole.ts │ │ │ │ ├── Reminder.ts │ │ │ │ ├── RoleButtonsItem.ts │ │ │ │ ├── RoleQueueItem.ts │ │ │ │ ├── SavedMessage.ts │ │ │ │ ├── ScheduledPost.ts │ │ │ │ ├── SlowmodeChannel.ts │ │ │ │ ├── SlowmodeUser.ts │ │ │ │ ├── StarboardMessage.ts │ │ │ │ ├── StarboardReaction.ts │ │ │ │ ├── StatValue.ts │ │ │ │ ├── Supporter.ts │ │ │ │ ├── Tag.ts │ │ │ │ ├── TagResponse.ts │ │ │ │ ├── Tempban.ts │ │ │ │ ├── UsernameHistoryEntry.ts │ │ │ │ ├── VCAlert.ts │ │ │ │ └── Webhook.ts │ │ │ ├── getChannelIdFromMessageId.ts │ │ │ ├── loops/ │ │ │ │ ├── expiredArchiveDeletionLoop.ts │ │ │ │ ├── expiredMemberCacheDeletionLoop.ts │ │ │ │ ├── expiringMutesLoop.ts │ │ │ │ ├── expiringTempbansLoop.ts │ │ │ │ ├── expiringVCAlertsLoop.ts │ │ │ │ ├── memberCacheDeletionLoop.ts │ │ │ │ ├── savedMessageCleanupLoop.ts │ │ │ │ ├── upcomingRemindersLoop.ts │ │ │ │ └── upcomingScheduledPostsLoop.ts │ │ │ ├── queryLogger.ts │ │ │ └── redis.ts │ │ ├── debugCounters.ts │ │ ├── env.ts │ │ ├── exportSchemas.ts │ │ ├── globals.ts │ │ ├── humanizeDuration.ts │ │ ├── index.ts │ │ ├── logger.ts │ │ ├── migrateConfigsToDB.ts │ │ ├── migrations/ │ │ │ ├── 1540519249973-CreatePreTypeORMTables.ts │ │ │ ├── 1543053430712-CreateMessagesTable.ts │ │ │ ├── 1544877081073-CreateSlowmodeTables.ts │ │ │ ├── 1544887946307-CreateStarboardTable.ts │ │ │ ├── 1546770935261-CreateTagResponsesTable.ts │ │ │ ├── 1546778415930-CreateNameHistoryTable.ts │ │ │ ├── 1546788508314-MakeNameHistoryValueLengthLonger.ts │ │ │ ├── 1547290549908-CreateAutoReactionsTable.ts │ │ │ ├── 1547293464842-CreatePingableRolesTable.ts │ │ │ ├── 1547392046629-AddIndexToArchivesExpiresAt.ts │ │ │ ├── 1547393619900-AddIsHiddenToCases.ts │ │ │ ├── 1549649586803-AddPPFieldsToCases.ts │ │ │ ├── 1550409894008-FixEmojiIndexInReactionRoles.ts │ │ │ ├── 1550521627877-CreateSelfGrantableRolesTable.ts │ │ │ ├── 1550609900261-CreateRemindersTable.ts │ │ │ ├── 1556908589679-CreateUsernameHistoryTable.ts │ │ │ ├── 1556909512501-MigrateUsernamesToNewHistoryTable.ts │ │ │ ├── 1556913287547-TurnNameHistoryToNicknameHistory.ts │ │ │ ├── 1556973844545-CreateScheduledPostsTable.ts │ │ │ ├── 1558804433320-CreateDashboardLoginsTable.ts │ │ │ ├── 1558804449510-CreateDashboardUsersTable.ts │ │ │ ├── 1561111990357-CreateConfigsTable.ts │ │ │ ├── 1561117545258-CreateAllowedGuildsTable.ts │ │ │ ├── 1561282151982-RenameBackendDashboardStuffToAPI.ts │ │ │ ├── 1561282552734-RenameAllowedGuildGuildIdToId.ts │ │ │ ├── 1561282950483-CreateApiUserInfoTable.ts │ │ │ ├── 1561283165823-RenameApiUsersToApiPermissions.ts │ │ │ ├── 1561283405201-DropUserDataFromLoginsAndPermissions.ts │ │ │ ├── 1561391921385-AddVCAlertTable.ts │ │ │ ├── 1562838838927-AddMoreIndicesToVCAlerts.ts │ │ │ ├── 1573158035867-AddTypeAndPermissionsToApiPermissions.ts │ │ │ ├── 1573248462469-MoveStarboardsToConfig.ts │ │ │ ├── 1573248794313-CreateStarboardReactionsTable.ts │ │ │ ├── 1575145703039-AddIsExclusiveToReactionRoles.ts │ │ │ ├── 1575199835233-CreateStatsTable.ts │ │ │ ├── 1575230079526-AddRepeatColumnsToScheduledPosts.ts │ │ │ ├── 1578445483917-CreateReminderCreatedAtField.ts │ │ │ ├── 1580038836906-CreateAntiraidLevelsTable.ts │ │ │ ├── 1580654617890-AddActiveFollowsToLocateUser.ts │ │ │ ├── 1590616691907-CreateSupportersTable.ts │ │ │ ├── 1591036185142-OptimizeMessageIndices.ts │ │ │ ├── 1591038041635-OptimizeMessageTimestamps.ts │ │ │ ├── 1596994103885-AddCaseNotesForeignKey.ts │ │ │ ├── 1597015567215-AddLogMessageIdToCases.ts │ │ │ ├── 1597109357201-CreateMemberTimezonesTable.ts │ │ │ ├── 1600283341726-EncryptExistingMessages.ts │ │ │ ├── 1600285077890-EncryptArchives.ts │ │ │ ├── 1608608903570-CreateRestoredRolesColumn.ts │ │ │ ├── 1608692857722-FixStarboardReactionsIndices.ts │ │ │ ├── 1608753440716-CreateTempBansTable.ts │ │ │ ├── 1612010765767-CreateCounterTables.ts │ │ │ ├── 1617363975046-UpdateCounterTriggers.ts │ │ │ ├── 1622939525343-OrderReactionRoles.ts │ │ │ ├── 1623018101018-CreateButtonRolesTable.ts │ │ │ ├── 1628809879962-CreateContextMenuTable.ts │ │ │ ├── 1630837386329-AddExpiresAtToApiPermissions.ts │ │ │ ├── 1630837718830-CreateApiAuditLogTable.ts │ │ │ ├── 1630840428694-AddTimestampsToAllowedGuilds.ts │ │ │ ├── 1631474131804-AddIndexToIsBot.ts │ │ │ ├── 1632582078622-SplitScheduledPostsPostAtIndex.ts │ │ │ ├── 1632582299400-AddIndexToRemindersRemindAt.ts │ │ │ ├── 1634459708599-RemoveTagResponsesForeignKeys.ts │ │ │ ├── 1634563901575-CreatePhishermanCacheTable.ts │ │ │ ├── 1635596150234-CreatePhishermanKeyCacheTable.ts │ │ │ ├── 1635779678653-CreateWebhooksTable.ts │ │ │ ├── 1650709103864-CreateRoleQueueTable.ts │ │ │ ├── 1650712828384-CreateRoleButtonsTable.ts │ │ │ ├── 1650721020704-RemoveButtonRolesTable.ts │ │ │ ├── 1680354053183-AddTimeoutColumnsToMutes.ts │ │ │ └── 1682788165866-CreateMemberCacheTable.ts │ │ ├── paths.ts │ │ ├── pluginUtils.ts │ │ ├── plugins/ │ │ │ ├── AutoDelete/ │ │ │ │ ├── AutoDeletePlugin.ts │ │ │ │ ├── docs.ts │ │ │ │ ├── types.ts │ │ │ │ └── util/ │ │ │ │ ├── addMessageToDeletionQueue.ts │ │ │ │ ├── deleteNextItem.ts │ │ │ │ ├── onMessageCreate.ts │ │ │ │ ├── onMessageDelete.ts │ │ │ │ ├── onMessageDeleteBulk.ts │ │ │ │ └── scheduleNextDeletion.ts │ │ │ ├── AutoReactions/ │ │ │ │ ├── AutoReactionsPlugin.ts │ │ │ │ ├── commands/ │ │ │ │ │ ├── DisableAutoReactionsCmd.ts │ │ │ │ │ └── NewAutoReactionsCmd.ts │ │ │ │ ├── docs.ts │ │ │ │ ├── events/ │ │ │ │ │ └── AddReactionsEvt.ts │ │ │ │ └── types.ts │ │ │ ├── Automod/ │ │ │ │ ├── AutomodPlugin.ts │ │ │ │ ├── actions/ │ │ │ │ │ ├── addRoles.ts │ │ │ │ │ ├── addToCounter.ts │ │ │ │ │ ├── alert.ts │ │ │ │ │ ├── archiveThread.ts │ │ │ │ │ ├── availableActions.ts │ │ │ │ │ ├── ban.ts │ │ │ │ │ ├── changeNickname.ts │ │ │ │ │ ├── changePerms.ts │ │ │ │ │ ├── clean.ts │ │ │ │ │ ├── exampleAction.ts │ │ │ │ │ ├── kick.ts │ │ │ │ │ ├── log.ts │ │ │ │ │ ├── mute.ts │ │ │ │ │ ├── pauseInvites.ts │ │ │ │ │ ├── removeRoles.ts │ │ │ │ │ ├── reply.ts │ │ │ │ │ ├── setAntiraidLevel.ts │ │ │ │ │ ├── setCounter.ts │ │ │ │ │ ├── setSlowmode.ts │ │ │ │ │ ├── startThread.ts │ │ │ │ │ └── warn.ts │ │ │ │ ├── commands/ │ │ │ │ │ ├── AntiraidClearCmd.ts │ │ │ │ │ ├── DebugAutomodCmd.ts │ │ │ │ │ ├── SetAntiraidCmd.ts │ │ │ │ │ └── ViewAntiraidCmd.ts │ │ │ │ ├── constants.ts │ │ │ │ ├── docs.ts │ │ │ │ ├── events/ │ │ │ │ │ ├── RunAutomodOnJoinLeaveEvt.ts │ │ │ │ │ ├── RunAutomodOnMemberUpdate.ts │ │ │ │ │ ├── runAutomodOnAntiraidLevel.ts │ │ │ │ │ ├── runAutomodOnCounterTrigger.ts │ │ │ │ │ ├── runAutomodOnMessage.ts │ │ │ │ │ ├── runAutomodOnModAction.ts │ │ │ │ │ └── runAutomodOnThreadEvents.ts │ │ │ │ ├── functions/ │ │ │ │ │ ├── addRecentActionsFromMessage.ts │ │ │ │ │ ├── applyCooldown.ts │ │ │ │ │ ├── checkCooldown.ts │ │ │ │ │ ├── clearOldNicknameChanges.ts │ │ │ │ │ ├── clearOldRecentActions.ts │ │ │ │ │ ├── clearOldRecentSpam.ts │ │ │ │ │ ├── clearRecentActionsForMessage.ts │ │ │ │ │ ├── createMessageSpamTrigger.ts │ │ │ │ │ ├── findRecentSpam.ts │ │ │ │ │ ├── getMatchingMessageRecentActions.ts │ │ │ │ │ ├── getMatchingRecentActions.ts │ │ │ │ │ ├── getSpamIdentifier.ts │ │ │ │ │ ├── getTextMatchPartialSummary.ts │ │ │ │ │ ├── ignoredRoleChanges.ts │ │ │ │ │ ├── matchMultipleTextTypesOnMessage.ts │ │ │ │ │ ├── resolveActionContactMethods.ts │ │ │ │ │ ├── runAutomod.ts │ │ │ │ │ ├── setAntiraidLevel.ts │ │ │ │ │ └── sumRecentActionCounts.ts │ │ │ │ ├── helpers.ts │ │ │ │ ├── triggers/ │ │ │ │ │ ├── antiraidLevel.ts │ │ │ │ │ ├── anyMessage.ts │ │ │ │ │ ├── attachmentSpam.ts │ │ │ │ │ ├── availableTriggers.ts │ │ │ │ │ ├── ban.ts │ │ │ │ │ ├── characterSpam.ts │ │ │ │ │ ├── counterTrigger.ts │ │ │ │ │ ├── emojiSpam.ts │ │ │ │ │ ├── exampleTrigger.ts │ │ │ │ │ ├── hasAttachments.ts │ │ │ │ │ ├── kick.ts │ │ │ │ │ ├── lineSpam.ts │ │ │ │ │ ├── linkSpam.ts │ │ │ │ │ ├── matchAttachmentType.ts │ │ │ │ │ ├── matchInvites.ts │ │ │ │ │ ├── matchLinks.ts │ │ │ │ │ ├── matchMimeType.ts │ │ │ │ │ ├── matchRegex.ts │ │ │ │ │ ├── matchWords.ts │ │ │ │ │ ├── memberJoin.ts │ │ │ │ │ ├── memberJoinSpam.ts │ │ │ │ │ ├── memberLeave.ts │ │ │ │ │ ├── mentionSpam.ts │ │ │ │ │ ├── messageSpam.ts │ │ │ │ │ ├── mute.ts │ │ │ │ │ ├── note.ts │ │ │ │ │ ├── roleAdded.ts │ │ │ │ │ ├── roleRemoved.ts │ │ │ │ │ ├── stickerSpam.ts │ │ │ │ │ ├── threadArchive.ts │ │ │ │ │ ├── threadCreate.ts │ │ │ │ │ ├── threadCreateSpam.ts │ │ │ │ │ ├── threadDelete.ts │ │ │ │ │ ├── threadUnarchive.ts │ │ │ │ │ ├── unban.ts │ │ │ │ │ ├── unmute.ts │ │ │ │ │ └── warn.ts │ │ │ │ └── types.ts │ │ │ ├── BotControl/ │ │ │ │ ├── BotControlPlugin.ts │ │ │ │ ├── activeReload.ts │ │ │ │ ├── commands/ │ │ │ │ │ ├── AddDashboardUserCmd.ts │ │ │ │ │ ├── AddServerFromInviteCmd.ts │ │ │ │ │ ├── AllowServerCmd.ts │ │ │ │ │ ├── ChannelToServerCmd.ts │ │ │ │ │ ├── DebugCountersCmd.ts │ │ │ │ │ ├── DisallowServerCmd.ts │ │ │ │ │ ├── EligibleCmd.ts │ │ │ │ │ ├── LeaveServerCmd.ts │ │ │ │ │ ├── ListDashboardPermsCmd.ts │ │ │ │ │ ├── ListDashboardUsersCmd.ts │ │ │ │ │ ├── ProfilerDataCmd.ts │ │ │ │ │ ├── RateLimitPerformanceCmd.ts │ │ │ │ │ ├── ReloadGlobalPluginsCmd.ts │ │ │ │ │ ├── ReloadServerCmd.ts │ │ │ │ │ ├── RemoveDashboardUserCmd.ts │ │ │ │ │ ├── RestPerformanceCmd.ts │ │ │ │ │ └── ServersCmd.ts │ │ │ │ ├── docs.ts │ │ │ │ ├── functions/ │ │ │ │ │ └── isEligible.ts │ │ │ │ └── types.ts │ │ │ ├── Cases/ │ │ │ │ ├── CasesPlugin.ts │ │ │ │ ├── caseAbbreviations.ts │ │ │ │ ├── caseColors.ts │ │ │ │ ├── caseIcons.ts │ │ │ │ ├── docs.ts │ │ │ │ ├── functions/ │ │ │ │ │ ├── createCase.ts │ │ │ │ │ ├── createCaseNote.ts │ │ │ │ │ ├── getCaseColor.ts │ │ │ │ │ ├── getCaseEmbed.ts │ │ │ │ │ ├── getCaseIcon.ts │ │ │ │ │ ├── getCaseSummary.ts │ │ │ │ │ ├── getCaseTypeAmountForUserId.ts │ │ │ │ │ ├── getRecentCasesByMod.ts │ │ │ │ │ ├── getTotalCasesByMod.ts │ │ │ │ │ ├── postToCaseLogChannel.ts │ │ │ │ │ └── resolveCaseId.ts │ │ │ │ └── types.ts │ │ │ ├── Censor/ │ │ │ │ ├── CensorPlugin.ts │ │ │ │ ├── docs.ts │ │ │ │ ├── types.ts │ │ │ │ └── util/ │ │ │ │ ├── applyFiltersToMsg.ts │ │ │ │ ├── censorMessage.ts │ │ │ │ ├── onMessageCreate.ts │ │ │ │ └── onMessageUpdate.ts │ │ │ ├── ChannelArchiver/ │ │ │ │ ├── ChannelArchiverPlugin.ts │ │ │ │ ├── commands/ │ │ │ │ │ └── ArchiveChannelCmd.ts │ │ │ │ ├── rehostAttachment.ts │ │ │ │ └── types.ts │ │ │ ├── CommandAliases/ │ │ │ │ ├── CommandAliasesPlugin.ts │ │ │ │ ├── docs.ts │ │ │ │ ├── events/ │ │ │ │ │ └── DispatchAliasEvt.ts │ │ │ │ ├── functions/ │ │ │ │ │ ├── buildAliasMatchers.ts │ │ │ │ │ └── normalizeAliases.ts │ │ │ │ └── types.ts │ │ │ ├── Common/ │ │ │ │ ├── CommonPlugin.ts │ │ │ │ ├── docs.ts │ │ │ │ ├── functions/ │ │ │ │ │ └── getEmoji.ts │ │ │ │ └── types.ts │ │ │ ├── CompanionChannels/ │ │ │ │ ├── CompanionChannelsPlugin.ts │ │ │ │ ├── docs.ts │ │ │ │ ├── events/ │ │ │ │ │ └── VoiceStateUpdateEvt.ts │ │ │ │ ├── functions/ │ │ │ │ │ ├── getCompanionChannelOptsForVoiceChannelId.ts │ │ │ │ │ └── handleCompanionPermissions.ts │ │ │ │ └── types.ts │ │ │ ├── ContextMenus/ │ │ │ │ ├── ContextMenuPlugin.ts │ │ │ │ ├── actions/ │ │ │ │ │ ├── ban.ts │ │ │ │ │ ├── clean.ts │ │ │ │ │ ├── mute.ts │ │ │ │ │ ├── note.ts │ │ │ │ │ ├── update.ts │ │ │ │ │ └── warn.ts │ │ │ │ ├── commands/ │ │ │ │ │ ├── BanUserCtxCmd.ts │ │ │ │ │ ├── CleanMessageCtxCmd.ts │ │ │ │ │ ├── ModMenuUserCtxCmd.ts │ │ │ │ │ ├── MuteUserCtxCmd.ts │ │ │ │ │ ├── NoteUserCtxCmd.ts │ │ │ │ │ └── WarnUserCtxCmd.ts │ │ │ │ ├── docs.ts │ │ │ │ └── types.ts │ │ │ ├── Counters/ │ │ │ │ ├── CountersPlugin.ts │ │ │ │ ├── commands/ │ │ │ │ │ ├── AddCounterCmd.ts │ │ │ │ │ ├── CountersListCmd.ts │ │ │ │ │ ├── ResetAllCounterValuesCmd.ts │ │ │ │ │ ├── ResetCounterCmd.ts │ │ │ │ │ ├── SetCounterCmd.ts │ │ │ │ │ └── ViewCounterCmd.ts │ │ │ │ ├── docs.ts │ │ │ │ ├── functions/ │ │ │ │ │ ├── changeCounterValue.ts │ │ │ │ │ ├── checkAllValuesForReverseTrigger.ts │ │ │ │ │ ├── checkAllValuesForTrigger.ts │ │ │ │ │ ├── checkCounterTrigger.ts │ │ │ │ │ ├── checkReverseCounterTrigger.ts │ │ │ │ │ ├── counterExists.ts │ │ │ │ │ ├── decayCounter.ts │ │ │ │ │ ├── emitCounterEvent.ts │ │ │ │ │ ├── getPrettyNameForCounter.ts │ │ │ │ │ ├── getPrettyNameForCounterTrigger.ts │ │ │ │ │ ├── offCounterEvent.ts │ │ │ │ │ ├── onCounterEvent.ts │ │ │ │ │ ├── resetAllCounterValues.ts │ │ │ │ │ └── setCounterValue.ts │ │ │ │ └── types.ts │ │ │ ├── CustomEvents/ │ │ │ │ ├── ActionError.ts │ │ │ │ ├── CustomEventsPlugin.ts │ │ │ │ ├── actions/ │ │ │ │ │ ├── addRoleAction.ts │ │ │ │ │ ├── createCaseAction.ts │ │ │ │ │ ├── makeRoleMentionableAction.ts │ │ │ │ │ ├── makeRoleUnmentionableAction.ts │ │ │ │ │ ├── messageAction.ts │ │ │ │ │ ├── moveToVoiceChannelAction.ts │ │ │ │ │ └── setChannelPermissionOverrides.ts │ │ │ │ ├── catchTemplateError.ts │ │ │ │ ├── docs.ts │ │ │ │ ├── functions/ │ │ │ │ │ └── runEvent.ts │ │ │ │ └── types.ts │ │ │ ├── GuildAccessMonitor/ │ │ │ │ ├── GuildAccessMonitorPlugin.ts │ │ │ │ ├── docs.ts │ │ │ │ └── types.ts │ │ │ ├── GuildConfigReloader/ │ │ │ │ ├── GuildConfigReloaderPlugin.ts │ │ │ │ ├── docs.ts │ │ │ │ ├── functions/ │ │ │ │ │ └── reloadChangedGuilds.ts │ │ │ │ └── types.ts │ │ │ ├── GuildInfoSaver/ │ │ │ │ ├── GuildInfoSaverPlugin.ts │ │ │ │ ├── docs.ts │ │ │ │ └── types.ts │ │ │ ├── GuildMemberCache/ │ │ │ │ ├── GuildMemberCachePlugin.ts │ │ │ │ ├── docs.ts │ │ │ │ ├── events/ │ │ │ │ │ ├── cancelDeletionOnMemberJoin.ts │ │ │ │ │ ├── removeMemberCacheOnMemberLeave.ts │ │ │ │ │ ├── updateMemberCacheOnMemberUpdate.ts │ │ │ │ │ ├── updateMemberCacheOnMessage.ts │ │ │ │ │ ├── updateMemberCacheOnRoleChange.ts │ │ │ │ │ └── updateMemberCacheOnVoiceStateUpdate.ts │ │ │ │ ├── functions/ │ │ │ │ │ ├── getCachedMemberData.ts │ │ │ │ │ └── updateMemberCacheForMember.ts │ │ │ │ └── types.ts │ │ │ ├── InternalPoster/ │ │ │ │ ├── InternalPosterPlugin.ts │ │ │ │ ├── docs.ts │ │ │ │ ├── functions/ │ │ │ │ │ ├── editMessage.ts │ │ │ │ │ ├── getOrCreateWebhookClientForChannel.ts │ │ │ │ │ ├── getOrCreateWebhookForChannel.ts │ │ │ │ │ └── sendMessage.ts │ │ │ │ └── types.ts │ │ │ ├── LocateUser/ │ │ │ │ ├── LocateUserPlugin.ts │ │ │ │ ├── commands/ │ │ │ │ │ ├── FollowCmd.ts │ │ │ │ │ ├── ListFollowCmd.ts │ │ │ │ │ └── WhereCmd.ts │ │ │ │ ├── docs.ts │ │ │ │ ├── events/ │ │ │ │ │ ├── BanRemoveAlertsEvt.ts │ │ │ │ │ └── SendAlertsEvts.ts │ │ │ │ ├── types.ts │ │ │ │ └── utils/ │ │ │ │ ├── clearExpiredAlert.ts │ │ │ │ ├── createOrReuseInvite.ts │ │ │ │ ├── fillAlertsList.ts │ │ │ │ ├── moveMember.ts │ │ │ │ ├── removeUserIdFromActiveAlerts.ts │ │ │ │ ├── sendAlerts.ts │ │ │ │ └── sendWhere.ts │ │ │ ├── Logs/ │ │ │ │ ├── LogsPlugin.ts │ │ │ │ ├── docs.ts │ │ │ │ ├── events/ │ │ │ │ │ ├── LogsChannelModifyEvts.ts │ │ │ │ │ ├── LogsEmojiAndStickerModifyEvts.ts │ │ │ │ │ ├── LogsGuildBanEvts.ts │ │ │ │ │ ├── LogsGuildMemberAddEvt.ts │ │ │ │ │ ├── LogsGuildMemberRemoveEvt.ts │ │ │ │ │ ├── LogsGuildMemberRoleChangeEvt.ts │ │ │ │ │ ├── LogsRoleModifyEvts.ts │ │ │ │ │ ├── LogsStageInstanceModifyEvts.ts │ │ │ │ │ ├── LogsThreadModifyEvts.ts │ │ │ │ │ ├── LogsUserUpdateEvts.ts │ │ │ │ │ └── LogsVoiceChannelEvts.ts │ │ │ │ ├── logFunctions/ │ │ │ │ │ ├── logAutomodAction.ts │ │ │ │ │ ├── logBotAlert.ts │ │ │ │ │ ├── logCaseCreate.ts │ │ │ │ │ ├── logCaseDelete.ts │ │ │ │ │ ├── logCaseUpdate.ts │ │ │ │ │ ├── logCensor.ts │ │ │ │ │ ├── logChannelCreate.ts │ │ │ │ │ ├── logChannelDelete.ts │ │ │ │ │ ├── logChannelUpdate.ts │ │ │ │ │ ├── logClean.ts │ │ │ │ │ ├── logDmFailed.ts │ │ │ │ │ ├── logEmojiCreate.ts │ │ │ │ │ ├── logEmojiDelete.ts │ │ │ │ │ ├── logEmojiUpdate.ts │ │ │ │ │ ├── logMassBan.ts │ │ │ │ │ ├── logMassMute.ts │ │ │ │ │ ├── logMassUnban.ts │ │ │ │ │ ├── logMemberBan.ts │ │ │ │ │ ├── logMemberForceban.ts │ │ │ │ │ ├── logMemberJoin.ts │ │ │ │ │ ├── logMemberJoinWithPriorRecords.ts │ │ │ │ │ ├── logMemberKick.ts │ │ │ │ │ ├── logMemberLeave.ts │ │ │ │ │ ├── logMemberMute.ts │ │ │ │ │ ├── logMemberMuteExpired.ts │ │ │ │ │ ├── logMemberMuteRejoin.ts │ │ │ │ │ ├── logMemberNickChange.ts │ │ │ │ │ ├── logMemberNote.ts │ │ │ │ │ ├── logMemberRestore.ts │ │ │ │ │ ├── logMemberRoleAdd.ts │ │ │ │ │ ├── logMemberRoleChanges.ts │ │ │ │ │ ├── logMemberRoleRemove.ts │ │ │ │ │ ├── logMemberTimedBan.ts │ │ │ │ │ ├── logMemberTimedMute.ts │ │ │ │ │ ├── logMemberTimedUnban.ts │ │ │ │ │ ├── logMemberTimedUnmute.ts │ │ │ │ │ ├── logMemberUnban.ts │ │ │ │ │ ├── logMemberUnmute.ts │ │ │ │ │ ├── logMemberWarn.ts │ │ │ │ │ ├── logMessageDelete.ts │ │ │ │ │ ├── logMessageDeleteAuto.ts │ │ │ │ │ ├── logMessageDeleteBare.ts │ │ │ │ │ ├── logMessageDeleteBulk.ts │ │ │ │ │ ├── logMessageEdit.ts │ │ │ │ │ ├── logMessageSpamDetected.ts │ │ │ │ │ ├── logOtherSpamDetected.ts │ │ │ │ │ ├── logPostedScheduledMessage.ts │ │ │ │ │ ├── logRepeatedMessage.ts │ │ │ │ │ ├── logRoleCreate.ts │ │ │ │ │ ├── logRoleDelete.ts │ │ │ │ │ ├── logRoleUpdate.ts │ │ │ │ │ ├── logScheduledMessage.ts │ │ │ │ │ ├── logScheduledRepeatedMessage.ts │ │ │ │ │ ├── logSetAntiraidAuto.ts │ │ │ │ │ ├── logSetAntiraidUser.ts │ │ │ │ │ ├── logStageInstanceCreate.ts │ │ │ │ │ ├── logStageInstanceDelete.ts │ │ │ │ │ ├── logStageInstanceUpdate.ts │ │ │ │ │ ├── logStickerCreate.ts │ │ │ │ │ ├── logStickerDelete.ts │ │ │ │ │ ├── logStickerUpdate.ts │ │ │ │ │ ├── logThreadCreate.ts │ │ │ │ │ ├── logThreadDelete.ts │ │ │ │ │ ├── logThreadUpdate.ts │ │ │ │ │ ├── logVoiceChannelForceDisconnect.ts │ │ │ │ │ ├── logVoiceChannelForceMove.ts │ │ │ │ │ ├── logVoiceChannelJoin.ts │ │ │ │ │ ├── logVoiceChannelLeave.ts │ │ │ │ │ └── logVoiceChannelMove.ts │ │ │ │ ├── types.ts │ │ │ │ └── util/ │ │ │ │ ├── getLogMessage.ts │ │ │ │ ├── getMessageReplyLogInfo.ts │ │ │ │ ├── isLogIgnored.ts │ │ │ │ ├── log.ts │ │ │ │ ├── onMessageDelete.ts │ │ │ │ ├── onMessageDeleteBulk.ts │ │ │ │ └── onMessageUpdate.ts │ │ │ ├── MessageSaver/ │ │ │ │ ├── MessageSaverPlugin.ts │ │ │ │ ├── commands/ │ │ │ │ │ ├── SaveMessagesToDB.ts │ │ │ │ │ └── SavePinsToDB.ts │ │ │ │ ├── docs.ts │ │ │ │ ├── events/ │ │ │ │ │ └── SaveMessagesEvts.ts │ │ │ │ ├── saveMessagesToDB.ts │ │ │ │ └── types.ts │ │ │ ├── ModActions/ │ │ │ │ ├── ModActionsPlugin.ts │ │ │ │ ├── commands/ │ │ │ │ │ ├── addcase/ │ │ │ │ │ │ ├── AddCaseMsgCmd.ts │ │ │ │ │ │ ├── AddCaseSlashCmd.ts │ │ │ │ │ │ └── actualAddCaseCmd.ts │ │ │ │ │ ├── ban/ │ │ │ │ │ │ ├── BanMsgCmd.ts │ │ │ │ │ │ ├── BanSlashCmd.ts │ │ │ │ │ │ └── actualBanCmd.ts │ │ │ │ │ ├── case/ │ │ │ │ │ │ ├── CaseMsgCmd.ts │ │ │ │ │ │ ├── CaseSlashCmd.ts │ │ │ │ │ │ └── actualCaseCmd.ts │ │ │ │ │ ├── cases/ │ │ │ │ │ │ ├── CasesModMsgCmd.ts │ │ │ │ │ │ ├── CasesSlashCmd.ts │ │ │ │ │ │ ├── CasesUserMsgCmd.ts │ │ │ │ │ │ └── actualCasesCmd.ts │ │ │ │ │ ├── constants.ts │ │ │ │ │ ├── deletecase/ │ │ │ │ │ │ ├── DeleteCaseMsgCmd.ts │ │ │ │ │ │ ├── DeleteCaseSlashCmd.ts │ │ │ │ │ │ └── actualDeleteCaseCmd.ts │ │ │ │ │ ├── forceban/ │ │ │ │ │ │ ├── ForceBanMsgCmd.ts │ │ │ │ │ │ ├── ForceBanSlashCmd.ts │ │ │ │ │ │ └── actualForceBanCmd.ts │ │ │ │ │ ├── forcemute/ │ │ │ │ │ │ ├── ForceMuteMsgCmd.ts │ │ │ │ │ │ └── ForceMuteSlashCmd.ts │ │ │ │ │ ├── forceunmute/ │ │ │ │ │ │ ├── ForceUnmuteMsgCmd.ts │ │ │ │ │ │ └── ForceUnmuteSlashCmd.ts │ │ │ │ │ ├── hidecase/ │ │ │ │ │ │ ├── HideCaseMsgCmd.ts │ │ │ │ │ │ ├── HideCaseSlashCmd.ts │ │ │ │ │ │ └── actualHideCaseCmd.ts │ │ │ │ │ ├── kick/ │ │ │ │ │ │ ├── KickMsgCmd.ts │ │ │ │ │ │ ├── KickSlashCmd.ts │ │ │ │ │ │ └── actualKickCmd.ts │ │ │ │ │ ├── massban/ │ │ │ │ │ │ ├── MassBanMsgCmd.ts │ │ │ │ │ │ ├── MassBanSlashCmd.ts │ │ │ │ │ │ └── actualMassBanCmd.ts │ │ │ │ │ ├── massmute/ │ │ │ │ │ │ ├── MassMuteMsgCmd.ts │ │ │ │ │ │ ├── MassMuteSlashCmd.ts │ │ │ │ │ │ └── actualMassMuteCmd.ts │ │ │ │ │ ├── massunban/ │ │ │ │ │ │ ├── MassUnbanMsgCmd.ts │ │ │ │ │ │ ├── MassUnbanSlashCmd.ts │ │ │ │ │ │ └── actualMassUnbanCmd.ts │ │ │ │ │ ├── mute/ │ │ │ │ │ │ ├── MuteMsgCmd.ts │ │ │ │ │ │ ├── MuteSlashCmd.ts │ │ │ │ │ │ └── actualMuteCmd.ts │ │ │ │ │ ├── note/ │ │ │ │ │ │ ├── NoteMsgCmd.ts │ │ │ │ │ │ ├── NoteSlashCmd.ts │ │ │ │ │ │ └── actualNoteCmd.ts │ │ │ │ │ ├── unban/ │ │ │ │ │ │ ├── UnbanMsgCmd.ts │ │ │ │ │ │ ├── UnbanSlashCmd.ts │ │ │ │ │ │ └── actualUnbanCmd.ts │ │ │ │ │ ├── unhidecase/ │ │ │ │ │ │ ├── UnhideCaseMsgCmd.ts │ │ │ │ │ │ ├── UnhideCaseSlashCmd.ts │ │ │ │ │ │ └── actualUnhideCaseCmd.ts │ │ │ │ │ ├── unmute/ │ │ │ │ │ │ ├── UnmuteMsgCmd.ts │ │ │ │ │ │ ├── UnmuteSlashCmd.ts │ │ │ │ │ │ └── actualUnmuteCmd.ts │ │ │ │ │ ├── update/ │ │ │ │ │ │ ├── UpdateMsgCmd.ts │ │ │ │ │ │ └── UpdateSlashCmd.ts │ │ │ │ │ └── warn/ │ │ │ │ │ ├── WarnMsgCmd.ts │ │ │ │ │ ├── WarnSlashCmd.ts │ │ │ │ │ └── actualWarnCmd.ts │ │ │ │ ├── docs.ts │ │ │ │ ├── events/ │ │ │ │ │ ├── AuditLogEvents.ts │ │ │ │ │ ├── CreateBanCaseOnManualBanEvt.ts │ │ │ │ │ ├── CreateKickCaseOnManualKickEvt.ts │ │ │ │ │ ├── CreateUnbanCaseOnManualUnbanEvt.ts │ │ │ │ │ └── PostAlertOnMemberJoinEvt.ts │ │ │ │ ├── functions/ │ │ │ │ │ ├── attachmentLinkReaction.ts │ │ │ │ │ ├── banUserId.ts │ │ │ │ │ ├── clearIgnoredEvents.ts │ │ │ │ │ ├── clearTempban.ts │ │ │ │ │ ├── formatReasonForAttachments.ts │ │ │ │ │ ├── getDefaultContactMethods.ts │ │ │ │ │ ├── hasModActionPerm.ts │ │ │ │ │ ├── ignoreEvent.ts │ │ │ │ │ ├── isBanned.ts │ │ │ │ │ ├── isEventIgnored.ts │ │ │ │ │ ├── kickMember.ts │ │ │ │ │ ├── offModActionsEvent.ts │ │ │ │ │ ├── onModActionsEvent.ts │ │ │ │ │ ├── readContactMethodsFromArgs.ts │ │ │ │ │ ├── updateCase.ts │ │ │ │ │ └── warnMember.ts │ │ │ │ └── types.ts │ │ │ ├── Mutes/ │ │ │ │ ├── MutesPlugin.ts │ │ │ │ ├── commands/ │ │ │ │ │ ├── ClearBannedMutesCmd.ts │ │ │ │ │ ├── ClearMutesCmd.ts │ │ │ │ │ ├── ClearMutesWithoutRoleCmd.ts │ │ │ │ │ └── MutesCmd.ts │ │ │ │ ├── docs.ts │ │ │ │ ├── events/ │ │ │ │ │ ├── ClearActiveMuteOnMemberBanEvt.ts │ │ │ │ │ ├── ClearActiveMuteOnRoleRemovalEvt.ts │ │ │ │ │ ├── ReapplyActiveMuteOnJoinEvt.ts │ │ │ │ │ └── RegisterManualTimeoutsEvt.ts │ │ │ │ ├── functions/ │ │ │ │ │ ├── clearMute.ts │ │ │ │ │ ├── getDefaultMuteType.ts │ │ │ │ │ ├── getTimeoutExpiryTime.ts │ │ │ │ │ ├── memberHasMutedRole.ts │ │ │ │ │ ├── muteUser.ts │ │ │ │ │ ├── offMutesEvent.ts │ │ │ │ │ ├── onMutesEvent.ts │ │ │ │ │ ├── renewTimeoutMute.ts │ │ │ │ │ └── unmuteUser.ts │ │ │ │ └── types.ts │ │ │ ├── NameHistory/ │ │ │ │ ├── NameHistoryPlugin.ts │ │ │ │ ├── commands/ │ │ │ │ │ └── NamesCmd.ts │ │ │ │ ├── docs.ts │ │ │ │ ├── events/ │ │ │ │ │ └── UpdateNameEvts.ts │ │ │ │ ├── types.ts │ │ │ │ └── updateNickname.ts │ │ │ ├── Persist/ │ │ │ │ ├── PersistPlugin.ts │ │ │ │ ├── docs.ts │ │ │ │ ├── events/ │ │ │ │ │ ├── LoadDataEvt.ts │ │ │ │ │ └── StoreDataEvt.ts │ │ │ │ └── types.ts │ │ │ ├── Phisherman/ │ │ │ │ ├── PhishermanPlugin.ts │ │ │ │ ├── docs.ts │ │ │ │ └── types.ts │ │ │ ├── PingableRoles/ │ │ │ │ ├── PingableRolesPlugin.ts │ │ │ │ ├── commands/ │ │ │ │ │ ├── PingableRoleDisableCmd.ts │ │ │ │ │ └── PingableRoleEnableCmd.ts │ │ │ │ ├── docs.ts │ │ │ │ ├── events/ │ │ │ │ │ └── ChangePingableEvts.ts │ │ │ │ ├── types.ts │ │ │ │ └── utils/ │ │ │ │ ├── disablePingableRoles.ts │ │ │ │ ├── enablePingableRoles.ts │ │ │ │ └── getPingableRolesForChannel.ts │ │ │ ├── Post/ │ │ │ │ ├── PostPlugin.ts │ │ │ │ ├── commands/ │ │ │ │ │ ├── EditCmd.ts │ │ │ │ │ ├── EditEmbedCmd.ts │ │ │ │ │ ├── PostCmd.ts │ │ │ │ │ ├── PostEmbedCmd.ts │ │ │ │ │ ├── ScheduledPostsDeleteCmd.ts │ │ │ │ │ ├── ScheduledPostsListCmd.ts │ │ │ │ │ └── ScheduledPostsShowCmd.ts │ │ │ │ ├── docs.ts │ │ │ │ ├── types.ts │ │ │ │ └── util/ │ │ │ │ ├── actualPostCmd.ts │ │ │ │ ├── formatContent.ts │ │ │ │ ├── parseScheduleTime.ts │ │ │ │ ├── postMessage.ts │ │ │ │ └── postScheduledPost.ts │ │ │ ├── ReactionRoles/ │ │ │ │ ├── ReactionRolesPlugin.ts │ │ │ │ ├── commands/ │ │ │ │ │ ├── ClearReactionRolesCmd.ts │ │ │ │ │ ├── InitReactionRolesCmd.ts │ │ │ │ │ └── RefreshReactionRolesCmd.ts │ │ │ │ ├── docs.ts │ │ │ │ ├── events/ │ │ │ │ │ ├── AddReactionRoleEvt.ts │ │ │ │ │ └── MessageDeletedEvt.ts │ │ │ │ ├── types.ts │ │ │ │ └── util/ │ │ │ │ ├── addMemberPendingRoleChange.ts │ │ │ │ ├── applyReactionRoleReactionsToMessage.ts │ │ │ │ ├── autoRefreshLoop.ts │ │ │ │ ├── refreshReactionRoles.ts │ │ │ │ └── runAutoRefresh.ts │ │ │ ├── Reminders/ │ │ │ │ ├── RemindersPlugin.ts │ │ │ │ ├── commands/ │ │ │ │ │ ├── RemindCmd.ts │ │ │ │ │ ├── RemindersCmd.ts │ │ │ │ │ └── RemindersDeleteCmd.ts │ │ │ │ ├── docs.ts │ │ │ │ ├── functions/ │ │ │ │ │ └── postReminder.ts │ │ │ │ └── types.ts │ │ │ ├── RoleButtons/ │ │ │ │ ├── RoleButtonsPlugin.ts │ │ │ │ ├── commands/ │ │ │ │ │ └── resetButtons.ts │ │ │ │ ├── docs.ts │ │ │ │ ├── events/ │ │ │ │ │ └── buttonInteraction.ts │ │ │ │ ├── functions/ │ │ │ │ │ ├── TooManyComponentsError.ts │ │ │ │ │ ├── applyAllRoleButtons.ts │ │ │ │ │ ├── applyRoleButtons.ts │ │ │ │ │ ├── convertButtonStyleStringToEnum.ts │ │ │ │ │ ├── createButtonComponents.ts │ │ │ │ │ └── getAllRolesInButtons.ts │ │ │ │ └── types.ts │ │ │ ├── RoleManager/ │ │ │ │ ├── RoleManagerPlugin.ts │ │ │ │ ├── constants.ts │ │ │ │ ├── docs.ts │ │ │ │ ├── functions/ │ │ │ │ │ ├── addPriorityRole.ts │ │ │ │ │ ├── addRole.ts │ │ │ │ │ ├── removePriorityRole.ts │ │ │ │ │ ├── removeRole.ts │ │ │ │ │ └── runRoleAssignmentLoop.ts │ │ │ │ └── types.ts │ │ │ ├── Roles/ │ │ │ │ ├── RolesPlugin.ts │ │ │ │ ├── commands/ │ │ │ │ │ ├── AddRoleCmd.ts │ │ │ │ │ ├── MassAddRoleCmd.ts │ │ │ │ │ ├── MassRemoveRoleCmd.ts │ │ │ │ │ └── RemoveRoleCmd.ts │ │ │ │ ├── docs.ts │ │ │ │ └── types.ts │ │ │ ├── SelfGrantableRoles/ │ │ │ │ ├── SelfGrantableRolesPlugin.ts │ │ │ │ ├── commands/ │ │ │ │ │ ├── RoleAddCmd.ts │ │ │ │ │ ├── RoleHelpCmd.ts │ │ │ │ │ └── RoleRemoveCmd.ts │ │ │ │ ├── docs.ts │ │ │ │ ├── types.ts │ │ │ │ └── util/ │ │ │ │ ├── findMatchingRoles.ts │ │ │ │ ├── getApplyingEntries.ts │ │ │ │ ├── normalizeRoleNames.ts │ │ │ │ └── splitRoleNames.ts │ │ │ ├── Slowmode/ │ │ │ │ ├── SlowmodePlugin.ts │ │ │ │ ├── commands/ │ │ │ │ │ ├── SlowmodeClearCmd.ts │ │ │ │ │ ├── SlowmodeDisableCmd.ts │ │ │ │ │ ├── SlowmodeGetCmd.ts │ │ │ │ │ ├── SlowmodeListCmd.ts │ │ │ │ │ └── SlowmodeSetCmd.ts │ │ │ │ ├── docs.ts │ │ │ │ ├── requiredPermissions.ts │ │ │ │ ├── types.ts │ │ │ │ └── util/ │ │ │ │ ├── actualDisableSlowmodeCmd.ts │ │ │ │ ├── applyBotSlowmodeToUserId.ts │ │ │ │ ├── clearBotSlowmodeFromUserId.ts │ │ │ │ ├── clearExpiredSlowmodes.ts │ │ │ │ ├── disableBotSlowmodeForChannel.ts │ │ │ │ └── onMessageCreate.ts │ │ │ ├── Spam/ │ │ │ │ ├── SpamPlugin.ts │ │ │ │ ├── docs.ts │ │ │ │ ├── events/ │ │ │ │ │ └── SpamVoiceEvt.ts │ │ │ │ ├── types.ts │ │ │ │ └── util/ │ │ │ │ ├── addRecentAction.ts │ │ │ │ ├── clearOldRecentActions.ts │ │ │ │ ├── clearRecentUserActions.ts │ │ │ │ ├── getRecentActionCount.ts │ │ │ │ ├── getRecentActions.ts │ │ │ │ ├── logAndDetectMessageSpam.ts │ │ │ │ ├── logAndDetectOtherSpam.ts │ │ │ │ ├── logCensor.ts │ │ │ │ ├── onMessageCreate.ts │ │ │ │ └── saveSpamArchives.ts │ │ │ ├── Starboard/ │ │ │ │ ├── StarboardPlugin.ts │ │ │ │ ├── commands/ │ │ │ │ │ └── MigratePinsCmd.ts │ │ │ │ ├── docs.ts │ │ │ │ ├── events/ │ │ │ │ │ ├── StarboardReactionAddEvt.ts │ │ │ │ │ └── StarboardReactionRemoveEvts.ts │ │ │ │ ├── types.ts │ │ │ │ └── util/ │ │ │ │ ├── createStarboardEmbedFromMessage.ts │ │ │ │ ├── createStarboardPseudoFooterForMessage.ts │ │ │ │ ├── onMessageDelete.ts │ │ │ │ ├── removeMessageFromStarboard.ts │ │ │ │ ├── removeMessageFromStarboardMessages.ts │ │ │ │ ├── saveMessageToStarboard.ts │ │ │ │ └── updateStarboardMessageStarCount.ts │ │ │ ├── Tags/ │ │ │ │ ├── TagsPlugin.ts │ │ │ │ ├── commands/ │ │ │ │ │ ├── TagCreateCmd.ts │ │ │ │ │ ├── TagDeleteCmd.ts │ │ │ │ │ ├── TagEvalCmd.ts │ │ │ │ │ ├── TagListCmd.ts │ │ │ │ │ └── TagSourceCmd.ts │ │ │ │ ├── docs.ts │ │ │ │ ├── templateFunctions.ts │ │ │ │ ├── types.ts │ │ │ │ └── util/ │ │ │ │ ├── findTagByName.ts │ │ │ │ ├── matchAndRenderTagFromString.ts │ │ │ │ ├── onMessageCreate.ts │ │ │ │ ├── onMessageDelete.ts │ │ │ │ ├── renderTagBody.ts │ │ │ │ └── renderTagFromString.ts │ │ │ ├── TimeAndDate/ │ │ │ │ ├── TimeAndDatePlugin.ts │ │ │ │ ├── commands/ │ │ │ │ │ ├── ResetTimezoneCmd.ts │ │ │ │ │ ├── SetTimezoneCmd.ts │ │ │ │ │ └── ViewTimezoneCmd.ts │ │ │ │ ├── defaultDateFormats.ts │ │ │ │ ├── docs.ts │ │ │ │ ├── functions/ │ │ │ │ │ ├── getDateFormat.ts │ │ │ │ │ ├── getGuildTz.ts │ │ │ │ │ ├── getMemberTz.ts │ │ │ │ │ ├── inGuildTz.ts │ │ │ │ │ └── inMemberTz.ts │ │ │ │ └── types.ts │ │ │ ├── UsernameSaver/ │ │ │ │ ├── UsernameSaverPlugin.ts │ │ │ │ ├── docs.ts │ │ │ │ ├── events/ │ │ │ │ │ └── UpdateUsernameEvts.ts │ │ │ │ ├── types.ts │ │ │ │ └── updateUsername.ts │ │ │ ├── Utility/ │ │ │ │ ├── UtilityPlugin.ts │ │ │ │ ├── commands/ │ │ │ │ │ ├── AboutCmd.ts │ │ │ │ │ ├── AvatarCmd.ts │ │ │ │ │ ├── BanSearchCmd.ts │ │ │ │ │ ├── ChannelInfoCmd.ts │ │ │ │ │ ├── CleanCmd.ts │ │ │ │ │ ├── ContextCmd.ts │ │ │ │ │ ├── EmojiInfoCmd.ts │ │ │ │ │ ├── HelpCmd.ts │ │ │ │ │ ├── InfoCmd.ts │ │ │ │ │ ├── InviteInfoCmd.ts │ │ │ │ │ ├── JumboCmd.ts │ │ │ │ │ ├── LevelCmd.ts │ │ │ │ │ ├── MessageInfoCmd.ts │ │ │ │ │ ├── NicknameCmd.ts │ │ │ │ │ ├── NicknameResetCmd.ts │ │ │ │ │ ├── PingCmd.ts │ │ │ │ │ ├── ReloadGuildCmd.ts │ │ │ │ │ ├── RoleInfoCmd.ts │ │ │ │ │ ├── RolesCmd.ts │ │ │ │ │ ├── SearchCmd.ts │ │ │ │ │ ├── ServerInfoCmd.ts │ │ │ │ │ ├── SnowflakeInfoCmd.ts │ │ │ │ │ ├── SourceCmd.ts │ │ │ │ │ ├── UserInfoCmd.ts │ │ │ │ │ ├── VcdisconnectCmd.ts │ │ │ │ │ └── VcmoveCmd.ts │ │ │ │ ├── docs.ts │ │ │ │ ├── events/ │ │ │ │ │ └── AutoJoinThreadEvt.ts │ │ │ │ ├── functions/ │ │ │ │ │ ├── cleanMessages.ts │ │ │ │ │ ├── fetchChannelMessagesToClean.ts │ │ │ │ │ ├── getChannelInfoEmbed.ts │ │ │ │ │ ├── getCustomEmojiId.ts │ │ │ │ │ ├── getEmojiInfoEmbed.ts │ │ │ │ │ ├── getGuildPreview.ts │ │ │ │ │ ├── getInviteInfoEmbed.ts │ │ │ │ │ ├── getMessageInfoEmbed.ts │ │ │ │ │ ├── getRoleInfoEmbed.ts │ │ │ │ │ ├── getServerInfoEmbed.ts │ │ │ │ │ ├── getSnowflakeInfoEmbed.ts │ │ │ │ │ ├── getUserInfoEmbed.ts │ │ │ │ │ └── hasPermission.ts │ │ │ │ ├── guildReloads.ts │ │ │ │ ├── refreshMembers.ts │ │ │ │ ├── search.ts │ │ │ │ └── types.ts │ │ │ ├── WelcomeMessage/ │ │ │ │ ├── WelcomeMessagePlugin.ts │ │ │ │ ├── docs.ts │ │ │ │ ├── events/ │ │ │ │ │ └── SendWelcomeMessageEvt.ts │ │ │ │ └── types.ts │ │ │ └── availablePlugins.ts │ │ ├── profiler.ts │ │ ├── rateLimitStats.ts │ │ ├── regExpRunners.ts │ │ ├── restCallStats.ts │ │ ├── staff.ts │ │ ├── templateFormatter.test.ts │ │ ├── templateFormatter.ts │ │ ├── threadsSignalFix.ts │ │ ├── types.ts │ │ ├── uptime.ts │ │ ├── utils/ │ │ │ ├── DecayingCounter.ts │ │ │ ├── MessageBuffer.ts │ │ │ ├── async.ts │ │ │ ├── buildCustomId.ts │ │ │ ├── calculateEmbedSize.ts │ │ │ ├── canAssignRole.ts │ │ │ ├── canReadChannel.ts │ │ │ ├── categorize.ts │ │ │ ├── createPaginatedMessage.ts │ │ │ ├── crypt.test.ts │ │ │ ├── crypt.ts │ │ │ ├── cryptHelpers.ts │ │ │ ├── cryptWorker.ts │ │ │ ├── easyProfiler.ts │ │ │ ├── erisAllowedMentionsToDjsMentionOptions.ts │ │ │ ├── filterObject.ts │ │ │ ├── findMatchingAuditLogEntry.ts │ │ │ ├── formatZodIssue.ts │ │ │ ├── getChunkedEmbedFields.ts │ │ │ ├── getGuildPrefix.ts │ │ │ ├── getMissingChannelPermissions.ts │ │ │ ├── getMissingPermissions.ts │ │ │ ├── getOrFetchGuildMember.ts │ │ │ ├── getOrFetchUser.ts │ │ │ ├── getPermissionNames.ts │ │ │ ├── hasDiscordPermissions.ts │ │ │ ├── idToTimestamp.ts │ │ │ ├── intToRgb.ts │ │ │ ├── isDefaultSticker.ts │ │ │ ├── isDmChannel.ts │ │ │ ├── isGuildChannel.ts │ │ │ ├── isScalar.ts │ │ │ ├── isThreadChannel.ts │ │ │ ├── isValidTimezone.ts │ │ │ ├── loadYamlSafely.ts │ │ │ ├── lockNameHelpers.ts │ │ │ ├── mergeRegexes.ts │ │ │ ├── mergeWordsIntoRegex.ts │ │ │ ├── messageHasContent.ts │ │ │ ├── messageIsEmpty.ts │ │ │ ├── missingPermissionError.ts │ │ │ ├── multipleSlashOptions.ts │ │ │ ├── normalizeText.test.ts │ │ │ ├── normalizeText.ts │ │ │ ├── parseColor.ts │ │ │ ├── parseCustomId.ts │ │ │ ├── parseFuzzyTimezone.ts │ │ │ ├── permissionNames.ts │ │ │ ├── readChannelPermissions.ts │ │ │ ├── registerEventListenersFromMap.ts │ │ │ ├── resolveChannelIds.ts │ │ │ ├── resolveMessageTarget.ts │ │ │ ├── rgbToInt.ts │ │ │ ├── sendDM.ts │ │ │ ├── snowflakeToTimestamp.ts │ │ │ ├── stripMarkdown.ts │ │ │ ├── templateSafeObjects.ts │ │ │ ├── typeUtils.ts │ │ │ ├── unregisterEventListenersFromMap.ts │ │ │ ├── validateNoObjectAliases.test.ts │ │ │ ├── validateNoObjectAliases.ts │ │ │ ├── waitForInteraction.ts │ │ │ ├── zColor.ts │ │ │ ├── zValidTimezone.ts │ │ │ └── zodDeepPartial.ts │ │ ├── utils.test.ts │ │ ├── utils.ts │ │ └── validateActiveConfigs.ts │ ├── start-dev.js │ └── tsconfig.json ├── build-image.sh ├── config-checker/ │ ├── .gitignore │ ├── index.html │ ├── package.json │ ├── public/ │ │ └── config-schema.json │ ├── src/ │ │ ├── main.ts │ │ ├── style.css │ │ ├── vite-env.d.ts │ │ └── yaml.worker.js │ └── tsconfig.json ├── dashboard/ │ ├── .editorconfig │ ├── .eslintrc.json │ ├── .gitignore │ ├── .prettierignore │ ├── index.html │ ├── package.json │ ├── postcss.config.js │ ├── public/ │ │ └── env.js │ ├── serve.js │ ├── src/ │ │ ├── api.ts │ │ ├── auth.ts │ │ ├── components/ │ │ │ ├── App.vue │ │ │ ├── Expandable.vue │ │ │ ├── PrivacyPolicy.vue │ │ │ ├── Splash.vue │ │ │ ├── Tab.vue │ │ │ ├── Tabs.vue │ │ │ ├── Title.vue │ │ │ ├── dashboard/ │ │ │ │ ├── GuildAccess.vue │ │ │ │ ├── GuildConfigEditor.vue │ │ │ │ ├── GuildImportExport.vue │ │ │ │ ├── GuildInfo.vue │ │ │ │ ├── GuildList.vue │ │ │ │ ├── Layout.vue │ │ │ │ ├── PermissionTree.vue │ │ │ │ └── permissionTreeUtils.ts │ │ │ └── docs/ │ │ │ ├── ArgumentTypes.vue │ │ │ ├── CodeBlock.vue │ │ │ ├── ConfigurationFormat.vue │ │ │ ├── Counters.vue │ │ │ ├── DocsLayout.vue │ │ │ ├── Introduction.vue │ │ │ ├── MarkdownBlock.vue │ │ │ ├── Moderation.vue │ │ │ ├── Permissions.vue │ │ │ ├── Plugin.vue │ │ │ ├── PluginConfiguration.vue │ │ │ └── WorkInProgress.vue │ │ ├── directives/ │ │ │ └── trim-indents.ts │ │ ├── index.ts │ │ ├── routes.ts │ │ ├── store/ │ │ │ ├── auth.ts │ │ │ ├── docs.ts │ │ │ ├── guilds.ts │ │ │ ├── index.ts │ │ │ ├── staff.ts │ │ │ └── types.ts │ │ ├── style/ │ │ │ ├── app.css │ │ │ ├── base.css │ │ │ ├── components.css │ │ │ ├── content.css │ │ │ ├── docs.css │ │ │ ├── privacy-policy.css │ │ │ ├── reset.css │ │ │ └── splash.css │ │ └── vite-env.d.ts │ ├── tsconfig.json │ └── vite.config.ts ├── docker/ │ ├── development/ │ │ ├── devenv/ │ │ │ └── Dockerfile │ │ └── nginx/ │ │ ├── Dockerfile │ │ └── default.conf │ └── production/ │ └── nginx/ │ ├── Dockerfile │ └── default.conf ├── docker-compose.development.yml ├── docker-compose.lightweight.yml ├── docker-compose.standalone.yml ├── docs/ │ ├── DEVELOPMENT.md │ ├── MANAGEMENT.md │ ├── MIGRATE_DEV.md │ ├── MIGRATE_PROD.md │ └── PRODUCTION.md ├── package.json ├── pnpm-workspace.yaml ├── presetup-configurator/ │ ├── .gitignore │ ├── .prettierignore │ ├── package.json │ ├── snowpack.config.js │ ├── src/ │ │ ├── App.css │ │ ├── App.tsx │ │ ├── Configurator.css │ │ ├── Configurator.tsx │ │ ├── Levels.tsx │ │ ├── LogChannels.css │ │ ├── LogChannels.tsx │ │ ├── index.css │ │ ├── index.html │ │ └── index.tsx │ └── tsconfig.json ├── shared/ │ ├── .gitignore │ ├── package.json │ ├── src/ │ │ ├── apiPermissions.test.ts │ │ └── apiPermissions.ts │ └── tsconfig.json ├── tsconfig.base.json └── tsconfig.json