diff --git a/.docs/.markdownlint.json b/.docs/.markdownlint.json new file mode 100644 index 0000000..7d468df --- /dev/null +++ b/.docs/.markdownlint.json @@ -0,0 +1,4 @@ +{ + "MD013": false, + "MD007": { "indent": 4 } +} diff --git a/.docs/aurora.md b/.docs/aurora.md deleted file mode 100644 index 87e786b..0000000 --- a/.docs/aurora.md +++ /dev/null @@ -1,95 +0,0 @@ -# Aurora - -Aurora is a fully-featured moderation system. It is heavily inspired by GalacticBot, and is designed to be a more user-friendly alternative to Red's core Mod cogs. - -## Installation - -```bash -[p]repo add seacogs https://coastalcommits.com/SeaswimmerTheFsh/SeaCogs -[p]cog install seacogs aurora -[p]cog load aurora -``` - -## Commands List - -### Slash Commands - -#### Moderation Commands - -- `/note` - Add a note to a user - - Arguments: - - `target` - Accepts User IDs and mentions - This is who you're adding a note to - - `reason` - Reason for adding a note to the user - - `silent` - ***Optional*** - Toggles if the bot will try to send a direct message to the targeted user - Set to the value set by the `[p]moderationset dm` command by default -- `/warn` - Warn a user - - Arguments: - - `target` - Accepts User IDs and mentions - This is who you're warning - - `reason` - Reason for warning the user - - `silent` - ***Optional*** - Toggles if the bot will try to send a direct message to the targeted user - Set to the value set by the `[p]moderationset dm` command by default -- `/mute` - Mute a member - Doesn't work if the member is already muted! - - Arguments: - - `target` - Accepts User IDs and mentions - Must be in the discord server - This is who you're muting - - `duration` - Accepts any combination of duration units, as shown below - Maximum duration of [28 days](https://discord.com/developers/docs/resources/guild#modify-guild-member-json-params) - - ``2 d`` - - ``2 days`` - - ``1w`` - - ``1 week`` - - ``1w 4 days 3h 67minutes`` - - ``2w5d7h24m`` - - `reason` - Reason for muting the member - - `silent` - ***Optional*** - Toggles if the bot will try to send a direct message to the targeted member - Set to the value set by the `[p]moderationset dm` command by default -- `/unmute` - Unmute a member - Only works if the member is muted! - - Arguments: - - `target` - Accepts User IDs and mentions - Must be in the discord server - This is who you're unmuting - - `reason` - ***Optional*** - Reason for unmuting the member - - `silent` - ***Optional*** - Toggles if the bot will try to send a direct message to the targeted member - Set to the value set by the `[p]moderationset dm` command by default -- `/ban` - Ban a user - Doesn't work if the user is already banned - - Arguments: - - `target` - Accepts User IDs and mentions - This is who you're banning - - `reason` - Reason for banning the user - - `duration` - ***Optional*** - Accepts any combination of duration units, as shown in the mute command - - `silent` - ***Optional*** - Toggles if the bot will try to send a direct message to the targeted user - Set to the value set by the `[p]moderationset dm` command by default -- `/unban` - Unban a user - Only works if the user is banned! - - Arguments: - - `target` - Accepts User IDs and mentions - This is who you're unbanning - - `reason` - ***Optional*** - Reason for unbanning the user - - `silent` - ***Optional*** - Toggles if the bot will try to send a direct message to the targeted user - Set to the value set by the `[p]moderationset dm` command by default - -#### Case Commands - -- `/case` - Check the details of a specific case, by case number - - Arguments: - - `case_number` - Accepts case numbers - See `/history` to get a list of these - - `ephemeral` - ***Optional*** - Toggles if the response message will be hidden or not - Defaults to `false` -- `/history` - Checks the list of cases for a target, a moderator, or for the server - - Arguments - *All arguments of this command are optional*: - - `target` - Accepts User IDs and mentions - This is whose moderations you're querying - overrides `moderator` if both are given - - `moderator` - Accepts User IDs and mentions - This is the moderator whose moderations you're querying - - `pagesize` - Determines how many cases to list per `page` - Defaults to `5` - Maximum of `25` - - `page` - Determines which page to check - - `ephemeral` - Toggles if the response message will be hidden or not - Defaults to `false` - - `export` - Exports the moderation history of the entire server in a `.json` file - Defaults to `false` - - Notes: - - If `target` and `moderator` are not used, this command will query by all moderations in the server. -- `/resolve` - Resolves a case/moderation - - Arguments: - - `case_number` - Accepts case numbers - See `/history` to get a list of these - - `reason` - ***Optional*** - Reason for resolving the case - - Notes: - - If a `TEMPBAN` or `MUTE` is resolved before it expires, or a `BAN` is resolved, the targeted user will be unbanned/unmuted. - - Please resolve cases instead of unmuting/unbanning! - -### Text Commands - -- `[p]moderationset` - - This command handles the configuration for the Moderation cog - - Sub-commands: - - `[p]moderationset dm` - Server Administrator only - Per Guild - - This command toggles if the `silent` argument in Moderation slash commands will default to `true` or `false`. Defaults to `false`. - - `[p]moderationset ignorebots` - Server Administrator only - Per Guild - - This command toggles if the Moderation cog will automatically log moderations from other bots. Defaults to `false`. - - `[p]moderationset mysql` - Bot Owner only - Per Bot - - This command sends a direct message to the user with a modal to configure the MySQL settings. - - **This cog REQUIRES a configured MySQL database to function.** -- `[p]timedeltaconvert` - - Uses the same logic as `/mute` and `/unban` to generate timedeltas from human-readable input. diff --git a/.docs/aurora/case-commands.md b/.docs/aurora/case-commands.md new file mode 100644 index 0000000..48ecc16 --- /dev/null +++ b/.docs/aurora/case-commands.md @@ -0,0 +1,52 @@ +# Case Commands + +/// admonition | These commands are slash commands. + type: warning +Please make sure to enable them with [`[p]slash enable `](https://docs.discord.red/en/stable/cog_guides/core.html#slash-enable), then sync them with [`[p]slash sync`](https://docs.discord.red/en/stable/cog_guides/core.html#slash-sync). +/// + +## history + +/// admonition | All of the arguments for this command are optional. + type: info +/// + +- Usage: `/history [target] [moderator] [pagesize] [page] [ephemeral] [inline] [export]` + - If both `target` and `moderator` are not present, all moderations for the server will be queried. +- `target:` User whose infractions to query, overrides moderator if both are given +- `moderator:` Moderator whose infractions to query +- `pagesize:` Amount of infractions to list per page +- `page:` Page to select +- `ephemeral:` Hide the command response +- `inline:` Display infractions in a grid arrangement +- `export:` Exports the server's entire moderation history to a JSON file + +List previous infractions. + +## resolve + +- Usage: `/resolve [reason]` +- `case:` (Required) Case number of the case you're trying to resolve +- `reason:` (Optional) Reason for resolving case + +Resolve a specific case. + +## case + +- Usage: `/case [ephemeral] [evidenceformat] [changes] [export]` +- `case:` (Required) What case are you looking up? +- `ephemeral:` (Optional) Hide the command response +- `evidenceformat:` (Optional) … +- `changes:` (Optional) List the changes made to the case +- `export:` (Optional) Export the case to a JSON file or codeblock + +Check the details of a specific case. + +## edit + +- Usage: `/edit [duration]` +- `case:` (Required) What case are you editing? +- `reason:` (Required) What is the new reason? +- `duration:` (Optional) What is the new duration? Does not reapply the moderation if it has already expired. + +Edit the reason of a specific case. diff --git a/.docs/aurora/configuration.md b/.docs/aurora/configuration.md new file mode 100644 index 0000000..0c73acf --- /dev/null +++ b/.docs/aurora/configuration.md @@ -0,0 +1,204 @@ +# Configuration + +## auroraset + - Usage: `[p]auroraset` + - Aliases: `moderationset, modset, moderationsettings, aurorasettings, and auroraconfig` + +Manage moderation commands. + +### auroraset ignorebots + - Usage: `[p]auroraset ignorebots` + - Restricted to: `ADMIN` + +Toggle if the cog should ignore other bots' moderations. + +### auroraset user + - Usage: `[p]auroraset user` + +Manage configurations for user configuration options. + +#### auroraset user history + - Usage: `[p]auroraset user history` + +Manage configuration for the /history command. + +##### auroraset user history inline + - Usage: `[p]auroraset user history inline` + +Manage configuration for the /history command's inline argument. + +###### auroraset user history inline toggle + - Usage: `[p]auroraset user history inline toggle ` + +Enable the /history command's inline argument by default. + +##### auroraset user history inline pagesize + - Usage: `[p]auroraset user history inline pagesize ` + +Set the amount of cases to display per page. + +#### auroraset user history pagesize + - Usage: `[p]auroraset user history pagesize ` + +Set the amount of cases to display per page. + +#### auroraset user history ephemeral + - Usage: `[p]auroraset user history ephemeral ` + - Aliases: `hidden and hide` + +Toggle if the /history command should be ephemeral. + +### auroraset user autoevidence + - Usage: `[p]auroraset user autoevidence ` + +Toggle if the evidenceformat codeblock should be sent automatically. + +## auroraset server + - Usage: `[p]auroraset server` + - Restricted to: `ADMIN` + +Manage default configurations for user configuration options, per server. + +### auroraset server history + - Usage: `[p]auroraset server history` + - Restricted to: `ADMIN` + +Manage configuration for the /history command. + +#### auroraset server history inline + - Usage: `[p]auroraset server history inline` + - Restricted to: `ADMIN` + +Manage configuration for the /history command's inline argument. + +##### auroraset server history inline pagesize + - Usage: `[p]auroraset server history inline pagesize ` + - Restricted to: `ADMIN` + +Set the amount of cases to display per page. + +##### auroraset server history inline toggle + - Usage: `[p]auroraset server history inline toggle ` + - Restricted to: `ADMIN` + +Enable the /history command's inline argument by default. + +#### auroraset server history ephemeral + - Usage: `[p]auroraset server history ephemeral ` + - Restricted to: `ADMIN` + - Aliases: `hidden and hide` + +Toggle if the /history command should be ephemeral. + +#### auroraset server history pagesize + - Usage: `[p]auroraset server history pagesize ` + - Restricted to: `ADMIN` + +Set the amount of cases to display per page. + +### auroraset server autoevidence + - Usage: `[p]auroraset server autoevidence ` + +Toggle if the evidenceformat codeblock should be sent automatically. + +## auroraset showmoderator + - Usage: `[p]auroraset showmoderator` + - Restricted to: `ADMIN` + +Toggle if the cog should show the moderator in the case embed when dming a user. + +## auroraset immunity + - Usage: `[p]auroraset immunity` + - Restricted to: `ADMIN` + +Manage configuration for immune roles. + +### auroraset immunity add + - Usage: `[p]auroraset immunity add ` + - Restricted to: `ADMIN` + +Add a role to the immune roles list. + +### auroraset immunity remove + - Usage: `[p]auroraset immunity remove ` + - Restricted to: `ADMIN` + +Remove a role from the immune roles list. + +### auroraset immunity list + - Usage: `[p]auroraset immunity list` + - Restricted to: `ADMIN` + +List all immune roles. + +## auroraset permissions + - Usage: `[p]auroraset permissions` + - Restricted to: `ADMIN` + +Toggle whether the bot will check for discord permissions. + +## auroraset logchannel + - Usage: `[p]auroraset logchannel [channel=None]` + - Restricted to: `ADMIN` + +Set a channel to log infractions to. + +## auroraset import + - Usage: `[p]auroraset import` + - Restricted to: `ADMIN` + +Import moderations from other bots. + +### auroraset import galacticbot + - Usage: `[p]auroraset import galacticbot` + - Restricted to: `ADMIN` + +Import moderations from GalacticBot. + +### auroraset import aurora + - Usage: `[p]auroraset import aurora` + - Restricted to: `ADMIN` + +Import moderations from another bot using Aurora. + +## auroraset dm + - Usage: `[p]auroraset dm` + - Restricted to: `ADMIN` + +Toggle automatically messaging moderated users.

