What It Is

248 badges across seven categories, earned from things Aegis already tracks: messages, voice time, levels, currency, casino rounds, fishing, counting, invites and stars. An achievement pays no currency, no XP and no roles. That is deliberate: it means the system can be switched on in a server with a settled economy without moving a single number in it.

Members check their own with /achievements, or pass a member to see somebody else's.

History Counts

Every badge is measured against the table that already owns the number, so switching this on does not restart anyone. A two-year regular does not begin again at "send 1 message". They are credited immediately for everything they already qualify for.

That backdating happens silently. A server enabling this should not wake up to two hundred announcements for things that happened last spring, so those badges are held quietly until the member earns their first genuinely new one. At that point the catch-up list and the badge they just earned arrive together, in one message.

The same applies to badges Aegis adds later. A new badge is history to anyone whose numbers already cleared it, so it is credited quietly rather than announced as though they had just done it, but a badge they are still working toward when it arrives is announced properly the day they reach it.

Tiers

Badges that are the same pursuit at rising numbers are one track, not eight separate entries. "Send 100 messages" and "Send 25,000 messages" are the same thing at different scales, so they stack into a single line showing where a member stands and what comes next.

Each row carries a rank icon: โ” until the first rung falls, then the rank of the rung they hold, and a โœ… once the whole track is finished.

Difficulty Ranks

Every badge is rated 1 to 10, where 1 is the easiest thing in the bot and 10 the hardest. The rank is set per badge rather than worked out from its position in a ladder, because position lies: the top rung of a three-rung track is nowhere near the top rung of a ten-rung one, and a one-shot would score 10 for being the only thing on its list.

RankRoughlyRankRoughly
1Minutes, or a first-time action6A couple of months
2A first session7Around half a year
3A few days8The better part of a year
4A week or two9A year of real commitment
5About a month10Years, or a serious grind

So a track that tops out at rank 6 genuinely never asks for months of anything, and one that reaches 10 is meant to take years.

Categories

CategoryCovers
๐Ÿ’ฌ ActivityMessages, reactions, voice time, polls voted in
โญ LevelingLevels reached and level card milestones
๐Ÿช™ EconomyCurrency, streaks, work, and every casino game (the games share one wallet with the rest of the economy, so they are not split off)
๐ŸŽฃ FishingCasts, catches, species, the registry, rods and record weights
๐Ÿ”ข CountingCorrect counts, streaks, and chains broken
๐Ÿค SocialInvites, stars earned, starboard posts, birthdays and boosts
๐ŸŽ MiscFinding your way around the bot, and voting for Aegis

Secrets

A hidden eighth category. Secret badges show as ??? with no name, no target and no progress bar until they land. Showing progress toward one would be a map to the joke. They are jokes rather than goals, so none of them asks for a grind.

They stay secret when they land, too. The channel is told that one was unlocked and gets a Reveal button; only the member who earned it can press it, and the answer comes back to them alone. Anyone else who tries is told it is not theirs to open.

When A Badge Lands

A badge is credited the moment the number behind it moves, not the next time the member types. Finishing an hour in voice, landing a fishing milestone, winning a game, voting in a poll and reacting to a message are all checked where they happen.

Three of them land without the member running a command. Stars on their post, a member joining on their invite, and boosting the server each book their own check for the person it belongs to, so the badge does not wait for its owner to turn up and do something themselves.

Voting for Aegis on top.gg is credited in the last server the member opened /vv in. A vote arrives with a member and no server attached, so there is nowhere else for it to be noticed. Somebody who has never run /vv keeps that one waiting, and it rides along with whatever they earn next.

Where Announcements Go

By default, the channel it happened in. A server can instead nominate one channel for every unlock, and can write its own line to sit above the embed. {user} pings the member, alongside {username}, {achievement} and {server}, and the Placeholders button on the dashboard lists them. A voice room counts as the channel it happened in, because a voice room has its own chat, so a badge earned in a call is announced in that call. Only an unlock with genuinely nowhere to speak, meaning no channel left to post in or no permission to post there, is recorded without an announcement and posted the next time the member turns up somewhere Aegis can talk, so nothing is lost and nothing lands in a channel the member is not looking at.

Everything waiting goes out as one message: one line, one ping, the catch-up embed if there is one, then what was just earned. A member does not get a stack of posts.

Members who would rather not be pinged can run /achieve-ping, which switches the mention for their name in bold. The first announcement that mentions them also carries a one-time button that does the same thing.

Custom Achievements

Servers can add their own from the dashboard, up to the per-server limit. Pick a metric, a target and a difficulty from 1 to 10. The metric list is exactly what Aegis already watches, so there is no way to ask for a number that is not being kept.

๐Ÿ’ก

An earned badge is never taken back. If the number behind it later falls (a streak breaking, currency being spent), the badge stays. Earning it happened.