# Loldle Quote Mode Research Report **Date:** 2026-04-24 **Focus:** Loldle Quote mode mechanics, data sources, and Telegram bot adaptation feasibility --- ## 1. Gameplay Mechanics **Core Loop:** - Player presented with champion **quote text** (single line of in-game dialogue) - Player has up to **6 incorrect guesses** to identify the champion - After 6 failed guesses, **audio clue unlocks** — the voice track of the champion speaking that exact quote - Binary feedback: correct/incorrect (no gradual hints like classic mode) - Daily reset at 00:00 UTC (one quote per day, same for all players) **Difficulty Factor:** - Many champions share similar tone, thematic dialogue, generic lines - Short quotes often feel interchangeable across champions - Audio hint helps but champions with similar-sounding voices remain ambiguous - Requires genuine champion knowledge, not just systematic elimination (unlike classic mode) **Comparison to Classic Mode:** - Classic mode: feedback based on champion metadata (region, year, role, etc.) - Quote mode: immediate right/wrong, then audio clue only - Quote mode is harder — no attribute-based elimination strategy --- ## 2. Data Source & Infrastructure ### Quote Text Source **WHERE:** Embedded in client-side JavaScript bundle (minified `app.{hash}.js`) **HOW TO ACCESS:** 1. Visit https://loldle.net/quote 2. Extract minified bundle from page source (find `app.xxx.js` in script tags) 3. Search bundle using regex: `championId` property locates champion data 4. Use extraction script (see: joulsen/loldle-information-theory repo) **FOUND REPOSITORY:** [joulsen/loldle-information-theory](https://github.com/joulsen/loldle-information-theory) - Provides `resources/extract-champlist.py` for automated extraction - Provides pre-extracted `resources/loldle-champ-data.json` - Regex pattern: `=(\\\[\\{\_id:"\[^{}\]+championId:".+?\\}\\\])` **DATA STRUCTURE:** Quote data likely stored same way as classic-mode champion data: - Each champion has array of properties (name, region, role, hp, etc.) - Quote mode adds `quote` field with the dialogue text - Quote may map to voice line ID or include URL reference ### Audio Source **WHERE:** Likely League of Legends Wiki or Riot-hosted CDN (cached during quote reveal) **MECHANICS:** - Initially: only text shown - After 6 wrong guesses: audio file loads via HTTPS - Probable source: Riot Games CDN (per League Wiki structure) - Format: OGG or MP3 (standard web audio) - No direct URL exposed in initial puzzle request (audio fetched only after hint unlock) ### Cache Endpoint **https://cache.loldle.net/cache.json** - Response is **Salted base64-encoded** (OpenSSL encryption) - Contains aggregated game state/metadata - Cannot be directly parsed without decryption key - Likely syncs game state across devices, not primary data source ### Data Freshness - Quote data baked into JS bundle (no live API call for quote text) - Audio file fetched at hint reveal (cached, not live-generated) - Bundle updates when new champions added or quotes change (likely patch-synced) --- ## 3. Scraping Feasibility ### ✅ Can We Extract Quote-Champion Pairs? **YES** — with caveats: **Option A: Direct Bundle Extraction (Reliable)** ``` 1. Fetch https://loldle.net/quote 2. Parse HTML, find