{ "PirateReportCog.report": { "details_md": "## What it does\nSubmit a player to the **Pirate Review Queue**. Mods get a compact card with the details and can approve ❇️ or reject ❌ with one click. If you include proof, it shows inline so they can decide faster.\n\n---\n\n## How to use — `/report`\nWhen you run **/report**, a small form opens:\n\n- **In-game nickname** \n The name they use in game. Example: `SandStalker`\n\n- **Account (Name#12345)** \n Must end with a `#` and **five digits**. Example: `SomeUser#12345` \n > If you only know the nickname, try to get the account tag too. It removes ambiguity later.\n\n- **Proof (Discord media URL — optional but strongly encouraged)** \n Paste a **direct Discord CDN** link so it previews nicely:\n - Accepts: `https://cdn.discordapp.com/...` or `https://media.discordapp.net/...`\n - Works with: **png, jpg, jpeg, gif, webp, mp4, webm, mov**\n - How to get the link: open the image/video in Discord ➜ “Open in browser” ➜ copy the address.\n\n> **Tip:** Images appear inside the mod card. Videos are kept as a plain link above the card so the inline video player works.\n\n---\n\n## What happens after you submit\n- You get a quick **thank-you** in the channel.\n- Mods receive an embed in their review channel with ✅ and ❌.\n- There’s a **“Jump to message”** button on the mod card so they can see the original context.\n- When a mod picks ✅/❌, the card is updated to show **Approved/Rejected** (with who decided and when). The small ack message in your channel is also edited to reflect the result.\n\nIf approved, the player is added to the pirate list (threat level starts at 0 and grows with encounters).\n\n---\n\n## Rules & limits (so you don’t run into errors)\n- **Account format:** must be `Name#12345`. Five digits. No spaces at the end.\n- **Proof link:** must be a Discord media link (see above). Non-Discord links are blocked.\n- **Duplicates:** already-approved players can’t be re-reported; exact pending duplicates are blocked too.\n- **Rate limit:** one report per user every **60 seconds**.\n\nCommon messages you might see:\n- `Invalid account format` → fix to `Name#12345`.\n- `URL must be a Discord media link` → use cdn.discordapp.com or media.discordapp.net.\n- `A report for this player is already pending` → a mod is already reviewing one.\n- `This player is already in the pirate list` → no need to report again.\n\n---\n\n## Good proof examples\n- Screenshot of **names** and actions in the **event log**.\n- Short clip (10–30s) that shows **what happened** and **who did it**.\n- If the situation is complex, add a quick text summary when you submit.\n\n---\n\n## Related actions\n- **/encounter** — log a new encounter with a known pirate. \n Fields:\n - *Pirate (name or account)* — `MuadDib` or `MuadDib#12345` (account preferred)\n - *Group size* — integer ≥ 1\n - *Kills* — integer ≥ 0 (0 = none/unknown)\n - *Destructive?* — `yes` / `no`\n - *Perceived Skill* — 0–5 (0 = unknown) \n Limits: one encounter per same pirate per reporter every **10 minutes**. These entries automatically update the pirate’s **threat level** and **encounter count**.\n\n- **/edit_pirate** *(moderators)* — update a pirate’s nickname/account.\n- **remove_pirate** *(moderators, hybrid)* — remove an approved entry.\n- **encounters_migrate_ids** *(moderators, hybrid)* — migrate old encounter identifiers.\n\n---\n\n## FAQ\n**Q: My proof link won’t accept.** \nA: It must be a direct Discord CDN URL (ends in a known image/video extension). Open the media in browser from Discord and copy that address.\n\n**Q: I only know their nickname and it says “ambiguous”.** \nA: Use the **account** form `Name#12345`. Nicknames can be shared.\n\n**Q: Do I have to add proof?** \nA: Optional, but it **really** helps mods decide quickly. Screenshots are usually enough.\n", "brief_html": "

What it does

\n

\n Sends a player to the Pirate Review Queue. Mods get a card with ✅/❌.\n If you include a Discord media link, it will preview for them.\n

\n\n

Quick use — /report

\n\n\n

Limits

\n\n\n

\n Tip: Images show inside the card; videos stay as a link so the inline player works.\n

\n", "details_html": "

Submit a pirate report

\n

\n Use /report to send a player to the Pirate Review Queue.\n Mods see a compact card with your info and can approve or reject with one click.\n

\n\n

Form fields

\n\n\n

What happens next

\n
    \n
  1. You get a short “thanks” message in the channel.
  2. \n
  3. Mods receive an embed with ✅/❌. If you added an image, it shows inside the card.\n If it’s a video, the URL is kept above the card so the inline player works.
  4. \n
  5. A “Jump to message” button lets mods see your original context quickly.
  6. \n
  7. When a mod decides, the card updates to show Approved/Rejected with who and when.\n Your small ack message in the channel is edited to reflect the result.
  8. \n
  9. If approved, the player is added to the pirate list (threat level starts at 0).
  10. \n
\n\n

Rules & common errors

\n\n

\n Typical messages: “Invalid account format”, “URL must be a Discord media link”, “A report for this player is already pending”.\n

\n\n

Related actions

\n\n" }, "PirateReportCog.encounter": { "brief_html": "

Quick usage — /encounter

\n\n

Log a pirate encounter so threat scores stay fresh. Takes ~10 seconds.

\n\n\n\n

Rate limit: you can report the same pirate once every 10 minutes.

\n\n
\n
/encounter MuadDib#12345 · group 3 · kills 1 · destructive yes · skill 4
\n
/encounter SandStalker · group 5 · kills 0 · destructive no · skill 2
\n
\n\n

After you submit, you’ll get a private “Encounter recorded” message and the pirate list updates shortly after.

\n", "details_html": "

What it does

\n

\n /encounter adds a single encounter to the pirate’s history. These entries feed the\n threat score so the pirate list reflects how dangerous someone actually is right now.\n

\n\n
\n\n

Form fields

\n\n\n
\n /encounter MuadDib#12345 · group 3 · kills 1 · destructive yes · skill 4\n
\n\n
\n\n

Validation & messages

\n\n\n
\n\n

How threat is calculated (short)

\n

\n Each encounter contributes to a weighted score (0–100):\n

\n\n

\n The weights are configurable (defaults: Kill 0.35, Destruction 0.30, Group 0.20, Skill 0.15). After you submit,\n the bot recomputes the pirate’s threat level and encounter count, then refreshes the list.\n

\n\n
\n\n

Tips

\n\n\n
\n\n

Common errors

\n\n" }, "PirateReportCog.edit_pirate": { "brief_html": "

Quick usage — /edit_pirate [Moderator]

\n\n

Edit an existing pirate entry. Use this when a player changes nickname or account tag.

\n\n\n\n
/edit_pirate
\n\n

\n You must provide at least one of: new nickname or new account.
\n The account format is strict: # + five digits. Duplicate accounts are blocked.\n

\n", "details_html": "

What it does

\n

\n Updates a pirate record that’s already approved. Typical cases: the player renamed their character,\n or moved to a new account tag.\n

\n\n
\n\n

Form fields

\n\n\n
\n\n

Rules & feedback

\n\n" }, "PirateReportCog.encounters_migrate_ids": { "brief_html": "

Quick usage — /encounters_migrate_ids [Moderator]

\n\n

\n Converts old encounter records stored by character name to the\n canonical account (Name#12345).\n

\n\n
/encounters_migrate_ids
\n\n

\n Useful after adding pirates where past encounters referenced only nicknames.\n

\n", "details_html": "

What it does

\n

\n Scans stored encounters and rewrites any identifier that is a character name to the correct\n account for that pirate. Keeps data consistent for threat calculations.\n

\n\n
\n\n

How matching works

\n\n\n
\n\n

Result

\n\n\n

\n Moderator-only.\n

\n" }, "PirateReportCog.remove_pirate": { "brief_html": "

Quick usage — /remove_pirate [Moderator]

\n\n

Remove a pirate from the approved list by account.

\n\n
/remove_pirate account_name: Name#12345
\n\n

\n Account format must be Name#12345. If the account isn’t found, you’ll get “Pirate not found.”\n

\n", "details_html": "

What it does

\n

Deletes the matching pirate record from the approved list.

\n\n
\n\n

Parameters

\n\n\n
\n\n

Behavior & messages

\n\n" }, "AutoVCCog.avc_cleanup_now": { "brief_html": "

Quick usage — /avc_cleanup_now [Moderator]

\n

Immediately deletes empty Auto-VC rooms that have been idle past the configured delay, then renumbers the rest.

\n\n
/avc_cleanup_now
\n\n

\n Replies “Cleanup pass complete.” on success.\n

\n", "details_html": "

What it does

\n\n\n
\n\n

When to use

\n\n\n
\n\n

Permissions & notes

\n\n" }, "AutoVCCog.avc_renumber": { "brief_html": "

Quick usage — /avc_renumber [Moderator]

\n

Force a rename of all managed rooms to a clean numeric order without deleting anything.

\n\n
/avc_renumber
\n\n

\n Replies “Renumbered.” on success.\n

\n", "details_html": "

What it does

\n

Renames tracked rooms to {prefix} 1, {prefix} 2, … in creation order. No rooms are deleted.

\n\n
\n\n

When to use

\n\n\n
\n\n

Permissions & notes

\n\n" }, "AutoVCCog.avc_status": { "brief_html": "

Quick usage — /avc_status

\n

Shows current Auto-VC setup and the list of managed rooms.

\n\n
/avc_status
\n\n

\n Output includes trigger channel, target category, name prefix, cleanup delay, and each tracked room with its current state.\n

\n", "details_html": "

What it shows

\n\n\n
\n\n

Example output

\n
\nAuto-VC status:\nTrigger: <#1234567890> | Category: <#2345678901> | Prefix: `Room` | Delay: 30s\n- #1: Room 1 — 3 inside\n- #2: Room 2 — empty | idle 12s\n
\n\n

\n This command is read-only and safe to run anytime.\n

\n" }, "NickNudgeCog.clear_nick_reviews": { "brief_html": "

Quick usage — /clear_nick_reviews [Moderator]

\n

Delete all pending nickname review records for this server.

\n\n
/clear_nick_reviews
\n\n

\nReplies with how many pending entries were removed (ephemeral).\n

\n", "details_html": "

What it does

\n\n\n
\n\n

Result

\n

\n Shows: Cleared N pending nickname review(s). (ephemeral)\n

\n\n
\n\n

Permissions & notes

\n\n" }, "NickNudgeCog.recreate_nick_review": { "brief_html": "

Quick usage — /recreate_nick_review [Moderator]

\n

Recreate a single user’s missing pending review.

\n\n
/recreate_nick_review user: @Member
\n\n

\nIf they’re already verified or already have a pending review, you’ll get a short explanation instead (ephemeral).\n

\n", "details_html": "

What it does

\n\n\n
\n\n

When to use

\n\n\n
\n\n

Permissions & notes

\n\n" }, "NickNudgeCog.recreate_nick_reviews": { "brief_html": "

Quick usage — /recreate_nick_reviews [Moderator]

\n

Scan the server and recreate any missing pending reviews for users who claimed but never got a review opened.

\n\n
/recreate_nick_reviews
\n\n

\nReplies: Recreated X review(s); skipped Y. (ephemeral)\n

\n", "details_html": "

What it does

\n\n\n
\n\n

When to use

\n\n\n
\n\n

Permissions & notes

\n\n" }, "PiratesListCog.pirates_list_refresh": { "brief_html": "

Quick usage — /pirates_list_refresh [Moderator]

\n

Rebuild the compact pirates list in the configured channel. Use this after adding/removing pirates or when encounter stats change.

\n\n
/pirates_list_refresh
\n\n\n", "details_html": "

What it does

\n\n\n
\n\n

Entry format

\n
\n- Character (Account#12345) [Threat%]\n  - In group: bucket. Destructive: bucket. Encounters: N. Last: <t:UNIX:R>\n
\n\n\n
\n\n

When to use

\n\n\n
\n\n

Behavior & notes

\n\n\n
\n\n

Config that affects output

\n\n\n
\n\n

Permissions

\n\n" }, "PowerActionsCog.power_restart": { "brief_html": "

Quick usage — /power restart [Moderator]

\n

Safely restarts the bot after logging a clear reason to the modlog.

\n\n
/power restart reason:\"Restarting to enable new permissions sync after config change\"
\n\n\n", "details_html": "

What it does

\n\n\n
\n\n

Reason requirements

\n

The reason must be specific enough to audit later:

\n\n\n

Examples

\n
\n
\n
✅ Good
\n
/power restart reason:\"Reloading cogs after changing threat weights and enabling nick loop; avoids inconsistent state.\"
\n
\n
\n
❌ Bad
\n
/power restart reason:\"update\"
\n
\n
\n\n
\n\n

What you’ll see

\n\n\n
\n\n

Config that affects it

\n\n\n
\n\n

Permissions

\n\n" }, "PowerActionsCog.restart": { "brief_html": "

Quick usage — /power restart [Moderator]

\n

Safely restarts the bot after logging a clear reason to the modlog.

\n\n
/power restart reason:\"Restarting to enable new permissions sync after config change\"
\n\n\n", "details_html": "

What it does

\n\n\n
\n\n

Reason requirements

\n

The reason must be specific enough to audit later:

\n\n\n

Examples

\n
\n
\n
✅ Good
\n
/power restart reason:\"Reloading cogs after changing threat weights and enabling nick loop; avoids inconsistent state.\"
\n
\n
\n
❌ Bad
\n
/power restart reason:\"update\"
\n
\n
\n\n
\n\n

What you’ll see

\n\n\n
\n\n

Config that affects it

\n\n\n
\n\n

Permissions

\n\n" }, "ReactionRoleCog.nick_same": { "brief_html": "

/nick_same

\n

Nick matches my in-game name. Tells mods your current server nickname (or global display name if you haven’t set one) already matches your in-game name, and opens a quick review.

\n\n

Usage

\n
/nick_same
\n\n\n\n

Tips

\n\n", "details_html": "

/nick_same — Nickname claim

\n

Use this when your server nickname already matches your in-game character name. It opens a moderator review so you can get (or keep) access without typing anything else.

\n\n

What it does

\n\n\n

How to use

\n
/nick_same
\n\n\n

Typical flow

\n
    \n
  1. You run /nick_same. The bot replies “Thanks — your nickname claim was sent for moderator review.”
  2. \n
  3. Mods see a review card with your previous nick (if known) and the current one.
  4. \n
  5. They press ✅ to verify or ❌ to reject. You keep (or lose) Full Access depending on Rules/Engagement and the result.
  6. \n
\n\n

Good to know

\n\n\n

Troubleshooting

\n\n" }, "SpicePayCog.spicepay": { "brief_html": "

/spicepay

\n

Open the Spice Pay wizard. Step through participants, roles, payout type (Sand or Melange), and weighting. Shows a live preview and lets you post the result.

\n\n

Usage

\n
/spicepay [participants] [force_new]
\n\n\n

Quick flow

\n
    \n
  1. Enter the total yield and participant count.
  2. \n
  3. Add/edit each participant (name, active %, owner roles).
  4. \n
  5. Toggle payout: Sand ⟷ Melange (set refinery yield for Melange).
  6. \n
  7. Adjust weighting factors or use a preset.
  8. \n
  9. Finish → preview → Post to channel.
  10. \n
\n\n

Notes

\n", "details_html": "

/spicepay — Guided payout

\n

Calculate a fair split for a spice run. The wizard keeps things simple and transparent for the team.

\n\n

Start

\n
/spicepay [participants] [force_new]
\n\n\n

Setup modal

\n\n\n

Editing participants

\n

For each slot:

\n\n

Use Add / Edit participant, Previous/Next to navigate. The preview shows filled vs. empty slots and highlights “owner-only”.

\n\n

Payout type

\n\n

When switching to Melange, set the refinery yield (integer) in the modal.

\n\n

Weighting (the math, simplified)

\n\n\n

Controls

\n\n\n

Validation & limits

\n\n\n

Posting

\n

The post includes:

\n\n

Footnote: “0% = owner only”.

\n" }, "SpicePayCog.spicepay_cancel": { "brief_html": "

/spicepay_cancel

\n

Cancel your active Spice Pay session. Clears everything for you so you can start fresh.

\n\n

Usage

\n
/spicepay_cancel
\n\n\n", "details_html": "

/spicepay_cancel — Cancel session

\n

Discards your current wizard state. Handy if you mis-entered totals or want to restructure the roster.

\n\n

What it does

\n\n\n

Next steps

\n

Run /spicepay to start again. You can optionally pass participants or just set them in the first modal.

\n" }, "SpicePayCog.spicepay_config": { "brief_html": "

/spicepay_config

\n

Show server SpicePay weights. Read-only view of the defaults the wizard uses.

\n\n

Usage

\n
/spicepay_config
\n\n\n", "details_html": "

/spicepay_config — Server weights

\n

Shows the current default weighting used by the Spice Pay wizard.

\n\n

Fields

\n\n\n

Where to change

\n

Configure via environment variables or your INI, then restart the bot. The wizard’s Adjust weighting factors lets users override per-run; those don’t change the server defaults.

\n\n

Tips

\n\n" }, "SpicePayCog.spicepay_resume": { "brief_html": "

/spicepay_resume

\n

Reopen your active Spice Pay session. Useful if you closed the wizard message by accident.

\n\n

Usage

\n
/spicepay_resume
\n\n\n", "details_html": "

/spicepay_resume — Resume wizard

\n

Brings back the current session UI (if you already started one with /spicepay).

\n\n

When to use

\n\n\n

Behavior

\n\n" }, "help": { "brief_html": "

!help

\n

Show a quick overview of commands or details about a specific command.

\n\n

Usage

\n
!help\n!help spicepay\n!help pirate\n!help encounter
\n\n\n", "details_html": "

!help — Command help & search

\n

Use !help to see what the bot can do, or pass a keyword/command to jump straight to specifics.

\n\n

What it does

\n\n\n

How to use it

\n
    \n
  1. Overview: !help — shows a concise command list.
  2. \n
  3. Filter: !help spice — narrows to commands that match “spice”.
  4. \n
  5. Exact command: !help encounter — shows usage for a single command if available.
  6. \n
\n\n

Examples

\n
!help\n!help pirate\n!help spicepay\n!help encounter
\n\n

Notes & tips

\n\n\n

Troubleshooting

\n\n" }, "PirateCardsCog.pirate_cards_rebuild": { "brief_html": "

/pirate_cards_rebuild

\n

Rebuild or update pirate cards for every known pirate in the configured channel.

\n\n

Usage

\n
/pirate_cards_rebuild
\n\n\n\n

What it does

\n\n", "details_html": "

/pirate_cards_rebuild — Rebuild all pirate cards

\n

Runs a full pass that makes sure each verified pirate has a fresh, accurate card in the configured channel.

\n\n

Access

\n\n\n

What it updates

\n\n\n

Behavior

\n
    \n
  1. For each pirate in the internal list:\n \n
  2. \n
  3. Works serially per guild to avoid race conditions.
  4. \n
\n\n

Output

\n

Ephemeral summary, e.g.:

\n
Rebuilt/updated 27 pirate cards.
\n\n

Setup notes

\n\n\n

When to run it

\n\n" }, "UserCardsCog.usercards_rescan": { "brief_html": "

/usercards_rescan

\n

Re-check everyone and refresh the user cards. Also repairs Roles/RoE/nickname claims from the live reaction messages, and re-opens any missing nickname reviews.

\n\n

Usage

\n
/usercards_rescan
\n\n\n\n

What it does

\n\n", "details_html": "

/usercards_rescan — Reconcile & refresh all cards

\n

One-shot maintenance pass that makes the server’s user cards match reality.

\n\n

Access

\n\n\n

What it fixes

\n
    \n
  1. Rules / RoE agreement\n \n
  2. \n
  3. Nickname claim & reviews\n \n
  4. \n
  5. User cards\n \n
  6. \n
\n\n

Expected output

\n

The command replies (ephemeral) with counts like:

\n
Reconciled from messages. Changes — Rules: 3, RoE: 2, Nickname (added): 1, Nickname (removed): 0. Refreshed cards for 154 members.
\n\n

Setup notes

\n\n\n

Tips

\n\n" } }