A DISCORD BOT THAT RENAMES YOUR SERVER

Your server, renamed daily by the best thing someone said.

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.

Add to Discord View on GitHub
Moniker banner
HOW IT WORKS

The loop

Four steps repeat forever with zero upkeep.

1

Members drop quotes

In a quote channel. Every line of every message is a candidate. Out-of-context gems work best:

"Bandits usually do not expect being robbed. You can use this to your advantage"
2

Members drop images

In an icon channel: any image attachment works as a candidate icon for the server.

3

Moniker picks, fairly

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.

4

Members react

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.

Moniker renaming a server and posting the card
THE CORE LOOP

Rename whenever, not just on schedule

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.

Rename cooldown message
OPTIONAL

Brackets: the championship

The daily renames are enough on their own. But reactions accumulate automatically, so whenever you're ready, run /bracket start.

One panel, everything per-run

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.

~1 month
32 names, daily pacing at 24h a matchup
~1 weekend
8 names, round pacing
A bracket matchup

Matchups & seasons

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.

Champion announcement
OPTIONAL

The best-of channel

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.

The /feature setup panel
OPTIONAL

Your own "X of the day"

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

GETTING STARTED

Set it up in two minutes

Run /setup: a stepped wizard in one ephemeral message.

STEP 1: CHANNELS

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.

STEP 2: TIMEZONE

So "8:00" means your 8:00.

STEP 3: SCHEDULE

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.

The /setup wizard
TRY IT IMMEDIATELY

Check the state of everything with /showconfig, including a health check for missing permissions.

/preview /rename /bracket test
REFERENCE

Commands

All slash commands. Fully multi-server, no Administrator permission required, per-server data. /help shows the full reference; admin sections only appear for admins.

Everyday (members)

/mystatsYour submission counts and when you were last picked
/contributorsQuote or icon submission leaderboard
/renameTrigger a rename now (admins can restrict this)

Configuration

/setupThe wizard: channels, timezone, schedule
/config scheduleRename cadence and time
/config creditsNickname vs @username, champion pings
/config featureToggle quote, cooldown, openrename
/config timezoneAny IANA zone
/seasonManage named bracket windows
/admin add/remove/listGrant bot-admin to non-managers
/admin resetWipe this server's data (two-step confirm)
/showconfigEverything, plus a health check

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.

OPEN SOURCE

Self-hosting

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.

Data & privacy

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.

Add Moniker to your server

Two minutes to set up. No Administrator permission required.

Add to Discord
Moniker