Members write quotes and drop images. Every day Moniker picks one, renames the whole server after it, and posts a card crediting who wrote it. It runs itself.
Four steps repeat forever with zero upkeep.
In a quote channel. Every line of every message is a candidate. Out-of-context gems work best:
In an icon channel: any image attachment works as a candidate icon for the server.
Every day (or on whatever schedule you set), one quote and one icon are picked, one candidate per person, weighted so whoever got picked recently is less likely to come up again. Then it renames the server, sets the icon, and posts a card with the quote and credits.
To the cards they love, any emoji counts. Reactions are tracked automatically from day one, so the bracket championship below is always an option, whenever you want it.
Anyone can trigger a rename with /rename (admins can restrict it). Renames are rate-limited by Discord to about two per ten minutes, so Moniker tells you how long to wait instead of hanging.
Members can check /mystats for their submission counts and last pick, or /contributors for the quote or icon leaderboard.
The daily renames are enough on their own. But reactions accumulate automatically, so whenever you're ready, run /bracket start.
Where it posts, scope (this year, last year, or a season), size (4 to 32), voting window (6 hours to a week), pacing, and source, with the estimated total length shown before you launch.
Round pacing: each round's matchups post and vote in parallel; the server name rotates through the previous round's winners. Daily pacing: one matchup at a time, and each winner immediately becomes the server name.
Matchups are native Discord polls with both cards displayed. Ties get a dramatic coin flip. The champion gets an announcement with their winning card, the server name, and a place in /bracket history.
Define named windows with /season: say, "Halloween 2026" for Oct 1 to 31, and run brackets scoped to them for monthly or holiday events.
Instead of seeding a bracket from every card's reactions, set a best-of channel in /setup. Members forward their favorite rename cards into it using Discord's native Forward, and the bracket seeds from reactions on those forwards.
Moniker confirms each nomination with âšī¸ (or đ for a duplicate) and pins instructions in the channel. Screenshots don't count, only real forwards, so nominations stay traceable to the original card.
Best-of seeding counts distinct people, so piling five reactions onto your own favorite still only counts once. Each /bracket start chooses between best-of and all-renames seeding for that run.
Make the bot post anything on a schedule, sourced from a channel. Run /feature setup, pick a source channel, a destination, and a type: media, link, music (YouTube, Spotify, SoundCloud), or text, then name it and give it a command slug.
A "Meme of the Day" sourced from #memes gets its own /meme command anyone can run on demand, or just admins, or a role, plus a scheduled daily post. Each feature has its own cadence: every 3 days, Fridays only, whatever fits.
/feature list, edit, schedule, toggle, remove, access
Run /setup: a stepped wizard in one ephemeral message.
Pick, or one-click create, the quote channel, icon channel, post channel (where daily cards land, and what brackets track), and an optional best-of channel.
So "8:00" means your 8:00.
Daily, every N days, or specific weekdays ("every Sunday"), and the time. Re-run /setup any time to change a channel; each dropdown applies as picked.
Check the state of everything with /showconfig, including a health check for missing permissions.
All slash commands. Fully multi-server, no Administrator permission required, per-server data. /help shows the full reference; admin sections only appear for admins.
Admin commands require Manage Server or bot-admin via /admin add. Inviting Moniker needs Manage Server on the target server. The invite grants exactly the permissions to view and post in channels, add reactions, send polls, and rename the server, plus two optional conveniences that degrade gracefully if skipped.
Python 3.12, discord.py 2.7.1, SQLite. Runs as a single worker process: Railway, a VPS, anything.
pip install -r requirements.txt
DISCORD_TOKEN=your_token DB_FILE=/path/to/server_config.db python main.py
In the Developer Portal, enable both privileged intents, Message Content and Server Members, the bot won't log in without them. Toggle Public Bot on to let others invite it.
Per-server only: channel and schedule config, a log of picks (for fair sampling and /mystats), tracked rename cards, and bracket history. No message content is stored beyond the quotes Moniker itself posted on cards.
/admin reset wipes a server's data completely. Removing the bot deletes that server's data after 30 days.
Verification (and a privacy policy) is required by Discord past ~100 servers. DB_FILE defaults to a persistent volume path; the schema migrates itself on boot.
Two minutes to set up. No Administrator permission required.