Table of Contents Getting Started Plugin System Developer Guide Account & Billing FAQ
Documentation

Everything you need to get started

From setting up your first server to building marketplace plugins — the full reference for owners and developers.

Getting Started

What is MMO Maid?

MMO Maid is a multi-tenant Discord bot platform built for gaming communities. It provides analytics, moderation, voice channel management, and a marketplace where developers can publish and sell custom plugins.

Every server gets its own isolated configuration, data, and plugin settings. Nothing is shared between servers.

Adding the Bot to Your Server

Click "Add to your server" on the home page to invite the shared MMO Maid bot. Once added, visit the Dashboard to select your server and start configuring.

The shared bot is free and includes all 10 built-in plugins. For custom branding and marketplace access, upgrade to a BYO subscription.

Shared Bot vs BYO (Bring Your Own)

Free
Shared Bot
  • Uses the MMO Maid identity (name, avatar)
  • All 10 built-in plugins included
  • Per-server configuration via the dashboard
  • No marketplace plugin access
Paid
BYO Bot
  • Your own bot name, avatar, and token
  • Full marketplace plugin access
  • Sandbox controls for plugin permissions
  • Transferable server slot
  • Priority support

Setting Up a BYO Subscription

  1. Go to Account → + Buy BYO Slot
  2. Choose a plan (Nanny, Mistress, or Governess)
  3. Complete payment via Stripe
  4. Back on the Account page, assign the slot to your server

Configuring Your Custom Bot Token

After assigning a BYO slot to your server:

  1. Create a bot application at Discord Developer Portal
  2. Copy the bot token
  3. Go to Bot Settings in the MMO Maid dashboard
  4. Paste the token and click Set Token
  5. Invite your custom bot to your server using the generated invite link

Plugin System

Built-in Plugins

Every server gets all 10 of these for free. Toggle individual plugins on or off from the dashboard.

Analytics
Messages, voice, members, retention, and channel rankings — with peak-hour heatmaps and leaderboards.
Sentinel
Auto-moderation, word filters, anti-spam, and raid protection with configurable thresholds.
Voice JTC
Join-to-create dynamic voice channels that spawn on join and clean up when empty.
Tickets
Support ticket system with panels, custom forms, transcripts, and staff routing.
Beacon Events
Event scheduling with role-based signups, RSVPs, and reminders.
Group Finder
LFG matchmaking for raids, dungeons, and PvP with an embeddable public widget.
Welcome
Customizable welcome messages, role gating, and onboarding flows for new members.
Announcements
Scheduled posts, cross-channel broadcasts, and patch-note style updates.
Social & Patches
Reaction roles, social commands, and patch threads that auto-archive.
Giveaways
Entry-based giveaways with role requirements, weighted odds, and audit logs.

Marketplace Plugins

The Marketplace is where developers publish custom plugins. BYO subscribers can browse, purchase, and install third-party plugins directly from the dashboard.

Each marketplace plugin runs in a sandboxed Docker container with no direct network access, memory limits, and read-only filesystem. Plugins interact with Discord through a controlled RPC API.

Permissions & Sandbox

When installing a marketplace plugin, you choose which permissions to grant:

  • Capabilities — what the plugin can do (read messages, send messages, manage roles, etc.)
  • Proxy Domains — external URLs the plugin can access through the proxy
  • Privacy Mode — whether the plugin sees message content or only metadata

You can change permissions at any time from the Plugins page.

Developer Guide

Building Plugins

Plugins are Python packages built with the MMO Maid SDK. The SDK provides event handlers, KV storage, Discord API access, and more.

For the full SDK reference — cookbook recipes, capabilities, sandbox guarantees, complete event & method reference — head to the public developer docs.

Plugin SDK Docs
Full developer reference
  • Overview — what a plugin is, how it differs from a self-hosted bot
  • Getting started — quick start, file structure, manifest, lifecycle
  • Cookbook — 15 copy-pasteable recipes (welcome, leaderboards, polls, tickets…)
  • Build — events, slash commands, components, modals, schedules
  • Storage & I/O — KV, SQL, ephemeral, HTTP, metrics, logging
  • Dashboards — manifest mode + iframe mode + style pack
  • Production — error handling, testing, capabilities, sandbox, publish
  • Referencectx attributes, Discord methods, decorators, changelog

Quick start: pip install mmo-maid-sdk, edit a starter zip, upload to the Dev Portal (sign-in required), submit for review.

Submission & Review

All marketplace plugins go through a security and quality review before publishing. The review checks:

  • No malicious code or data exfiltration
  • Proper use of SDK APIs
  • Reasonable resource usage
  • Working functionality as described

Reviews typically complete within 48 hours.

Revenue & Payouts

Developers earn revenue from plugin sales. The platform takes a percentage fee (starting at 30%, decreasing with volume).

  • Stripe handles all payments and payouts automatically
  • 30-day hold period on new sales before funds are released
  • Daily automatic payouts to your connected Stripe account
  • Track earnings, sales, and upcoming payouts in the Earnings dashboard

Account & Billing

BYO Subscription Tiers

BYO subscriptions are priced per server. Each slot covers one Discord server with a custom bot identity. Visit Buy BYO to see current pricing and start a free trial.

Plugin Licenses

Marketplace plugins are licensed per server. When you purchase a plugin, the license is tied to your BYO subscription. If you move your BYO slot to a different server, your plugin licenses move with it.