This option can be overridden by specifying the `silent` argument in any moderation command. + +## auroraset list + - Usage: `[p]auroraset list` + - Aliases: `view and show` + +List all moderation settings. + +## auroraset blacklist + - Usage: `[p]auroraset blacklist` + - Restricted to: `ADMIN` + +Manage configuration for the /blacklist command. + +### auroraset blacklist list + - Usage: `[p]auroraset blacklist list` + - Restricted to: `ADMIN` + +List all blacklist types. + +### auroraset blacklist remove + - Usage: `[p]auroraset blacklist remove ` + - Restricted to: `ADMIN` + +Remove a role's blacklist type. + +### auroraset blacklist add + - Usage: `[p]auroraset blacklist add ` + - Restricted to: `ADMIN` + +Add a role to the blacklist. + +# timedeltaconvert + - Usage: `[p]timedeltaconvert ` + - Aliases: `tdc` + +This command converts a duration to a [`timedelta`](https://docs.python.org/3/library/datetime.html#datetime.timedelta) Python object.

**Example usage**
`[p]timedeltaconvert 1 day 15hr 82 minutes 52s`
**Output**
`1 day, 16:22:52` diff --git a/.docs/aurora/index.md b/.docs/aurora/index.md new file mode 100644 index 0000000..0c59c59 --- /dev/null +++ b/.docs/aurora/index.md @@ -0,0 +1,11 @@ +# Aurora + +Aurora is a fully-featured moderation system. It is heavily inspired by GalacticBot, and is designed to be a more user-friendly alternative to Red's core Mod cogs. + +## Installation + +```bash +[p]repo add seacogs https://coastalcommits.com/SeaswimmerTheFsh/SeaCogs +[p]cog install seacogs aurora +[p]cog load aurora +``` diff --git a/.docs/aurora/moderation-commands.md b/.docs/aurora/moderation-commands.md new file mode 100644 index 0000000..058afab --- /dev/null +++ b/.docs/aurora/moderation-commands.md @@ -0,0 +1,82 @@ +# Moderation Commands + +/// admonition | These commands are slash commands. + type: warning +Please make sure to enable them with [`[p]slash enable `](https://docs.discord.red/en/stable/cog_guides/core.html#slash-enable), then sync them with [`[p]slash sync`](https://docs.discord.red/en/stable/cog_guides/core.html#slash-sync). +/// + +## note + +- Usage: `/note [silent]` +- `target:` (Required) Who are you noting? +- `reason:` (Required) Why are you noting this user? +- `silent:` (Optional) Should the user be messaged? + +Add a note to a user. + +## warn + +- Usage: `/warn [silent]` +- `target:` (Required) Who are you warning? +- `reason:` (Required) Why are you warning this user? +- `silent:` (Optional) Should the user be messaged? + +Warn a user. + +## blacklist + +- Usage: `/blacklist [silent]` +- `target:` (Required) Who are you blacklisting? +- `role:` (Required) What blacklist type are you applying to the target? +- `reason:` (Required) Why are you blacklisting this user? +- `silent:` (Optional) Should the user be messaged? + +Add a blacklist role to a user. + +## mute + +- Usage: `/mute [silent]` +- `target:` (Required) Who are you unbanning? +- `duration:` (Required) How long are you muting this user for? +- `reason:` (Required) Why are you unbanning this user? +- `silent:` (Optional) Should the user be messaged? + +Mute a user. + +## unmute + +- Usage: `/unmute [reason] [silent]` +- `target:` (Required) Who are you unmuting? +- `reason:` (Optional) Why are you unmuting this user? +- `silent:` (Optional) Should the user be messaged? + +Unmute a user. + +## kick + +- Usage: `/kick [silent]` +- `target:` (Required) Who are you kicking? +- `reason:` (Required) Why are you kicking this user? +- `silent:` (Optional) Should the user be messaged? + +Kick a user. + +## ban + +- Usage: `/ban [duration] [delete_messages] [silent]` +- `target:` (Required) Who are you banning? +- `reason:` (Required) Why are you banning this user? +- `duration:` (Optional) How long are you banning this user for? +- `delete_messages:` (Optional) How many days of messages to delete? +- `silent:` (Optional) Should the user be messaged? + +Ban a user. + +## unban + +- Usage: `/unban [reason] [silent]` +- `target:` (Required) Who are you unbanning? +- `reason:` (Optional) Why are you unbanning this user? +- `silent:` (Optional) Should the user be messaged? + +Unban a user. diff --git a/.docs/nerdify.md b/.docs/nerdify.md index 2099f3d..f801d29 100644 --- a/.docs/nerdify.md +++ b/.docs/nerdify.md @@ -12,16 +12,16 @@ Nerdify allows you to nerdify other people's text. ## Commands -### `[p]nerdify` +### nerdify -::: nerdify.nerdify.Nerdify.nerdify +- Usage: `[p]nerdify [text]` +- Aliases: `nerd` + +Nerdify the replied to message, previous message, or your own text. +If `[text]` is not provided, the bot will try to nerdify either the previous message or the replied to message, if the invocation message is a reply. ## Method Reference -### `nerdify_text` - ::: nerdify.nerdify.Nerdify.nerdify_text -### `type_message` - ::: nerdify.nerdify.Nerdify.type_message diff --git a/mkdocs.yml b/mkdocs.yml index 507cb2d..470aa1b 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -11,13 +11,17 @@ site_description: Documentation for my Red-DiscordBot Cogs. nav: - Home: index.md - - Aurora: aurora.md + - Aurora: + - Home: aurora/index.md + - Moderation Commands: aurora/moderation-commands.md + - Case Commands: aurora/case-commands.md + - Configuration: aurora/configuration.md - Nerdify: nerdify.md plugins: - git-authors - search -# - social + - social - git-revision-date-localized: enable_creation_date: true type: timeago @@ -30,7 +34,8 @@ plugins: docstring_options: ignore_imit_summary: true summary: true - show_root_toc_entry: false + show_root_toc_entry: true + show_root_heading: true filters: - "!^___" @@ -63,6 +68,7 @@ theme: - content.code.annotate - content.code.copy - navigation.instant + - navigation.tabs - search.suggest - search.highlight - search.share diff --git a/nerdify/nerdify.py b/nerdify/nerdify.py index cac0e7f..588d210 100644 --- a/nerdify/nerdify.py +++ b/nerdify/nerdify.py @@ -21,15 +21,7 @@ class Nerdify(commands.Cog): @commands.command(aliases=["nerd"]) async def nerdify(self, ctx: commands.Context, *, text: Optional[str] = None) -> None: - """Nerdify the replied to message, previous message, or your own text. - - Example: - ``[p]nerdify hello world!`` - > "hello world!" :nerd: - - Args: - text: The text to nerdify. If not provided, the bot will try to nerdify either the previous message or the replied to message, if the invocation message is a reply. - """ + """Nerdify the replied to message, previous message, or your own text.""" if not text: if hasattr(ctx.message, "reference") and ctx.message.reference: with suppress(