Side project · Community bot for [THE FACILITY] · 2021–present

A.R.I.A. —
the bot that's run Kyle Hill's Discord
since 2021.

A.R.I.A. is a Python Discord bot I built and have maintained for nearly five years for Kyle Hill's community server, [THE FACILITY]. Hybrid slash + prefix commands, MongoDB-backed profiles & XP, NASA APOD and Wolfram Alpha integrations, an interactive muffin generator with buttons and dropdowns, a containment minigame, daily space images — and a Heroku CD pipeline behind it all.

A.R.I.A. — glitched, neon-tinted portrait used as the bot's avatar in [THE FACILITY]
01

What it does

A community bot built for a science-communication audience. It earns its place by being useful, on-theme, and fun to interact with.

Engagement

Interactive Muffin System

Buttons · Dropdowns · Ephemeral UI

The community's signature gag: an ephemeral, customizable muffin generator built on Discord's modern UI components. Users pick flavor, topping, and presentation through buttons and selects; the bot composes and delivers the result without spamming the channel.

  • discord.py UI
  • Pillow
  • Ephemeral flows
Education

Science commands

NASA APOD · Wolfram Alpha

On-demand astronomy and computation. /spacepost triggers the daily space image with a fallback chain across NASA's Astronomy Picture of the Day and an ESA RSS pool — persisted to MongoDB so the same image never runs twice. Wolfram Alpha integration handles ad-hoc science queries.

  • NASA APOD
  • ESA RSS
  • Wolfram Alpha
  • Dedup persistence
Game

Kevin containment

Persistent state · Community lore

An interactive minigame riffing on the show's running bits. Game state persists across bot restarts so a community-wide session can stretch across days without losing progress.

Identity

XP, profiles & badges

MongoDB-backed

User profiles, leveling, and badges to recognize active members. ETL helpers exist for migrating XP and badges between environments — because a community of this size actually needs that.

  • MongoDB
  • Aggregation pipelines
  • ETL scripts
Operations

Moderation tooling

For mods, by request

Community management features built to support the moderator team — user lookups, role workflows, and the unsexy operational glue that keeps a server of this scale livable.

DX

Hybrid commands

Slash · Prefix · One implementation

Every public command works as both a slash command (/muffin) and a legacy prefix command (!ARIA --muffin) through discord.py's hybrid command framework — backwards-compatible with the muscle memory of the original community while embracing the modern interaction model.

02

Under the hood

A real production system, not a hobby script. Tested, deployed, observed, and on its second major library migration.

A.R.I.A. is Python 3.10+ on top of discord.py 2.3.2, with cogs split by domain (muffin, science, kevin, moderation, admin, fun, utility) and a clean separation between command handlers, services, and persistence. State lives in MongoDB (via Motor), image work runs through Pillow, and the test suite is pytest with async support — including coverage of the Discord interaction patterns themselves, which is harder than it sounds.

The deployment story matches the engineering story: three long-lived branches (main production, develop staging, agentic active development), automatic staging deploys, manual production promotion, and a Heroku Procfile setup that's survived multiple platform upgrades.

"Every public command works the modern way and the way the community already typed it. Backwards compatibility for muscle memory."

The codebase is also where I exercise practices I believe in: SOLID-leaning structure, real test coverage for behavior I actually care about, CI enforced linting and formatting (Black, isort, flake8), and the discipline of cleanup commits that don't add features but make the next change easier.

03

Built for a community worth showing up for

A short, important note about the people this bot exists for.

[THE FACILITY] & Kyle Hill

Science communicator · YouTube · Patreon

Kyle Hill is a science communicator whose YouTube channel covers everything from nuclear history (his Half-Life Histories series) to the physics behind pop culture. [THE FACILITY] is the Discord community that grew up around that work — the audience this bot is built to serve.

I'm an engineer who happens to be a fan; A.R.I.A. is mine, but the show is Kyle's. If this page is the first you've heard of him, the right next click is his channel — and if you want to support what he makes, his Patreon is where to do it.

What I take from this project

  • Long-lived community software has its own design pressures — backwards compatibility for muscle memory, persistent game state, ETL between environments.
  • Discord's interaction model rewards small, ephemeral, highly-focused UIs over walls of text.
  • Free time is the most honest test of what you actually believe about software craft.
  • Building for an audience that isn't paying you keeps the work calibrated to whether it's any good.

Read the source on GitHub →

04

That's the side project.

The day job, the writing, the talks, and the rest of the work live on the main page.