Manage all your licenses from Account → All Purchased Plugins.

Cancellation & Refunds

You can cancel your BYO subscription at any time from the Account page. When a BYO subscription is cancelled:

  • All plugin licenses tied to that subscription are automatically cancelled
  • Your server reverts to the shared bot
  • Plugin data is retained for 30 days in case you re-subscribe

Plugin refunds can be requested within 7 days of purchase from the plugin's Marketplace page.

Frequently Asked Questions

How do I enable a plugin on my server?

Open the dashboard, pick your server, and go to the Plugins page. Toggle any plugin on or off — the change takes effect immediately, no bot restart needed. Built-in plugins are free; marketplace plugins may require an entitlement before they're available to enable.

What does MMO Maid do?

MMO Maid is a Discord bot management platform built for gaming and community servers. You get 10 built-in plugins out of the box — moderation, analytics, welcome flows, voice channels, giveaways, group finder, scheduled events, ticket support, scheduled announcements, and social-feed alerts — plus a marketplace of third-party plugins. Manage everything from one dashboard, with live config that takes effect in seconds (no bot restart). Use the shared bot for free, or upgrade to BYO and run the same features under your own bot identity.

How do I create my own Discord bot for BYO?

Open the Discord Developer Portal, click New Application, give it a name and avatar, then go to the Bot tab and click Add Bot. Enable the Message Content, Server Members, and Presence intents — MMO Maid needs all three for full plugin coverage. Copy the token (you'll only see it once) and paste it into the dashboard at /account/byo. Done — your custom bot is now controlled by the MMO Maid platform.

How is BYO priced?

BYO is billed per active bot. The base tier covers a single BYO bot on one server; multi-server tiers let one bot manage many servers under one subscription, or multiple bots under one account. Pricing details on the Pricing page. Plugins themselves are not metered separately — built-in plugins are free regardless of mode, and marketplace plugins are billed by their developer per their own pricing.

What does the Analytics plugin do?

Analytics tracks message activity, voice time, member joins/leaves, role rewards, and cohort retention for your server. It powers leaderboards, trend charts, and per-channel drill-downs in the dashboard at /p/analytics/. Counts and timestamps are stored — message content is not.

The bot appears offline in my server. What do I do?

First, check /status — if the platform-wide bot is degraded, you'll see it there. Otherwise: open /bot-manage. For BYO, check the connection status and click Restart Bot if it shows Crashed. For the shared bot, the most common cause is a Discord intent or permission change — re-invite the bot from /servers to refresh its access.

What data does MMO Maid actually store?

Stored: message metadata (timestamps, channel IDs, author IDs — used for analytics counts), member join/leave events, voice-session timestamps, plugin config you save, audit log of admin actions, and billing data. Not stored: message content (unless a plugin explicitly captures it for a feature you enabled — like ticket transcripts, where it's scoped to the ticket channel and tagged with retention). Each tenant's data is isolated by discord_srv_id at the database level.

How do I create a marketplace plugin?

Go to /dev/plugins and click New Plugin. You'll be asked for an id (lowercase, underscore-separated, becomes the URL slug), a display name, and a description. After creation, the plugin starts in draft state — you upload an artifact (zip), and the static scanner runs over it. Once you submit a version for review, our team checks it and either publishes or flags it back to you with notes.

What is the marketplace review queue?

Every submitted version lands in our review queue before going live. We check: static-scan findings (no obvious malware/secret-stealing), manifest accuracy (capabilities match usage), version delta (what changed since the last published version), and a quick smoke install. Most reviews complete within 24-72 hours. You'll get a dashboard notification when reviewed.

How do I set up payouts as a plugin developer?

Open /dev/payouts and click Connect with Stripe. You'll be redirected to Stripe Connect's standard onboarding (business details, ID verification, bank account for payouts). Once verified, every paid install of your plugin sends earnings to your Stripe account on the standard payout schedule. We take a platform fee (current rate displayed on the payouts page); the rest is yours.

What are the proxy:http quotas and can they be raised?

Default: 60 outbound HTTP requests per minute per plugin, with a per-tenant token bucket. Bursts up to 2× burn through tokens then throttle to the steady rate. If you have a legitimate reason to need more (e.g. a plugin that polls a high-volume webhook), request an override at /dev/plugins/<id>/quota — staff can raise it per-plugin within sane bounds. Hard ceiling is 1000/minute regardless of override.

How do I uninstall a marketplace plugin?

Open /plugins and click the marketplace plugin's row. Hit Uninstall. The plugin's container is stopped and removed within a minute. Plugin data is retained for 30 days in case you reinstall (subscription re-activates with config intact). After 30 days, the plugin's database schema is dropped. Subscriptions to paid plugins must be cancelled separately at /account/billing to stop charges.

How do I add MMO Maid to my Discord server?

Open the dashboard at / and click Add to Discord (or go straight to /servers after logging in). You'll be redirected to Discord's standard authorize page. Pick the server, approve the listed permissions, and you'll be sent back to the dashboard with the bot already in your server. Total time: under a minute. You must be the server owner or have Manage Server permission for the server you're inviting the bot to.

Where do I paste my BYO bot token?

Open /account/byo (Account → Bring Your Own Bot). Paste the token from the Discord Developer Portal into the Bot Token field and click Save. Tokens are encrypted at rest and never displayed back to you in plaintext after save. If you ever leak or rotate the token, click Rotate Token to swap in a new one — the old one is invalidated immediately.

What happens to my BYO bot if my subscription lapses?

On a failed payment, Stripe retries automatically for ~14 days. During retry, your BYO stays online. If retries fail and the subscription cancels, your BYO is gracefully stopped: the bot leaves your server, but all plugin config, analytics, tickets, and data are retained. Re-subscribe and your BYO comes back up exactly where it left off. The shared bot can be swapped in temporarily as a fallback at no charge.

How do I enable the Analytics plugin?

From /plugins, toggle Analytics on. Data starts collecting immediately for new messages and voice sessions. Historical Discord activity (before the toggle) can be back-filled by running the Discord history import from the Analytics dashboard's settings tab.

Slash commands aren't appearing or are duplicated.

Discord caches slash commands per-guild for up to an hour. If you toggled a plugin recently, wait — they'll appear automatically. To force-refresh, run /admin sync (server owner only). If commands are duplicated (e.g. you see two /ticket commands), one is from a stale registration; /admin sync cleans them up. Members can also try Ctrl+R in the Discord client to reload its command cache.

How long is my data retained?

Default retention windows: analytics events kept 12 months then aggregated; audit logs kept 13 months; ticket transcripts kept indefinitely until you delete them; billing/invoice data kept 7 years (legal requirement). If your subscription cancels and you don't re-subscribe within 30 days, the bot is removed from the server but data is retained for 90 days before scheduled deletion. Custom retention windows can be configured per plugin where supported.

What's required in a plugin manifest?

The metadata dict in your plugin.py requires id, name, version, description, and capabilities_required (list of strings). Optional: slash_commands (auto-detected from your code), proxy_domains_requested (HTTP allow-list), and kv_namespaces. Any capability you actually use will be auto-added to capabilities_required on artifact upload — this prevents "forgot to declare" runtime errors. See the plugin development docs.

What does the static scanner check?

AST-based detection of: dynamic code execution (eval, exec, compile), foreign function interface calls (ctypes, cffi), raw network access (bypassing the proxy capability), self-modifying code, sandbox-escape patterns, anti-debug indicators, and secret-stealing patterns (env-vars + file paths). Manifest cross-ref: every capability you use must be declared, every domain you call must be in proxy_domains_requested. Findings are scored 0-100; high-score versions auto-flag for human review.

When do I get paid for marketplace sales?

Stripe Connect's default schedule is rolling 7-day for card payments — funds settle from your balance to your bank 7 days after the customer pays. You can adjust to 2-day or manual payouts in your Stripe dashboard. Refunds (within the refund window) are deducted from your balance before payout. Earnings overview at /dev/payouts.

What are the marketplace plugin sandbox limits?

Each marketplace plugin runs in a Docker container with: 256MB RAM soft limit (kill at 512MB), 0.5 CPU core, 0 (HTTP only via proxy capability), read-only filesystem (writable scratch at /tmp, 100MB), UID 65534 (no root), no kernel privileges, no ability to read environment variables outside the SDK's scoped namespace. CPU and memory throttle gracefully — expensive plugins slow down rather than dying.

How do I request a refund for a plugin I bought?

Within 14 days of purchase: open /account/billing, find the charge, click Request Refund. You'll be asked for a brief reason (helps the developer improve their plugin). Approved refunds process via Stripe within 5-10 business days. Subscription plugins can also be cancelled at any time (no refund — access continues until period end). Refund disputes are handled case-by-case by our team.

What permissions and intents does the bot need?

The default invite asks for the standard permission set most plugins need: Manage Channels, Manage Roles, Send Messages, Embed Links, Read Message History, and Connect/Move Members (for voice plugins). Discord intents (message content, guild members, presences) are configured at the bot level — you don't need to enable anything in your server settings. If a plugin needs something extra, it'll tell you in its config page rather than failing silently.

Should I use BYO or the shared bot?

Shared bot is best when you want zero setup and don't care about the bot's identity — it's free and ready to go. BYO is best when you want a custom name, avatar, and presence (e.g. branded for your community), need to keep status messages or activity tied to your server, or run multiple servers under one subscription. BYO is a paid feature; the shared bot is free. Feature parity is identical — every plugin works on both.

What are the common config options for Analytics?

Most servers leave defaults. The few knobs that matter: Excluded channels (skip bots/staff channels from message counts), Voice idle threshold (how long before a member is considered AFK), and Role reward triggers (auto-grant a role when a member crosses an XP/message threshold). All on the Analytics settings page.

A plugin won't enable — the toggle bounces back off.

The toggle bouncing means the plugin failed validation on enable. Check the toast/error banner at the top of /plugins — common causes: (1) marketplace plugin without an active entitlement, (2) plugin requires a capability your tier doesn't grant, (3) plugin migration failed (rare; surfaces as a server-side error). Open the browser console for the exact error or contact support with the plugin name + your server ID.

How do I request data deletion (GDPR)?

Open /accountPrivacy & Data and click Request Account Deletion. Your account, OAuth tokens, any BYO bot tokens, and personal audit-log entries are scrubbed within 30 days. Server-scoped data (analytics, tickets, audit logs that don't reference you personally) remains under the server owner's control. For server-level deletion, the server owner uses the same flow on the server settings page.

Why do I see auto-added capabilities I didn't declare?

On artifact upload, the static scanner walks your code and detects capability usage (e.g. proxy.request() implies proxy:http; kv.set() implies storage:kv). Detected capabilities are unioned with whatever you declared and saved as the effective set. This means you can't accidentally ship a version that fails at runtime because you forgot to list a capability. The diff (what you declared vs what was detected) is shown on the version page.

Why was my version flagged?

Open the version page — you'll see the scanner's findings list with severity per finding. Common reasons: (1) you used a capability without declaring it (auto-derived now, but pre-fix versions still flag); (2) a regex matched something that looks like a hard-coded secret (often a false positive in tests/fixtures — add a comment explaining and resubmit); (3) the artifact references a domain not in proxy_domains_requested. Fix and resubmit; review usually clears within a day.

What's the refund policy for paid plugins?

Customers can request a refund within 14 days of purchase for one-time-purchase plugins, or cancel any time for subscription plugins (cancel-at-period-end). Approved refunds are deducted from your developer balance automatically. Repeat refund requests on the same plugin trigger a manual review by our team — patterns of refund abuse can result in customer-side restrictions, and patterns of poor plugin quality can result in suspension.

What's the difference between KV and SQL storage scopes?

KV (kv.get/set/delete) — small key-value items, low-latency, scoped to (plugin, server). Best for config-like data, short flags, deduplication tokens. SQL (sql.execute) — full Postgres queries inside a per-plugin schema, scoped to (plugin, server). Best for structured data with indexes/joins. Both are isolated per tenant — you can never read another server's data. Capability names: storage:kv and storage:sql.

My payment failed — what happens to my subscription?

Stripe retries failed payments automatically over ~14 days (4 retry attempts on a smart schedule). During retry, your subscription stays active and your bot/plugins keep working. You'll get email notifications from Stripe at each retry. If all retries fail, the subscription cancels and your bot is gracefully stopped — but all data and config is retained for 90 days. Update your payment method at /account/billing to resume.

What happens if a plugin I use gets suspended?

If a plugin is suspended (security finding, policy violation, developer abandonment), it's frozen — existing installs keep running on the last known-good version, but no new installs and no auto-updates. You'll get a dashboard notification with the suspension reason. If the suspension is for security reasons, the plugin may be force-disabled server-side instead — in that case, you'll be offered a full refund regardless of the 14-day window.

How do I log into the dashboard?

Click Log in with Discord on any page, or go straight to /login. You'll be sent through Discord OAuth — approve the basic profile + guilds scope and you're in. We never see your Discord password; OAuth only gives us your user ID, username, avatar, and the list of servers you can manage. If 2FA is enabled on your account, the dashboard will prompt for your TOTP code on each new session.

How do I switch a server between BYO and shared mode?

On the server's Bot Manage page, use the Bot Mode selector. Switching from shared → BYO requires an active BYO subscription and a saved token. Switching BYO → shared stops your custom bot, removes it from the server, and the shared bot takes over. Plugin config, audit logs, and member data all stay intact — only the bot identity changes.

What permissions does Analytics need?

Analytics requires no extra Discord permissions beyond the default invite — it observes events the bot already receives. It does need the Server Members intent to track joins/leaves (enabled at the bot level, not per-server).

Voice JTC: members join the lobby but no channel is created.

Three causes, most common first: (1) the bot doesn't have Manage Channels at the category level (server-level isn't enough — Discord enforces category overrides); (2) the category is at Discord's 50-channel cap — delete some old temp channels; (3) the lobby channel was moved out of the configured category. The Voice JTC settings page surfaces all three with red status pills.

Who can see my server's audit log?

Audit logs are visible to anyone with the owner or admin role in the dashboard for that server. Other roles (manager, staff, viewer) see scoped subsets — staff see their own actions, viewers see nothing. Each plugin also has its own scoped audit log on the plugin page (e.g. ticket actions, sentinel cases). Platform staff have no default access — they only see audit logs when you grant support access via a time-bounded ticket.

Can I link my plugin to a GitHub repo?

Yes. On a plugin's settings page, under GitHub Integration, paste a public repo URL (or a private one + a fine-grained PAT with read access). New tagged releases trigger an automatic version draft — the artifact is fetched, scanned, and queued for your review (or auto-published if you're a trusted dev). Most marketplace devs use this to push from git tag v1.2.3 straight to the marketplace.

How does auto-update work for installed plugins?

Each install has an auto-update preference (off by default for paid plugins, on by default for free plugins). When you publish a new version, installs with auto-update on switch within ~10 minutes. Installs with auto-update off stay pinned until the server owner manually upgrades from the plugin's marketplace page. Major-version bumps (2.x.x3.x.x) require manual approval regardless of the preference.

How do I configure paid plans for my plugin?

On a plugin's settings page, open the Plans tab. You can offer: free (no charge), one-time purchase (single payment for permanent install), or subscription (monthly/annual recurring). Each plan can gate specific feature flags inside your plugin via the SDK's entitlements.has("feature_x") check — this lets you ship a single artifact and unlock features per-plan. Pricing is set in USD; per-currency conversion is handled by Stripe.

How do I debug a plugin that's crashing?

Open /dev/plugins/<id>/logs — you'll see live stdout/stderr from the sandbox plus structured error events with stack traces. Common crashes: (1) capability missing (the SDK raises CapabilityError — declare it in the manifest); (2) memory limit exceeded (refactor or request a quota override); (3) unhandled exception in an event handler. The SDK auto-restarts the container after crashes with exponential backoff.

Where do I find my invoices?

/account/billing lists every invoice with download links (PDF). For self-service updates (payment method, billing address, tax ID), click Manage Subscription to open the Stripe customer portal. Stripe also emails you each invoice automatically when payment succeeds; check the address Stripe has on file if you're not receiving them.

Where do I find marketplace plugins?

Open /marketplace. Browse by category (moderation, fun, utility, integrations, etc.), price (free / one-time / subscription), or rating. Each plugin page shows the developer, description, screenshots, capabilities required, version history, and reviews. Click Install on server and pick which of your servers to install it to — the plugin is configured per-server from there.

How do I pick which server I'm managing?

Go to /servers and click the server you want to manage. From that point on, every plugin page (Plugins, Access, Logs, etc.) operates against that server until you switch. You can switch any time by reopening the server picker — your selection is stored in your session, not globally, so two browser tabs can manage two different servers in parallel.

How do I tell if my BYO bot is healthy?

/bot-manage shows the live status: Online, Connecting, Restarting, or Crashed. Behind the scenes the orchestrator restarts crashed BYO instances automatically with exponential backoff. The /status page also shows aggregate uptime per shard. If your BYO has been crash-looping for >5 minutes, you'll get an in-dashboard warning with a link to the relevant logs.

Why are my message counts lower than I expected?

Three common causes: (1) the Excluded channels list includes channels you didn't realize were excluded — check the settings tab; (2) bot messages are excluded by default — if you actually want them, enable Count bot messages; (3) historical messages from before the plugin was enabled are not retroactive unless you run the Discord history import from the settings tab.

I'm getting a role-hierarchy error.

Discord only lets a bot assign roles below its own role in the role list. Open Server Settings → Roles, drag the bot's role above any role it needs to manage (welcome auto-roles, sentinel timeout-replacement roles, ticket staff-team roles), and save. Re-run the action — the error should clear. The relevant plugin pages flag mis-ordered roles in red.

Can I export all the data MMO Maid has on my server?

Yes. Open the server settings page → Privacy & DataExport Server Data. You'll get a downloadable ZIP containing JSON files for analytics, audit logs, plugin config, ticket transcripts, and member metadata. Generation takes a few minutes for large servers; you'll get a notification when ready. The ZIP link expires after 7 days for security.

How do I link a private repo with a PAT?

On the plugin's GitHub Integration page, choose Private repository. Generate a fine-grained Personal Access Token scoped only to the plugin's repository, with Contents: read and Metadata: read permissions. Paste the PAT — it's encrypted at rest and never displayed back. Test the link by clicking Fetch latest release; if it works, you're done.

What is trusted-dev auto-publish?

After a developer has 3+ versions cleanly published with no security flags and ≥30 days of marketplace history, we may grant trusted dev status. Trusted devs can skip the review queue and publish directly — submissions go straight from draft → published. The static scanner still runs and high-severity findings still block, but human review is optional. Trusted-dev status can be revoked for any policy violation.

How do I test my plugin without publishing?

On a plugin's version page, click Install on my server — this is a dev install, free, only available to the plugin's owner(s), and only on servers you manage. You can iterate on the artifact, re-upload, and the dev install auto-refreshes. Dev installs don't appear on the public marketplace, can't be installed by other servers, and skip the review queue. Switch to a published version when you're ready to ship.

How does multi-server pricing work?

Multi-server tiers let one BYO subscription manage many servers with a single bot identity (or multiple bots, depending on tier). The base tier is one bot / one server; tiers add server slots. You pick which servers consume slots from /account/byo. Marketplace plugins are licensed per-server unless the developer offers a multi-server plan — that's a per-plugin choice.

Why does one plugin have multiple price tiers?

Developers can offer multiple plans for a single plugin (e.g. free with limited features, paid for advanced ones). Each plan unlocks a different set of feature flags inside the plugin via the SDK's entitlement check. You can switch plans any time at /account/billing. Switching mid-period prorates — Stripe credits the unused portion of the current plan toward the new one.

Where do I find the controls for each feature?

Every plugin has its own page under /p/<plugin>/ — for example, the Tickets plugin lives at /p/tickets/, Sentinel moderation at /p/sentinel/, Voice Channels at /p/voice_jtc/, and so on. The main Plugins page is the on/off toggle list — once a plugin is enabled, its dedicated page is where the real config happens. The sidebar surfaces enabled plugins after toggling.

Can I restart my BYO bot from the dashboard?

Yes. Open /bot-manage and click Restart Bot. The orchestrator stops the running process, waits for a clean exit, and brings up a fresh instance with the latest config and plugin set. Restart usually completes in 5-10 seconds. Plugin state, queues, and member data are unaffected — restart is safe to run any time.

What does the Scheduled Announcements plugin do?

Announcements lets you schedule one-off and recurring messages (daily, weekly, monthly) to any channel. Timezone-aware with graceful catch-up if the bot was offline at the scheduled fire time. Manage via /p/announcements/ or the /announce slash commands.

Plugins say they need message content but I never see them parsing it.

MMO Maid uses the Message Content intent for sentinel automod, analytics keyword tracking, and ticket transcripts. Without the intent enabled at the bot application level, those features fall back to event-only detection (joins, reactions) and silently skip content-based rules. For the shared bot, this is already enabled. For BYO, enable it in the Discord Developer Portal → your app → Bot tab.

Will my server members' data stay private?

Yes. Each server's data is isolated at the database level — no cross-server leakage. We store only what's needed to deliver each enabled feature: message metadata (counts, timestamps), member events, plugin config. Message content is not stored unless a plugin you enable specifically needs it (e.g. ticket transcripts). Marketplace plugins run in sandboxed Docker containers with no network access and no ability to read other servers' data. See the Privacy page for full details.

What's the version lifecycle: draft → published?

Draft — you uploaded an artifact (or GitHub fetched it). Static scan runs. You can preview, edit metadata, and test-install on your own server (dev-installs are free). Submitted — you click Submit for Review. Our team checks the scan + manifest. Published — version goes live on the marketplace; existing installs auto-update if they opted in. Flagged — submission was rejected with notes; address and resubmit. Trusted devs skip the review step and go draft → published directly.

What happens when my free trial ends?

Paid tiers include a 7-day free trial. At the end of the trial, the payment method on file is charged for the first billing period. If you don't want to be charged, cancel before the trial ends — go to /account/billingCancel Subscription. Cancelling during the trial keeps you on the free tier with no charge. There's no penalty; you can re-trial after a 30-day cooldown.

What happens the first time I add the bot?

The bot joins your server and registers its slash commands (takes up to an hour for Discord to propagate). You're auto-granted the owner role inside the dashboard, plugin config defaults are seeded, and you're handed the server picker. Nothing is enabled yet — no welcome messages, no moderation, no surprises. You opt into each plugin from the Plugins page when you're ready.

Can I transfer a BYO subscription between servers?

Yes — open /account/byo and use Reassign Server. Pick the new target server (you must own it or have Manage Server). The bot will leave the old server, join the new one, and resume with the new server's config. Old-server data stays archived in case you reassign back. There's no charge for reassignment, and no downtime beyond the bot's join/leave latency (~30 seconds).

How do I enable the Scheduled Announcements plugin?

Toggle on from /plugins. Click New Announcement in the plugin dashboard, pick a channel, write the message (markdown + embeds supported), and set the schedule. Or use /announce now channel:#general message:... for a quick fire-and-forget post.

I'm seeing rate-limit warnings or 429 errors.

Discord rate-limits bots per-guild and per-route. MMO Maid's action queue smooths this automatically — bursts pause instead of failing. If you're seeing user-facing rate-limit messages, you've usually triggered a plugin loop (e.g. an automod rule that fires on its own warn message). Check the plugin's audit log; raise the rule's cooldown; add bot/staff exclusions to the rule.

What happens when I downgrade my subscription?

Downgrades take effect at the end of the current billing period — you keep your current tier's features until then with no proration. After the switch, BYO bots in excess of your new tier's slot count are paused (data retained), and any plugins gated to higher tiers' capabilities switch to read-only mode. Re-upgrading restores everything instantly. No data is lost on downgrade.

How long does setup take?

Inviting the bot and enabling your first plugins takes about 5 minutes. Most plugins ship with sensible defaults — toggle on, pick a channel or two, you're done. The setup wizards (welcome auto-setup, sentinel auto-setup, ticket panels) are 2-3 clicks each. Tuning advanced rules — automod conditions, role-reward thresholds, multi-team ticket routing — can take longer, but you can do all that incrementally.

Can I run my own bot identity?

Yes — that's what BYO (Bring Your Own) is for. You create a bot in the Discord Developer Portal, paste the token into MMO Maid, and your custom bot runs every plugin under its own name and avatar. Same features as the shared bot, your branding. BYO is a paid feature; see the Pricing page for tier details.

What are the common config options for Scheduled Announcements?

Recurrence is configured per announcement. Choices: once (fire at a specific datetime), daily (HH:MM each day), weekly (HH:MM on selected weekdays), or monthly (HH:MM on a specific day-of-month, 1-28). All schedules are interpreted in the timezone you set in Server Settings.

I accidentally kicked the bot — how do I get my data back?

Nothing is lost. Re-invite the bot from /servers (your server still appears as a managed server). All plugin config, audit logs, analytics, tickets, and member data remain in place. Once the bot rejoins, slash commands re-register within an hour and every plugin resumes exactly where it left off. Re-invite within 30 days to keep all data; after that, idle servers are scheduled for cleanup.

What permissions does Scheduled Announcements need?

Capability: discord:send_message. The bot needs Send Messages in the target channel, plus Embed Links if the announcement uses embeds. The plugin will skip and log a warning if either permission is missing rather than crashing.

My weekly announcement didn't fire on the right day. Why?

Weekly schedules use ISO weekday numbering: 0 = Monday, 6 = Sunday. If you picked the wrong index, the announcement fires on the wrong day. Also confirm the server timezone matches what you expect — the dashboard shows the next-fire preview in your local TZ, but the schedule is stored against the server's configured TZ.

What does the Beacon Events plugin do?

Beacon schedules guild events (raids, guild nights, PvP sessions) with class/spec slot signups, waitlists, recurring events, polls, reputation tracking, rich embeds, and auto-reminders. Manage at /p/beacon/ or use /beacon create, /beacon list, /beacon cancel.

How do I enable the Beacon Events plugin?

Toggle on from /plugins. Pick an announcement channel in the Beacon settings (where event embeds get posted), then run /beacon create from any channel — a modal walks you through name, time, role slots, and reminder timing.

What are the common config options for Beacon Events?

Common settings: Announcement channel (where embeds post), Reminder lead time (default 30 min before event), Default role slots (Tank/Healer/DPS/Flex counts), Allow waitlist (when slots fill), and Reputation tracking (mark no-shows; track reliability over time).

What permissions does Beacon Events need?

Capability: discord:send_message. The bot needs Send Messages + Embed Links in the announcement channel and any channel where event embeds get posted. No special role permissions required.

Members can't sign up for my event — what's wrong?

Most likely the bot can't see reactions in that channel, or the embed is too old for Discord to dispatch reaction events. Check that the bot has Add Reactions, Read Message History, and Use External Emojis in the announcement channel. Beacon switches to button-based signup automatically for events older than 14 days.

What does the Giveaways plugin do?

Giveaway runs random-winner giveaways with weighted entries, prize tiers, requirement gates (account age, server tenure, required/excluded roles, message count), auto-end scheduling, reroll, and a public animated spectator page at /g/<public_id> for live drawings. Manage at /p/giveaways/.

How do I enable the Giveaways plugin?

Toggle on from /plugins. Run /giveaway create for a quick start, or open /p/giveaways/ for the full editor (requirement gates, weighted entries, prize tiers, public page settings).

What are the common config options for Giveaways?

Common knobs: Required roles / excluded roles, Account age minimum (anti-alt), Server tenure minimum, Booster multiplier (Nitro boosters get N× entries), Per-role multipliers, Prize tiers (top 3 get prize A, next 5 get prize B), and Dedup window (block farming across multiple giveaways).

What permissions does Giveaways need?

Capability: discord:send_message. Plus Add Reactions + Manage Messages in the giveaway channel for reaction-entry giveaways. Button-entry giveaways need only Send Messages + Embed Links.

My giveaway ended but didn't pick winners — why?

Two common causes: (1) the requirement gates filtered out every entrant — check the eligibility audit on the giveaway detail page; (2) the bot lost permission to post in the giveaway channel between create and end. Check the audit log on the detail page; you can manually re-trigger the draw with /giveaway end <id> once permissions are restored.

What does the Group Finder plugin do?

Group Finder is instant LFG (Looking For Group) for MMO/gaming servers — role-based slots, activity presets, difficulty tags, cross-server discovery, and a dashboard hub at /p/group_finder/. Members run /group create, /group quick, /group browse, /group join.

How do I enable the Group Finder plugin?

Toggle on from /plugins, then visit /p/group_finder/templates to configure activity presets (e.g. "Mythic+ Dungeon", "Ranked LFG", "Raid Night"). Members can immediately start creating groups via /group create or the in-dashboard wizard.

What are the common config options for Group Finder?

Common settings: Templates (activity presets — name, default role slots, difficulty tags, expected duration), Cross-server discovery (allow your groups to appear on the public LFG board at /p/group_finder/board), Saved alerts (members get pinged when matching groups open up), and Auto-close stale groups (close after N hours with no activity).

What permissions does Group Finder need?

Capability: discord:send_message. The bot needs Send Messages + Embed Links in the channel where group listings get posted. No special role/channel-management permissions are required.

Why don't my members see groups from other servers?

Cross-server discovery is opt-in per server. Open the Group Finder settings page and enable Allow listings on the public LFG board. Once on, your groups appear at /p/group_finder/board and can be joined by members of any server with the plugin enabled. Channel posts remain server-local.

What does the Sentinel Moderation plugin do?

Sentinel is the moderation control center: an automod engine with 13 conditions (mass mention, link spam, fast-talker, capslock, invite spam, etc.), warning points, rule templates, mod insights dashboard, auto-setup wizard, raid protection, and full case management. Manage at /p/sentinel/.

How do I enable the Sentinel Moderation plugin?

Toggle on from /plugins. Click Auto-Setup in the Sentinel dashboard for one-click sane defaults (block obvious spam, warn on caps, raid-mode on join floods). For fine-tuned rules, open the Rules tab and add conditions + actions individually.

What are the common config options for Sentinel Moderation?

Per-rule knobs: Conditions (any of 13 types — mass mention threshold, link domain allow/block, message rate, etc.), Actions (delete message, warn, timeout, kick, ban), Warn points (cumulative; configurable thresholds trigger escalation), Excluded roles/channels, and Cooldowns to prevent action storms.

What permissions does Sentinel Moderation need?

Capability: discord:send_message. Sentinel also needs Manage Messages (delete spam), Moderate Members (timeout), Kick Members, and Ban Members depending on which actions you've enabled. Missing permissions are flagged on the Sentinel dashboard with a fix button.

Sentinel is acting on the wrong messages — how do I tune it?

Check the Mod Insights tab — it shows every rule that fired in the last 24 hours, who triggered it, and what action ran. False positives almost always come from too-aggressive thresholds (e.g. caps-lock at 30%) or missing role exclusions (e.g. moderators triggering link-spam rules). Add the offending role to the rule's Excluded roles or raise the threshold.

What does the Social & Patches plugin do?

Social posts new content to Discord when feeds you subscribe to publish: Twitch live alerts, YouTube uploads, RSS, Patreon posts, Steam News, Riot/Apex/Fortnite/Minecraft patch notes. Curated game catalog for one-click setup. Manage at /p/social/.

How do I enable the Social & Patches plugin?

Toggle on from /plugins, then click New Subscription in the plugin dashboard. Pick a source type (Twitch, YouTube, RSS, etc.), enter the channel/URL/feed, pick the Discord channel to post to, and (optionally) add a role-ping. Polling starts on save; new items post within a few minutes of publication.

What are the common config options for Social & Patches?

Per-subscription: Source type, Source ref (Twitch username / YouTube channel ID / RSS URL / Steam app ID), Target channel, Role ping (optional), Filters (e.g. RSS title regex, YouTube duration min). Polling interval is platform-managed (~5 min for most sources).

What permissions does Social & Patches need?

Capability: discord:send_message. Embed Links required for rich previews; Mention Everyone if you want to ping a role with @everyone permissions (rare; most use a subscriber role instead).

My Twitch alert didn't fire when the streamer went live.

Two common causes: (1) the streamer toggled their stream as unlisted or private — Twitch's API hides those from polling; (2) Twitch's webhook had a brief outage. Polling catches up within ~5 min normally. If it's been longer, check the subscription's last poll timestamp on the settings page — if it's stale, the channel name is likely misspelled.

What does the Tickets plugin do?

Tickets is a full Discord-native support operations system: panels, intake forms, staff teams, SLA policies, private channels/threads, claim workflows, internal notes, transcripts, CSAT surveys, analytics, and audit logs. Members use /ticket open; staff use the dashboard at /p/tickets/.

How do I enable the Tickets plugin?

Toggle on from /plugins. Build your first panel at /p/tickets/panels — pick a category for ticket channels, an intake form, and a staff team. Use /tickets panel send to post the panel embed in a public channel; members click the button to open a ticket.

What are the common config options for Tickets?

Per-panel: Category (where ticket channels are created), Channel template (ticket-{user} etc.), Intake form (custom fields), Staff team (who's notified + can claim), SLA policy (time-to-first-response targets), Auto-close after inactivity, and CSAT survey on close.

What permissions does Tickets need?

Capabilities: discord:send_message, discord:manage_channels. The bot needs Manage Channels (creates per-ticket channels), Manage Permissions (locks tickets to staff + opener), Send Messages, and Embed Links. Missing perms are flagged on the Tickets dashboard.

Tickets aren't being created when members click the panel button.

Almost always permissions on the ticket category. The bot needs Manage Channels in the category, not just at the server level — Discord enforces category-level overrides. Check the category's permissions tab and grant Manage Channels + Manage Permissions to the bot's role.

What does the Join-to-Create Voice Channels plugin do?

Voice JTC automatically creates a personal voice channel when a member joins a designated lobby voice channel, and deletes it when they leave. Members get private temp channels without staff overhead. Configure at /p/voice_jtc/.

How do I enable the Join-to-Create Voice Channels plugin?

Toggle on from /plugins, then visit /p/voice_jtc/. Pick (or auto-create) a Lobby channel + Category for spawned channels. Save. Tell your members to join the lobby — a personalized voice channel spawns instantly.

What are the common config options for Join-to-Create Voice Channels?

Settings: Lobby channel, Category for spawned channels, Name template (default 🎧 {display_name}), User limit, Bitrate, Delete when empty (default on), and Auto-create category/lobby (the dashboard can create them for you).

What permissions does Join-to-Create Voice Channels need?

Capability: discord:manage_channels. The bot needs Manage Channels + Move Members in the category. Connect is optional — the bot doesn't actually join the voice channels, just creates/deletes them.

Members joining the lobby don't get a temp channel — what's wrong?

Three common causes: (1) the bot doesn't have Manage Channels at the category level — server-level isn't enough; (2) the category is at Discord's 50-channel cap; (3) the lobby channel was deleted or moved out of the configured category. The plugin dashboard surfaces all three with red status pills.

What does the Welcome plugin do?

Welcome greets new members with custom messages, image cards, auto-roles, DMs, milestone celebrations (100th member, 1000th, etc.), welcome quests, first-message celebrations, server highlights, and smart channel recommendations. Manage at /p/welcome/.

How do I enable the Welcome plugin?

Toggle on from /plugins, then run the auto-setup wizard at /p/welcome/setup for sensible defaults (welcome channel + a default message + a welcome card). For fine-tuned setup, open /p/welcome/settings and configure each subsystem individually.

What are the common config options for Welcome?

Subsystems: Welcome message (markdown + variables like {user}, {guild}, {member_count}), Goodbye message, Welcome card (image + name + member-#), Auto-roles (grant on join), DM welcome (sent to the new member), Milestones (100th/1000th member announcements), and Welcome quest (gamified onboarding).

What permissions does Welcome need?

Capabilities: discord:send_message, discord:manage_roles. Manage Roles is needed for auto-roles. The bot's role must be above any role it's assigning — Discord enforces role hierarchy. The plugin shows a clear warning when this is misconfigured.

Auto-roles aren't being granted to new members.

Discord's role hierarchy: the bot can only assign roles below its own in the role list. Open Server Settings → Roles, drag the bot's role above the auto-role, and save. The plugin's settings page shows the bot's current role position and flags any auto-roles that are above it with a red Above bot badge.

Still have questions? Hop into our Discord — we usually respond in minutes.
Join Discord