How neechko/mokachan works
Mokachan is a Discord bot whose main workflows are AI companion chat with persistent memory and channel-based character spawns that users can claim into collections. Lyrics lookup is a separate command capability. The README documents the broader command set; sampled source confirms detailed wiring mainly for AI chat, lyrics, collection browsing, and admin grants, so other command links are omitted where call ownership is not evidenced.
Main entry points: index.js Bot router · database.js SQLite state · characterSource.js Character source pool · ai.js AI chat handler
Components 26
Discord runtime
- Bot router
index.js - Command matcher
src/commandMatcher.js - Lyrics command
lyrics.js - History commands
src/commands/history.js - SQLite state
src/database.js - Database maintenance
src/maintenance.js
AI companion
- AI chat handler
src/commands/ai.js - Companion memory
src/companion.js
Character collectibles
- Collection browser
src/commands/koleksi.js - Claim command
src/commands/claim.js - Admin card grant
src/commands/adminCard.js - Spawn scheduler
src/characterSpawn.js - Character source pool
src/characterSource.js - Rarity mapping
src/rarity.js
External integrations
- Gemini client
src/gemini.js - AniList provider
src/anilist.js - Tenrai provider
src/tenrai.js - Genshin provider
src/genshin.js - GenshinDB provider
src/genshindb.js
Other components
- Discord user
- Discord platform
- LRCLIB
- Gemini API
- AniList API
- Tenrai API
- Genshin APIs
Connections 41
- Discord user → Discord platform: sends commands
- Discord platform → Bot router: delivers messages
- Bot router → Command matcher: matches commands
- Bot router → AI chat handler: dispatches chat
- Bot router → Lyrics command: dispatches lyrics
- Bot router → Claim command: dispatches claims
- Bot router → Collection browser: dispatches collection
- Bot router → Admin card grant: dispatches grants
- Bot router → History commands: dispatches history
- Bot router → Discord platform: connects client
- AI chat handler → Companion memory: builds context
- AI chat handler → Gemini client: requests reply
- AI chat handler → SQLite state: saves chat log
- Companion memory → SQLite state: reads and saves memory
- Companion memory → Gemini client: summarizes memory
- Companion memory → Discord platform: reads channel context
- Gemini client → Gemini API: sends requests
- AI chat handler → Discord platform: sends response
- Lyrics command → LRCLIB: searches lyrics
- Lyrics command → Discord platform: posts lyrics
- Spawn scheduler → Character source pool: requests character
- Spawn scheduler → SQLite state: tracks channel spawn
- Spawn scheduler → Discord platform: posts spawn
- Claim command → SQLite state: claims active spawn
- Claim command → Discord platform: confirms claim
- Collection browser → SQLite state: reads collection
- Collection browser → Rarity mapping: labels characters
- Collection browser → Discord platform: displays collection
- Admin card grant → Character source pool: searches characters
- Admin card grant → SQLite state: grants card
- Admin card grant → Discord platform: confirms grant
- Character source pool → AniList provider: queries source
- Character source pool → Tenrai provider: queries source
- Character source pool → Genshin provider: queries source
- Character source pool → GenshinDB provider: queries source
- AniList provider → AniList API: fetches character data
- Tenrai provider → Tenrai API: fetches character data
- Genshin provider → Genshin APIs: fetches character data
- GenshinDB provider → Genshin APIs: fetches character data
- Database maintenance → SQLite state: checks database
- Bot router → Database maintenance: runs maintenance