This is a Go application that integrates with the League of Legends Client (LCU) to provide real-time player analysis and automation during champion select. It monitors the game flow via WebSocket, fetches recent match history for all team members, calculates a composite score based on KDA, first blood, multi-kills, team participation, gold, damage, vision, and CS metrics, then sends 'horse' ratings (e.g., ้ๅคฉไปฃ, ๅฐไปฃ) to the in-game chat. It also supports auto-accepting games, auto-picking/banning champions, and exposes an HTTP API for querying scores and configuration. The architecture is a monolithic Go service with a Gin web server, background goroutines for LCU monitoring, and a reverse proxy for the LCU API. It uses SQLite for local config storage and OpenTelemetry for logging. The code is well-structured, with clean separation of concerns, modern Go practices, and a complex scoring algorithm that is configurable via remote or local configuration.
RiotSharp is a C# wrapper for the Riot Games API, providing access to League of Legends data including summoner information, match history, champion stats, leagues, and static game data. The library implements automatic rate limiting to comply with Riot's API constraints and includes caching for static data to minimize API calls. It features a layered architecture with separate projects for the core library, ASP.NET Core integration, and tests. The main entry point is the `RiotApi` class, which aggregates all endpoint interfaces via dependency injection. Key reusable components include a sophisticated rate limiter, a pluggable caching abstraction, a base class for static data endpoints, and custom JSON converters for enum serialization.
Frank is a desktop assistant for League of Legends, built with Tauri (Rust) and Vue 3. It interacts with the League Client Update (LCU) API to provide features such as automatic match acceptance, champion pick/ban, rune recommendations, champion performance statistics, teammate analysis, and personal notes/blacklist management. The application consists of multiple windows: a main UI for home, rankings, runes, teammate analysis, and records; a background window that monitors game flow and auto-actions; an overlay for recent match details during gameplay; a match query window; and a post-game analysis window. It communicates with the LoL client via a custom Rust wrapper (shaco) that handles REST calls, WebSocket subscriptions, and the in-game API, and also fetches external data from Tencent CDN, lolfrank.cn, and a custom backend server for blacklist persistence. The architecture is modular, with separate Vue entry points for each window, Pinia state management, and a Rust backend that handles LCU integration, keyboard listening, window management, and system tray features. The code demonstrates significant reverse engineering of Riot's client APIs and game state management, packaged into a polished cross-platform desktop app.