How fe4528/jikanrewrite works
Jikan is a Discord bot for tracking members’ voice-channel time and presenting global, server-local, and in-memory realtime leaderboards. Discord interactions enter through the bot runtime and dispatch to commands or button handling; voice-state changes are processed separately, with elapsed time persisted to MySQL and active sessions kept in memory. Developer commands expose operational and diagnostic functions, including leaderboard and telemetry views. The README identifies MySQL and Discord configuration; unsampled command implementations are represented by their existing directories, and no behavior beyond the shown excerpts or README is assumed.
Main entry points: index.js Jikan runtime · jikan_mysql_manager.js MySQL data access · utils.js Shared utilities · telemetry.js Database telemetry
Components 15
Bot runtime
- Jikan runtime
index.js - Module reloader
refresh_modules.js - Shared utilities
static/utils.js
Voice tracking
- Voice state handler
events/voice_update.js - Active session cache
static/temptime.js
Data and telemetry
- MySQL data access
static/jikan_mysql_manager.js - MySQL database
- Database telemetry
static/telemetry.js
Commands and presentation
- Telemetry button
events/button.js - Public commands
commands/public - Developer commands
commands/dev - Leaderboard view
commands/dev/leaderboards_dev.js - Telemetry command
commands/dev/telemetry.js - Translation data
locales/default.json
Other components
- Discord users/events
Connections 20
- Discord users/events → Jikan runtime: sends events
index.js - Jikan runtime → Voice state handler: dispatches voice changes
index.js - Jikan runtime → Telemetry button: dispatches buttons
index.js - Jikan runtime → Public commands: loads commands
index.js - Jikan runtime → Developer commands: loads commands
index.js - Jikan runtime → MySQL data access: attaches database
index.js - Jikan runtime → Active session cache: clears guild cache
index.js - Voice state handler → Active session cache: tracks sessions
events/voice_update.js - Voice state handler → MySQL data access: persists elapsed time
events/voice_update.js - Leaderboard view → MySQL data access: queries stored rankings
commands/dev/leaderboards_dev.js - Leaderboard view → Active session cache: reads realtime rankings
commands/dev/leaderboards_dev.js - Telemetry command → Database telemetry: requests statistics
commands/dev/telemetry.js - Telemetry button → Database telemetry: requests statistics
events/button.js - MySQL data access → MySQL database: reads and writes
static/jikan_mysql_manager.js - MySQL data access → Database telemetry: records database calls
static/jikan_mysql_manager.js - Database telemetry → Shared utilities: formats durations
static/telemetry.js - MySQL data access → Shared utilities: uses shared helpers
static/jikan_mysql_manager.js - Public commands → Shared utilities: uses translations
- Shared utilities → Translation data: loads translations
static/utils.js - Jikan runtime → Module reloader: initializes reloader
index.js