Skip to main content

Documentation Index

Fetch the complete documentation index at: https://mintlify.com/Apeuriox/lazybot-renewal/llms.txt

Use this file to discover all available pages before exploring further.

Badge challenges are curated map packs that reward a badge upon completion. Each challenge contains a set of beatmaps, and every beatmap carries its own pass requirements — minimum accuracy, minimum combo, maximum miss count, and allowed mods. When you have submitted a qualifying score for every map in a challenge, a redemption key for the linked badge is issued to you automatically. You then use /redeem to claim the badge.

/challenge (/cl) — Browse Active Challenges

Displays all currently active challenges as an image panel. No parameters are needed; the command renders an overview of every challenge that has not yet expired.
/challenge
/cl
The Discord (SlashCommandInteractionEvent) path for /challenge is marked as not yet implemented in the source. This command is currently available on the QQ/OneBot interface only.

/cr / /cd — View Challenge Requirements

Shows the full list of beatmaps and their pass requirements for a specific challenge, rendered as an image.
Id
integer
required
The numeric ID of the challenge, as shown in the /challenge overview.
/cr 1
/cd 1
The Discord (SlashCommandInteractionEvent) path for /cr / /cd is marked as not yet implemented in the source. This command is currently available on the QQ/OneBot interface only.
Each beatmap entry in the output includes:
FieldMeaning
Title + Beatmap IDIdentifies the map
AccuracyMinimum accuracy required (e.g. ≥ 98.00%)
ComboMinimum max combo required
Max MissMaximum misses allowed
Mod restrictionOperator-prefixed mod rule (see below)
Mod restriction operators (parsed from the mods_allowed field):
PrefixRule
=Exact mod set match
~Must contain these mods
!These mods must not appear
^Any of these mods are allowed
(none)Must include these mods
nullNo-mod only

/submit — Submit a Score to a Challenge

Submits your best score for a specified beatmap within a challenge. Lazybot fetches the score from the osu! API and checks it against every requirement defined in badge_challenge_map for that beatmap.
ChallengeId
integer
required
The ID of the challenge you are submitting to.
BeatmapId
integer
required
The osu! beatmap ID of the map you are submitting.
/submit 1 114514
On a successful submission, Lazybot records the score details (accuracy, combo, miss count, mods used, score ID) in badge_challenge_submission_details.
The Discord (SlashCommandInteractionEvent) path for /submit is marked as not yet implemented in the source. This command is currently available on the QQ/OneBot interface only.
Score verification is performed live against the osu! API at submission time. Make sure the score you want to submit is already set on your osu! account before running /submit.

/genkey — Generate a Redemption Key (Admin)

Creates one or more redemption keys tied to a specific badge. Keys have a configurable use limit and expiry time.
BadgeId
integer
required
The ID of the badge these keys will unlock.
MaxUses
integer
required
If GenMultiKey is false, this is the maximum number of times a single key can be redeemed. If GenMultiKey is true, this many individual single-use keys are generated instead.
ExpireTime
integer
required
How long the key(s) remain valid, in seconds from the moment of creation.
GenMultiKey
boolean
required
true — generate MaxUses separate keys, each redeemable once.
false — generate a single key redeemable up to MaxUses times.
/genkey 3 10 864000 true
The example above generates 10 single-use keys for badge ID 3, each valid for 10 days (864 000 seconds).
/genkey requires administrator privileges. Calls from non-admin users are rejected.
The Discord (SlashCommandInteractionEvent) path for /genkey is marked as not yet implemented in the source. This command is currently available on the QQ/OneBot interface only.

/redeem — Redeem a Key for a Badge

Redeems a one-time key to add the linked badge to your collection. The key must match the format AAAA-BBBB-CCCC-DDDD-EEEE (five groups of four uppercase alphanumeric characters separated by hyphens).
Key
string
required
The redemption key in AAAA-BBBB-CCCC-DDDD-EEEE format.
/redeem AAAA-BBBB-CCCC-DDDD-EEEE
Lazybot validates the key format with the regex ^[A-Z0-9]{4}(-[A-Z0-9]{4}){4}$ before processing. After a successful redemption, the key’s used_count is incremented and it is deactivated (is_active = 0) once max_uses is reached.
The Discord (SlashCommandInteractionEvent) path for /redeem is marked as not yet implemented in the source. This command is currently available on the QQ/OneBot interface only.

Full Challenge Completion Flow

1

Browse Active Challenges

Run /challenge (or /cl) to see all currently active challenges and their IDs.
2

Inspect Requirements

Run /cr <challengeId> (or /cd <challengeId>) to view the full beatmap list and pass requirements for the challenge you want to attempt.
3

Set Scores on osu!

Play each map on your osu! account, meeting the accuracy, combo, miss, and mod restrictions shown in the requirements.
4

Submit Each Map

For every beatmap you’ve passed, run /submit <challengeId> <beatmapId>. Lazybot verifies your score against the osu! API and logs it on success.
5

Receive Your Key

Once all maps in the challenge are submitted and verified, Lazybot generates a redemption key for the linked badge.
6

Redeem the Badge

Run /redeem <key> with the key you received. The badge is added to your collection and the key is invalidated.

Data Model

TableKey FieldsPurpose
badge_challenge_definitionid, name, badge_id, description, create_time, expire_time, is_activeDefines each challenge and the badge it awards
badge_challenge_mapchallenge_id, beatmap_id, required_acc, required_combo, max_accepted_miss, mods_allowed, mode, title_with_versionIndividual beatmap entries within a challenge, including all pass requirements
badge_challenge_submission_detailschallenge_id, beatmap_id, player_id, score_id, achieved_acc, achieved_combo, miss_count, mod_used, create_timeLog of verified score submissions against challenge maps
badge_keycdkey, badge_id, max_uses, used_count, is_active, created_at, expired_atRedemption keys, their linked badge, usage counters, and validity window

Build docs developers (and LLMs) love