MagnoliaBot

How it works

Last updated: 6/14/2026

MagnoliaBot is built around a handful of precise concepts. Once they click, every command makes sense.

The core concepts

  • Event — a tournament as a global fact: a name, a date, and an RK9 pairings URL. An Event exists once and is shared across every server, so its RK9 page is scraped a single time per cycle no matter how many servers follow it.
  • Subscriptionyour server's interest in an Event: which channel its round posts go to. Subscribing watches every registered player in your server who has an RK9 name — there is no per-event roster to maintain.
  • Player — someone tracked on RK9, registered to your server. The display name must match the player's RK9 name (without the [US]-style country suffix); only players with an RK9 name are watched.
  • Round — a single pairing cycle (round 1, round 2, …) published to RK9. The watcher detects when a new round appears.

The watcher loop

While an Event is in its watch window (a few days around its date) and has at least one Subscription, the bot scrapes its RK9 page roughly every two minutes. For each subscribing server it posts one message per round in that server's channel, filtered to that server's players, and edits it live as results land. When the next round begins, the previous round's post gets one final edit and is locked — RK9 only exposes results for the active round, so a finished round can never change again.

A tracked player's match moves through three states, shown right in the post:

  • Unreported — no result yet.
  • Win Submitted (W?) — a player reported a win, pending confirmation.
  • Confirmed (W) — RK9 has marked the winner.
The database is the sole source of truth for what to watch. If it's unavailable, the watcher does nothing and logs the outage — there is no hardcoded fallback, because subscriptions (including their destination channels) only exist in the database.

Who can do what

Three permission tiers keep shared and private data separate:

TierWhoWhat they manage
Everyoneany memberself-registration, read-only views
Server Adminanyone with Discord's Administrator permissiontheir server's players, seasons, victory points, subscriptions, AI settings
Super Admina bot-wide role across all serversthe shared global Event catalog

A Super Admin is attached to a Discord user identity and carries the role into every server they share with the bot. You never need to be a Super Admin to use the bot — you subscribe to events they've added, or request new ones.

Getting events into the catalog

Only Super Admins curate the shared Event catalog. If the tournament you want isn't there yet, a server admin requests it by RK9 URL; a Super Admin approves, which validates the URL, creates the Event, and subscribes the requesting server automatically. Event identity is the normalized RK9 URL, so two requests for the same URL resolve to one Event.

AI replies

MagnoliaBot can reply when mentioned, using Google Gemini. This is off by default in every server; a Server Admin opts in with /config ai state:on. Replies are mention-only and capped per server per day.

Data, privacy, and removal

  • Your server's data is private to your server — no other server can see your players, points, or subscriptions.
  • If you remove the bot, your data is kept for a 90-day grace period. Re-invite within that window and everything is restored; after 90 days it is permanently deleted. (Events are shared and are never deleted by this.)
Ready to use it? Head to Add it to your server, or jump to the full Command reference.