From 7909c99a7fe076cea6e86795c97aeff4be929029 Mon Sep 17 00:00:00 2001 From: Dragory <2606411+Dragory@users.noreply.github.com> Date: Thu, 30 Jul 2020 13:08:06 +0300 Subject: [PATCH] Fix up docs --- backend/src/api/docs.ts | 11 +- .../plugins/AutoDelete/AutoDeletePlugin.ts | 7 + .../AutoReactions/AutoReactionsPlugin.ts | 9 ++ backend/src/plugins/Automod/AutomodPlugin.ts | 4 + backend/src/plugins/Automod/info.ts | 102 +++++++++++++ backend/src/plugins/Cases/CasesPlugin.ts | 9 ++ backend/src/plugins/Censor/CensorPlugin.ts | 12 +- .../CompanionChannelsPlugin.ts | 11 ++ .../CustomEvents/CustomEventsPlugin.ts | 2 + .../plugins/LocateUser/LocateUserPlugin.ts | 11 ++ backend/src/plugins/Logs/LogsPlugin.ts | 5 + .../MessageSaver/MessageSaverPlugin.ts | 4 +- .../plugins/ModActions/ModActionsPlugin.ts | 9 ++ backend/src/plugins/Mutes/MutesPlugin.ts | 5 + .../plugins/NameHistory/NameHistoryPlugin.ts | 2 + backend/src/plugins/Persist/PersistPlugin.ts | 10 ++ .../PingableRoles/PingableRolesPlugin.ts | 5 + backend/src/plugins/Post/PostPlugin.ts | 5 + .../ReactionRoles/ReactionRolesPlugin.ts | 5 + .../src/plugins/Reminders/RemindersPlugin.ts | 5 + backend/src/plugins/Roles/RolesPlugin.ts | 9 ++ .../src/plugins/Roles/commands/AddRoleCmd.ts | 1 + .../plugins/Roles/commands/RemoveRoleCmd.ts | 1 + .../SelfGrantableRolesPlugin.ts | 2 + .../src/plugins/Slowmode/SlowmodePlugin.ts | 5 + backend/src/plugins/Spam/SpamPlugin.ts | 10 ++ .../src/plugins/Starboard/StarboardPlugin.ts | 2 + backend/src/plugins/Tags/TagsPlugin.ts | 5 + .../UsernameSaver/UsernameSaverPlugin.ts | 2 + backend/src/plugins/Utility/UtilityPlugin.ts | 5 + .../WelcomeMessage/WelcomeMessagePlugin.ts | 7 +- dashboard/package.json | 3 +- dashboard/src/components/Title.vue | 2 + dashboard/src/components/docs/Plugin.vue | 144 +++++++++++------- dashboard/src/store/docs.ts | 4 +- 35 files changed, 371 insertions(+), 64 deletions(-) create mode 100644 backend/src/plugins/Automod/info.ts diff --git a/backend/src/api/docs.ts b/backend/src/api/docs.ts index 3f85ea37..f8306bd7 100644 --- a/backend/src/api/docs.ts +++ b/backend/src/api/docs.ts @@ -30,14 +30,14 @@ function formatConfigSchema(schema) { } export function initDocs(app: express.Express) { - const docsPlugins = guildPlugins.filter(pluginClass => pluginClass.showInDocs); + const docsPlugins = guildPlugins.filter(plugin => plugin.showInDocs); app.get("/docs/plugins", (req: express.Request, res: express.Response) => { res.json( - docsPlugins.map(pluginClass => { - const thinInfo = pluginClass.info ? { prettyName: pluginClass.info.prettyName } : {}; + docsPlugins.map(plugin => { + const thinInfo = plugin.info ? { prettyName: plugin.info.prettyName } : {}; return { - name: pluginClass.info, + name: plugin.name, info: thinInfo, }; }), @@ -56,7 +56,10 @@ export function initDocs(app: express.Express) { const commands = (plugin.commands || []).map(cmd => ({ trigger: cmd.trigger, + permission: cmd.permission, signature: cmd.signature, + description: cmd.description, + usage: cmd.usage, config: cmd.config, })); diff --git a/backend/src/plugins/AutoDelete/AutoDeletePlugin.ts b/backend/src/plugins/AutoDelete/AutoDeletePlugin.ts index ce55d90f..45374fde 100644 --- a/backend/src/plugins/AutoDelete/AutoDeletePlugin.ts +++ b/backend/src/plugins/AutoDelete/AutoDeletePlugin.ts @@ -15,6 +15,13 @@ const defaultOptions: PluginOptions = { }; export const AutoDeletePlugin = zeppelinPlugin()("auto_delete", { + showInDocs: true, + info: { + prettyName: "Auto-delete", + description: "Allows Zeppelin to auto-delete messages from a channel after a delay", + configurationGuide: "Maximum deletion delay is currently 5 minutes", + }, + configSchema: ConfigSchema, defaultOptions, diff --git a/backend/src/plugins/AutoReactions/AutoReactionsPlugin.ts b/backend/src/plugins/AutoReactions/AutoReactionsPlugin.ts index 44d673ab..3494f4af 100644 --- a/backend/src/plugins/AutoReactions/AutoReactionsPlugin.ts +++ b/backend/src/plugins/AutoReactions/AutoReactionsPlugin.ts @@ -6,6 +6,7 @@ import { DisableAutoReactionsCmd } from "./commands/DisableAutoReactionsCmd"; import { GuildSavedMessages } from "src/data/GuildSavedMessages"; import { GuildAutoReactions } from "src/data/GuildAutoReactions"; import { AddReactionsEvt } from "./events/AddReactionsEvt"; +import { trimPluginDescription } from "../../utils"; const defaultOptions: PluginOptions = { config: { @@ -22,6 +23,14 @@ const defaultOptions: PluginOptions = { }; export const AutoReactionsPlugin = zeppelinPlugin()("auto_reactions", { + showInDocs: true, + info: { + prettyName: "Auto-reactions", + description: trimPluginDescription(` + Allows setting up automatic reactions to all new messages on a channel + `), + }, + configSchema: ConfigSchema, defaultOptions, diff --git a/backend/src/plugins/Automod/AutomodPlugin.ts b/backend/src/plugins/Automod/AutomodPlugin.ts index 5b6af650..6f6f8279 100644 --- a/backend/src/plugins/Automod/AutomodPlugin.ts +++ b/backend/src/plugins/Automod/AutomodPlugin.ts @@ -22,6 +22,7 @@ import { MutesPlugin } from "../Mutes/MutesPlugin"; import { AntiraidClearCmd } from "./commands/AntiraidClearCmd"; import { SetAntiraidCmd } from "./commands/SetAntiraidCmd"; import { ViewAntiraidCmd } from "./commands/ViewAntiraidCmd"; +import { pluginInfo } from "./info"; const defaultOptions = { config: { @@ -134,6 +135,9 @@ const configPreprocessor: ConfigPreprocessorFn = options => { }; export const AutomodPlugin = zeppelinPlugin()("automod", { + showInDocs: true, + info: pluginInfo, + dependencies: [LogsPlugin, ModActionsPlugin, MutesPlugin], configSchema: ConfigSchema, diff --git a/backend/src/plugins/Automod/info.ts b/backend/src/plugins/Automod/info.ts new file mode 100644 index 00000000..a69eaff9 --- /dev/null +++ b/backend/src/plugins/Automod/info.ts @@ -0,0 +1,102 @@ +import { ZeppelinPluginBlueprint } from "../ZeppelinPluginBlueprint"; +import { trimPluginDescription } from "../../utils"; + +export const pluginInfo: ZeppelinPluginBlueprint["info"] = { + prettyName: "Automod", + description: trimPluginDescription(` + Allows specifying automated actions in response to triggers. Example use cases include word filtering and spam prevention. + `), + configurationGuide: trimPluginDescription(` + The automod plugin is very customizable. For a full list of available triggers, actions, and their options, see Config schema at the bottom of this page. + + ### Simple word filter + Removes any messages that contain the word 'banana' and sends a warning to the user. + Moderators (level >= 50) are ignored by the filter based on the override. + + ~~~yml + automod: + config: + rules: + my_filter: + triggers: + - match_words: + words: ['banana'] + case_sensitive: false + only_full_words: true + actions: + clean: true + warn: + reason: 'Do not talk about bananas!' + overrides: + - level: '>=50' + config: + rules: + my_filter: + enabled: false + ~~~ + + ### Spam detection + This example includes 2 filters: + + - The first one is triggered if a user sends 5 messages within 10 seconds OR 3 attachments within 60 seconds. + The messages are deleted and the user is muted for 5 minutes. + - The second filter is triggered if a user sends more than 2 emoji within 5 seconds. + The messages are deleted but the user is not muted. + + Moderators are ignored by both filters based on the override. + + ~~~yml + automod: + config: + rules: + my_spam_filter: + triggers: + - message_spam: + amount: 5 + within: 10s + - attachment_spam: + amount: 3 + within: 60s + actions: + clean: true + mute: + duration: 5m + reason: 'Auto-muted for spam' + my_second_filter: + triggers: + - message_spam: + amount: 5 + within: 10s + actions: + clean: true + overrides: + - level: '>=50' + config: + rules: + my_spam_filter: + enabled: false + my_second_filter: + enabled: false + ~~~ + + ### Custom status alerts + This example sends an alert any time a user with a matching custom status sends a message. + + ~~~yml + automod: + config: + rules: + bad_custom_statuses: + triggers: + - match_words: + words: ['banana'] + match_custom_status: true + actions: + alert: + channel: "473087035574321152" + text: |- + Bad custom status on user <@!{user.id}>: + {matchSummary} + ~~~ + `), +}; diff --git a/backend/src/plugins/Cases/CasesPlugin.ts b/backend/src/plugins/Cases/CasesPlugin.ts index 0dcc2152..e9622f58 100644 --- a/backend/src/plugins/Cases/CasesPlugin.ts +++ b/backend/src/plugins/Cases/CasesPlugin.ts @@ -10,6 +10,7 @@ import { postCaseToCaseLogChannel } from "./functions/postToCaseLogChannel"; import { CaseTypes } from "../../data/CaseTypes"; import { getCaseTypeAmountForUserId } from "./functions/getCaseTypeAmountForUserId"; import { getCaseEmbed } from "./functions/getCaseEmbed"; +import { trimPluginDescription } from "../../utils"; const defaultOptions = { config: { @@ -19,6 +20,14 @@ const defaultOptions = { }; export const CasesPlugin = zeppelinPlugin()("cases", { + showInDocs: true, + info: { + prettyName: "Cases", + description: trimPluginDescription(` + This plugin contains basic configuration for cases created by other plugins + `), + }, + configSchema: ConfigSchema, defaultOptions, diff --git a/backend/src/plugins/Censor/CensorPlugin.ts b/backend/src/plugins/Censor/CensorPlugin.ts index e18be28c..0e921f86 100644 --- a/backend/src/plugins/Censor/CensorPlugin.ts +++ b/backend/src/plugins/Censor/CensorPlugin.ts @@ -5,11 +5,12 @@ import { GuildLogs } from "src/data/GuildLogs"; import { GuildSavedMessages } from "src/data/GuildSavedMessages"; import { onMessageCreate } from "./util/onMessageCreate"; import { onMessageUpdate } from "./util/onMessageUpdate"; +import { trimPluginDescription } from "../../utils"; const defaultOptions: PluginOptions = { config: { filter_zalgo: false, - filter_invites: true, + filter_invites: false, invite_guild_whitelist: null, invite_guild_blacklist: null, invite_code_whitelist: null, @@ -41,6 +42,15 @@ const defaultOptions: PluginOptions = { }; export const CensorPlugin = zeppelinPlugin()("censor", { + showInDocs: true, + info: { + prettyName: "Censor", + description: trimPluginDescription(` + Censor words, tokens, links, regex, etc. + For more advanced filtering, check out the Automod plugin! + `), + }, + configSchema: ConfigSchema, defaultOptions, diff --git a/backend/src/plugins/CompanionChannels/CompanionChannelsPlugin.ts b/backend/src/plugins/CompanionChannels/CompanionChannelsPlugin.ts index 1a59e170..a631d813 100644 --- a/backend/src/plugins/CompanionChannels/CompanionChannelsPlugin.ts +++ b/backend/src/plugins/CompanionChannels/CompanionChannelsPlugin.ts @@ -3,6 +3,7 @@ import { CompanionChannelsPluginType, ConfigSchema, TCompanionChannelOpts } from import { VoiceChannelJoinEvt } from "./events/VoiceChannelJoinEvt"; import { VoiceChannelSwitchEvt } from "./events/VoiceChannelSwitchEvt"; import { VoiceChannelLeaveEvt } from "./events/VoiceChannelLeaveEvt"; +import { trimPluginDescription } from "../../utils"; const defaultOptions = { config: { @@ -11,6 +12,16 @@ const defaultOptions = { }; export const CompanionChannelsPlugin = zeppelinPlugin()("companion_channels", { + showInDocs: true, + info: { + prettyName: "Companion channels", + description: trimPluginDescription(` + Set up 'companion channels' between text and voice channels. + Once set up, any time a user joins one of the specified voice channels, + they'll get channel permissions applied to them for the text channels. + `), + }, + configSchema: ConfigSchema, defaultOptions, diff --git a/backend/src/plugins/CustomEvents/CustomEventsPlugin.ts b/backend/src/plugins/CustomEvents/CustomEventsPlugin.ts index 6cebd2d5..9f3e51e9 100644 --- a/backend/src/plugins/CustomEvents/CustomEventsPlugin.ts +++ b/backend/src/plugins/CustomEvents/CustomEventsPlugin.ts @@ -12,6 +12,8 @@ const defaultOptions = { }; export const CustomEventsPlugin = zeppelinPlugin()("custom_events", { + showInDocs: false, + configSchema: ConfigSchema, defaultOptions, diff --git a/backend/src/plugins/LocateUser/LocateUserPlugin.ts b/backend/src/plugins/LocateUser/LocateUserPlugin.ts index c8a44f5f..e7fdac73 100644 --- a/backend/src/plugins/LocateUser/LocateUserPlugin.ts +++ b/backend/src/plugins/LocateUser/LocateUserPlugin.ts @@ -9,6 +9,7 @@ import { FollowCmd } from "./commands/FollowCmd"; import { DeleteFollowCmd, ListFollowCmd } from "./commands/ListFollowCmd"; import { ChannelJoinAlertsEvt, ChannelLeaveAlertsEvt, ChannelSwitchAlertsEvt } from "./events/SendAlertsEvts"; import { GuildBanRemoveAlertsEvt } from "./events/BanRemoveAlertsEvt"; +import { trimPluginDescription } from "../../utils"; const defaultOptions: PluginOptions = { config: { @@ -27,6 +28,16 @@ const defaultOptions: PluginOptions = { }; export const LocateUserPlugin = zeppelinPlugin()("locate_user", { + showInDocs: true, + info: { + prettyName: "Locate user", + description: trimPluginDescription(` + This plugin allows users with access to the commands the following: + * Instantly receive an invite to the voice channel of a user + * Be notified as soon as a user switches or joins a voice channel + `), + }, + configSchema: ConfigSchema, defaultOptions, diff --git a/backend/src/plugins/Logs/LogsPlugin.ts b/backend/src/plugins/Logs/LogsPlugin.ts index 56c0088d..7a143a0f 100644 --- a/backend/src/plugins/Logs/LogsPlugin.ts +++ b/backend/src/plugins/Logs/LogsPlugin.ts @@ -41,6 +41,11 @@ const defaultOptions: PluginOptions = { }; export const LogsPlugin = zeppelinPlugin()("logs", { + showInDocs: true, + info: { + prettyName: "Logs", + }, + configSchema: ConfigSchema, defaultOptions, diff --git a/backend/src/plugins/MessageSaver/MessageSaverPlugin.ts b/backend/src/plugins/MessageSaver/MessageSaverPlugin.ts index 3b4dd5a5..c06fa2e7 100644 --- a/backend/src/plugins/MessageSaver/MessageSaverPlugin.ts +++ b/backend/src/plugins/MessageSaver/MessageSaverPlugin.ts @@ -21,11 +21,11 @@ const defaultOptions: PluginOptions = { }; export const MessageSaverPlugin = zeppelinPlugin()("message_saver", { + showInDocs: false, + configSchema: ConfigSchema, defaultOptions, - showInDocs: false, - // prettier-ignore commands: [ SaveMessagesToDBCmd, diff --git a/backend/src/plugins/ModActions/ModActionsPlugin.ts b/backend/src/plugins/ModActions/ModActionsPlugin.ts index 86a589a7..76fc260f 100644 --- a/backend/src/plugins/ModActions/ModActionsPlugin.ts +++ b/backend/src/plugins/ModActions/ModActionsPlugin.ts @@ -32,6 +32,7 @@ import { warnMember } from "./functions/warnMember"; import { Member } from "eris"; import { kickMember } from "./functions/kickMember"; import { banUserId } from "./functions/banUserId"; +import { trimPluginDescription } from "../../utils"; const defaultOptions = { config: { @@ -89,6 +90,14 @@ const defaultOptions = { }; export const ModActionsPlugin = zeppelinPlugin()("mod_actions", { + showInDocs: true, + info: { + prettyName: "Mod actions", + description: trimPluginDescription(` + This plugin contains the 'typical' mod actions such as warning, muting, kicking, banning, etc. + `), + }, + configSchema: ConfigSchema, defaultOptions, diff --git a/backend/src/plugins/Mutes/MutesPlugin.ts b/backend/src/plugins/Mutes/MutesPlugin.ts index 1d477892..f8b44416 100644 --- a/backend/src/plugins/Mutes/MutesPlugin.ts +++ b/backend/src/plugins/Mutes/MutesPlugin.ts @@ -56,6 +56,11 @@ let FIRST_CHECK_TIME = Date.now(); const FIRST_CHECK_INCREMENT = 5 * 1000; export const MutesPlugin = zeppelinPlugin()("mutes", { + showInDocs: true, + info: { + prettyName: "Mutes", + }, + configSchema: ConfigSchema, defaultOptions, diff --git a/backend/src/plugins/NameHistory/NameHistoryPlugin.ts b/backend/src/plugins/NameHistory/NameHistoryPlugin.ts index 9c6f7559..090a1b17 100644 --- a/backend/src/plugins/NameHistory/NameHistoryPlugin.ts +++ b/backend/src/plugins/NameHistory/NameHistoryPlugin.ts @@ -22,6 +22,8 @@ const defaultOptions: PluginOptions = { }; export const NameHistoryPlugin = zeppelinPlugin()("name_history", { + showInDocs: false, + configSchema: ConfigSchema, defaultOptions, diff --git a/backend/src/plugins/Persist/PersistPlugin.ts b/backend/src/plugins/Persist/PersistPlugin.ts index 1cdc7e1f..4b206f4f 100644 --- a/backend/src/plugins/Persist/PersistPlugin.ts +++ b/backend/src/plugins/Persist/PersistPlugin.ts @@ -5,6 +5,7 @@ import { GuildPersistedData } from "src/data/GuildPersistedData"; import { GuildLogs } from "src/data/GuildLogs"; import { StoreDataEvt } from "./events/StoreDataEvt"; import { LoadDataEvt } from "./events/LoadDataEvt"; +import { trimPluginDescription } from "../../utils"; const defaultOptions: PluginOptions = { config: { @@ -15,6 +16,15 @@ const defaultOptions: PluginOptions = { }; export const PersistPlugin = zeppelinPlugin()("persist", { + showInDocs: true, + info: { + prettyName: "Persist", + description: trimPluginDescription(` + Re-apply roles or nicknames for users when they rejoin the server. + Mute roles are re-applied automatically, this plugin is not required for that. + `), + }, + configSchema: ConfigSchema, defaultOptions, diff --git a/backend/src/plugins/PingableRoles/PingableRolesPlugin.ts b/backend/src/plugins/PingableRoles/PingableRolesPlugin.ts index 88d33836..94424e1b 100644 --- a/backend/src/plugins/PingableRoles/PingableRolesPlugin.ts +++ b/backend/src/plugins/PingableRoles/PingableRolesPlugin.ts @@ -21,6 +21,11 @@ const defaultOptions: PluginOptions = { }; export const PingableRolesPlugin = zeppelinPlugin()("pingable_roles", { + showInDocs: true, + info: { + prettyName: "Pingable roles", + }, + configSchema: ConfigSchema, defaultOptions, diff --git a/backend/src/plugins/Post/PostPlugin.ts b/backend/src/plugins/Post/PostPlugin.ts index 5308d0ba..6d30dce5 100644 --- a/backend/src/plugins/Post/PostPlugin.ts +++ b/backend/src/plugins/Post/PostPlugin.ts @@ -28,6 +28,11 @@ const defaultOptions: PluginOptions = { }; export const PostPlugin = zeppelinPlugin()("post", { + showInDocs: true, + info: { + prettyName: "Post", + }, + configSchema: ConfigSchema, defaultOptions, diff --git a/backend/src/plugins/ReactionRoles/ReactionRolesPlugin.ts b/backend/src/plugins/ReactionRoles/ReactionRolesPlugin.ts index 413f29da..cce35d94 100644 --- a/backend/src/plugins/ReactionRoles/ReactionRolesPlugin.ts +++ b/backend/src/plugins/ReactionRoles/ReactionRolesPlugin.ts @@ -30,6 +30,11 @@ const defaultOptions: PluginOptions = { }; export const ReactionRolesPlugin = zeppelinPlugin()("reaction_roles", { + showInDocs: true, + info: { + prettyName: "Reaction roles", + }, + configSchema: ConfigSchema, defaultOptions, diff --git a/backend/src/plugins/Reminders/RemindersPlugin.ts b/backend/src/plugins/Reminders/RemindersPlugin.ts index c183eb7d..c0841f85 100644 --- a/backend/src/plugins/Reminders/RemindersPlugin.ts +++ b/backend/src/plugins/Reminders/RemindersPlugin.ts @@ -22,6 +22,11 @@ const defaultOptions: PluginOptions = { }; export const RemindersPlugin = zeppelinPlugin()("reminders", { + showInDocs: true, + info: { + prettyName: "Reminders", + }, + configSchema: ConfigSchema, defaultOptions, diff --git a/backend/src/plugins/Roles/RolesPlugin.ts b/backend/src/plugins/Roles/RolesPlugin.ts index 565e34c6..59dbfa6e 100644 --- a/backend/src/plugins/Roles/RolesPlugin.ts +++ b/backend/src/plugins/Roles/RolesPlugin.ts @@ -6,6 +6,7 @@ import { AddRoleCmd } from "./commands/AddRoleCmd"; import { RemoveRoleCmd } from "./commands/RemoveRoleCmd"; import { MassAddRoleCmd } from "./commands/MassAddRoleCmd"; import { MassRemoveRoleCmd } from "./commands/MassRemoveRoleCmd"; +import { trimPluginDescription } from "../../utils"; const defaultOptions: PluginOptions = { config: { @@ -30,6 +31,14 @@ const defaultOptions: PluginOptions = { }; export const RolesPlugin = zeppelinPlugin()("roles", { + showInDocs: true, + info: { + prettyName: "Roles", + description: trimPluginDescription(` + Enables authorised users to add and remove whitelisted roles with a command. + `), + }, + configSchema: ConfigSchema, defaultOptions, diff --git a/backend/src/plugins/Roles/commands/AddRoleCmd.ts b/backend/src/plugins/Roles/commands/AddRoleCmd.ts index c9969a89..76a43e1e 100644 --- a/backend/src/plugins/Roles/commands/AddRoleCmd.ts +++ b/backend/src/plugins/Roles/commands/AddRoleCmd.ts @@ -8,6 +8,7 @@ import { GuildChannel } from "eris"; export const AddRoleCmd = rolesCmd({ trigger: "addrole", permission: "can_assign", + description: "Add a role to the specified member", signature: { member: ct.resolvedMember(), diff --git a/backend/src/plugins/Roles/commands/RemoveRoleCmd.ts b/backend/src/plugins/Roles/commands/RemoveRoleCmd.ts index c02b1a2d..a34298c7 100644 --- a/backend/src/plugins/Roles/commands/RemoveRoleCmd.ts +++ b/backend/src/plugins/Roles/commands/RemoveRoleCmd.ts @@ -8,6 +8,7 @@ import { stripObjectToScalars, verboseUserMention, resolveRoleId } from "src/uti export const RemoveRoleCmd = rolesCmd({ trigger: "removerole", permission: "can_assign", + description: "Remove a role from the specified member", signature: { member: ct.resolvedMember(), diff --git a/backend/src/plugins/SelfGrantableRoles/SelfGrantableRolesPlugin.ts b/backend/src/plugins/SelfGrantableRoles/SelfGrantableRolesPlugin.ts index 1482bde1..59b81b0f 100644 --- a/backend/src/plugins/SelfGrantableRoles/SelfGrantableRolesPlugin.ts +++ b/backend/src/plugins/SelfGrantableRoles/SelfGrantableRolesPlugin.ts @@ -14,6 +14,8 @@ const defaultOptions: PluginOptions = { }; export const SelfGrantableRolesPlugin = zeppelinPlugin()("self_grantable_roles", { + showInDocs: true, + configSchema: ConfigSchema, defaultOptions, diff --git a/backend/src/plugins/Slowmode/SlowmodePlugin.ts b/backend/src/plugins/Slowmode/SlowmodePlugin.ts index 91154385..d27479ea 100644 --- a/backend/src/plugins/Slowmode/SlowmodePlugin.ts +++ b/backend/src/plugins/Slowmode/SlowmodePlugin.ts @@ -35,6 +35,11 @@ const defaultOptions: PluginOptions = { }; export const SlowmodePlugin = zeppelinPlugin()("slowmode", { + showInDocs: true, + info: { + prettyName: "Slowmode", + }, + configSchema: ConfigSchema, defaultOptions, diff --git a/backend/src/plugins/Spam/SpamPlugin.ts b/backend/src/plugins/Spam/SpamPlugin.ts index 36133078..e174042e 100644 --- a/backend/src/plugins/Spam/SpamPlugin.ts +++ b/backend/src/plugins/Spam/SpamPlugin.ts @@ -8,6 +8,7 @@ import { GuildMutes } from "src/data/GuildMutes"; import { onMessageCreate } from "./util/onMessageCreate"; import { clearOldRecentActions } from "./util/clearOldRecentActions"; import { SpamVoiceJoinEvt, SpamVoiceSwitchEvt } from "./events/SpamVoiceEvt"; +import { trimPluginDescription } from "../../utils"; const defaultOptions: PluginOptions = { config: { @@ -41,6 +42,15 @@ const defaultOptions: PluginOptions = { }; export const SpamPlugin = zeppelinPlugin()("spam", { + showInDocs: true, + info: { + prettyName: "Spam protection", + description: trimPluginDescription(` + Basic spam detection and auto-muting. + For more advanced spam filtering, check out the Automod plugin! + `), + }, + configSchema: ConfigSchema, defaultOptions, diff --git a/backend/src/plugins/Starboard/StarboardPlugin.ts b/backend/src/plugins/Starboard/StarboardPlugin.ts index fa8c841e..c127d316 100644 --- a/backend/src/plugins/Starboard/StarboardPlugin.ts +++ b/backend/src/plugins/Starboard/StarboardPlugin.ts @@ -27,6 +27,8 @@ const defaultOptions: PluginOptions = { }; export const StarboardPlugin = zeppelinPlugin()("starboard", { + showInDocs: true, + configSchema: ConfigSchema, defaultOptions, diff --git a/backend/src/plugins/Tags/TagsPlugin.ts b/backend/src/plugins/Tags/TagsPlugin.ts index 18d65540..b98ed082 100644 --- a/backend/src/plugins/Tags/TagsPlugin.ts +++ b/backend/src/plugins/Tags/TagsPlugin.ts @@ -45,6 +45,11 @@ const defaultOptions: PluginOptions = { }; export const TagsPlugin = zeppelinPlugin()("tags", { + showInDocs: true, + info: { + prettyName: "Tags", + }, + configSchema: ConfigSchema, defaultOptions, diff --git a/backend/src/plugins/UsernameSaver/UsernameSaverPlugin.ts b/backend/src/plugins/UsernameSaver/UsernameSaverPlugin.ts index 689dfaf2..e5fa8b05 100644 --- a/backend/src/plugins/UsernameSaver/UsernameSaverPlugin.ts +++ b/backend/src/plugins/UsernameSaver/UsernameSaverPlugin.ts @@ -5,6 +5,8 @@ import { UsernameSaverPluginType } from "./types"; import { MessageCreateUpdateUsernameEvt, VoiceChannelJoinUpdateUsernameEvt } from "./events/UpdateUsernameEvts"; export const UsernameSaverPlugin = zeppelinPlugin()("username_saver", { + showInDocs: false, + // prettier-ignore events: [ MessageCreateUpdateUsernameEvt, diff --git a/backend/src/plugins/Utility/UtilityPlugin.ts b/backend/src/plugins/Utility/UtilityPlugin.ts index 63b207f4..23657d84 100644 --- a/backend/src/plugins/Utility/UtilityPlugin.ts +++ b/backend/src/plugins/Utility/UtilityPlugin.ts @@ -78,6 +78,11 @@ const defaultOptions: PluginOptions = { }; export const UtilityPlugin = zeppelinPlugin()("utility", { + showInDocs: true, + info: { + prettyName: "Utility", + }, + configSchema: ConfigSchema, defaultOptions, diff --git a/backend/src/plugins/WelcomeMessage/WelcomeMessagePlugin.ts b/backend/src/plugins/WelcomeMessage/WelcomeMessagePlugin.ts index 3d313754..7563703f 100644 --- a/backend/src/plugins/WelcomeMessage/WelcomeMessagePlugin.ts +++ b/backend/src/plugins/WelcomeMessage/WelcomeMessagePlugin.ts @@ -8,11 +8,16 @@ const defaultOptions: PluginOptions = { config: { send_dm: false, send_to_channel: null, - message: "", + message: null, }, }; export const WelcomeMessagePlugin = zeppelinPlugin()("welcome_message", { + showInDocs: true, + info: { + prettyName: "Welcome message", + }, + configSchema: ConfigSchema, defaultOptions, diff --git a/dashboard/package.json b/dashboard/package.json index 23743291..b4454381 100644 --- a/dashboard/package.json +++ b/dashboard/package.json @@ -6,7 +6,8 @@ "scripts": { "build": "rimraf dist && cross-env NODE_ENV=production webpack --config webpack.config.js", "build-debug": "rimraf dist && cross-env NODE_ENV=development webpack --config webpack.config.js", - "watch": "cross-env NODE_ENV=development webpack-dev-server" + "watch": "cross-env NODE_ENV=development webpack-dev-server", + "watch-build": "rimraf dist && NODE_ENV=development webpack --config webpack.config.js --watch" }, "devDependencies": { "@babel/core": "^7.7.2", diff --git a/dashboard/src/components/Title.vue b/dashboard/src/components/Title.vue index 2c740c52..07c372f7 100644 --- a/dashboard/src/components/Title.vue +++ b/dashboard/src/components/Title.vue @@ -1,3 +1,5 @@ + +