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.

Lazybot is a self-hosted, feature-rich osu! bot built for Discord and QQ servers. Designed for osu! players who want powerful performance tracking, stunning visual score panels, and deep stat analysis right inside their community chat, Lazybot packs everything from BP simulation and PP+ integration to badge challenges and fun minigames — all running on your own infrastructure.

Feature Pillars

Score Lookup & Panel Rendering

Lazybot retrieves scores from the osu! API and renders beautiful, richly detailed score cards. Panels are defined as SVG templates, processed at runtime using Apache Batik for DOM manipulation, then rasterized to PNG or JPG via Resvg JNI — a Rust-native renderer bound to the JVM — for dramatically faster output than Batik’s own rasterizer. Multiple panel styles are supported (DarkScore, Moelleux, Quadra Grid, Gameboy, and more), and users can select their preferred default panel with /SetPanel.

BP Analysis & Simulation

Lazybot provides a full suite of Best Performance (BP) tools:
  • /bp — fetch a single BP entry, up to index 200
  • /bplist / /bpcard — list or render up to 200 BP entries
  • /bpvs — compare two players’ BPs head-to-head
  • /nochoke / /no1miss — simulate what your total PP would look like with perfect accuracy or a single miss removed
  • /bpif (/whatif) — calculate the PP gain from a hypothetical score, with a configurable calculation limit (default 200)
  • /filter — filter your BP 200 by arbitrary conditions
  • /todaybp — scores set today that entered your top plays
All PP recalculation is powered locally by Rosu-JNI, keeping results in sync with Bancho’s current algorithm.

PP+ Integration

Lazybot integrates with the PP+ service, allowing users to query detailed skill-breakdown data with /plus and view their top PP+ plays with /Pb. The Quadra Grid panel style displays both standard PP and PP+ breakdowns side by side.

Badge & Challenge System

The badge/challenge system works similarly to Map Packs. Server administrators can define a series of challenges, and players who complete all of them earn a badge. Use /badge commands to browse available challenges, check progress, and claim rewards when finished.

Fun Minigames

  • /Song — a random clip is cut from a player’s BP and others must guess the map title
  • /Name — obfuscated player names are shown for others to identify
  • /CheckIn — daily check-in with a calendar-style panel
  • /ur — given an OD and unstable rate, estimate the accuracy distribution using a normal distribution model

Multi-Platform Support

Lazybot speaks two protocols simultaneously:
PlatformIntegration
DiscordJDA 6 — slash commands and message commands
QQShiro (OneBot v11 over WebSocket) — message commands
Each platform can be independently enabled or disabled in application.yaml.

Star Moon Private Server

Lazybot includes native support for the Star Moon (星月) osu! private server, enabling players on that server to use score lookup and tracking commands.

Image Rendering Stack

SVG Template


Apache Batik  ──── DOM manipulation, text layout, font embedding


Resvg JNI     ──── Rust-native rasterizer (JNI bridge) → PNG / JPG output
Batik handles all SVG tree construction and mutation (setting text nodes, colors, images). Resvg then rasterizes the final SVG to a bitmap. This hybrid approach gives Lazybot Batik’s expressive SVG API with Resvg’s rendering speed.

Prerequisites

Before running Lazybot, ensure you have the following available:

Java 21

Lazybot requires Java 21 and uses Java 21 preview features (virtual threads, native access). The JAR must be launched with --enable-preview --enable-native-access=ALL-UNNAMED.

MySQL-Compatible Database

A running MySQL (or compatible) instance is required. Run script.sql to initialise all tables before first boot.

osu! API Credentials

Register an OAuth application at osu.ppy.sh/home/account/edit to obtain a client ID and client secret. These go into lazybot.client_id and lazybot.client_secret.

Discord / QQ Bot Token

A Discord bot token from the Discord Developer Portal and/or a configured OneBot-compatible QQ client (e.g. LiteLoaderQQNT + NapCatQQ) for QQ support.

Get Started

Quickstart

Clone the repo, install local Maven libraries, configure application.yaml, and run Lazybot in under 15 minutes.

Configuration Reference

Every field in application.yaml documented — database, Discord, osu! OAuth, rate limiting, and async threading.

Score Commands

Full reference for /bp, /score, /recent, /nochoke, /bpvs, and all other score commands.

Badge & Challenges

Learn how to set up badge challenge sets and how players complete them to earn rewards.

Project Background & License

Lazybot started on March 27, 2023, founded by LazyChildren. This repository (lazybot-renewal) is a complete refactor of the original codebase — new architecture, improved performance, and an actively growing command set. Current version: 1.2.0 (Spring Boot 4, Java 21). Lazybot is released under the GNU General Public License v3.0.
Lazybot is a self-hosted bot. There is no public instance you can invite to your server. You are responsible for hosting, maintaining, and securing your own deployment, including keeping your application.yaml credentials private.

Build docs developers (and LLMs) love