How ssldxss/vrcnotifier works
vrcnotifier monitors VRChat friends and sends event notifications through a QQ bot, with a web panel for login, configuration, friend status, and logs. The principal workflow is VRChat WebSocket events plus REST reconciliation, state-transition processing, persistence, and notification dispatch; recovery handles reconnects and authentication challenges. The README also documents avatar caching, health/status, and log history. The graph reflects sampled wiring and documented capabilities; some UI and backend subsystem internals were not sampled, so their detailed links are omitted.
Main entry points: index.js App Assembly · server.js HTTP API · ui.js Web Interface · monitor.js Monitor Orchestrator
Components 25
Web Panel
- Web Interface
public/ui.js - Friend Views
public/friends.js - Overview
public/overview.js - Settings
public/settings.js - Log Panel
public/logpanel.js
Application Service
- HTTP API
src/server.js - App Assembly
src/index.js - Login Recovery
src/server.js - Health Monitor
src/health.js - VRChat Status
src/vrcstatus.js
Friend Monitoring
- Monitor Orchestrator
src/monitor.js - WebSocket Pipeline
src/pipeline.js - Friend State Machine
src/state.js - World Names
src/world.js
External Integrations
- VRChat API Client
src/vrcapi.js - QQ Bot Gateway
src/qq.js - QQ Commands
src/qq-commands.js - Notification Templates
src/notify.js - Avatar Cache
src/avatar.js
Persistence and Logs
- SQLite Store
src/db.js - Data Encryption
src/crypto.js - Segmented Logs
src/filelog.js - Live Log Stream
src/logstream.js
Other components
- Operator
- VRChat Services
Connections 38
- Operator → Web Interface: uses
- Web Interface → HTTP API: calls API
- HTTP API → Operator: serves panel
- App Assembly → HTTP API: starts
src/index.js - App Assembly → Monitor Orchestrator: assembles
src/index.js - App Assembly → WebSocket Pipeline: creates
src/index.js - App Assembly → SQLite Store: creates
src/index.js - App Assembly → Avatar Cache: creates
src/index.js - App Assembly → Health Monitor: starts
src/index.js - App Assembly → VRChat Status: creates
src/index.js - WebSocket Pipeline → VRChat API Client: gets token
src/index.js - WebSocket Pipeline → Monitor Orchestrator: dispatches events
- Monitor Orchestrator → Friend State Machine: applies transitions
src/monitor.js - Monitor Orchestrator → SQLite Store: reads and writes
src/monitor.js - Monitor Orchestrator → VRChat API Client: reconciles via REST
src/monitor.js - VRChat API Client → VRChat Services: calls REST API
src/vrcapi.js - Monitor Orchestrator → World Names: resolves names
- Monitor Orchestrator → Notification Templates: dispatches notices
- Notification Templates → QQ Bot Gateway: formats messages
src/notify.js - QQ Bot Gateway → QQ Commands: handles commands
src/qq.js - QQ Bot Gateway → SQLite Store: reads binding
src/qq.js - QQ Bot Gateway → VRChat Services: connects gateway
src/qq.js - HTTP API → Login Recovery: handles auth
src/server.js - Login Recovery → VRChat API Client: re-authenticates
src/server.js - Login Recovery → WebSocket Pipeline: requests reconnect
- HTTP API → Avatar Cache: serves cached images
src/avatar.js - HTTP API → Live Log Stream: broadcasts logs
src/server.js - Live Log Stream → Log Panel: streams log events
- HTTP API → Web Interface: serves static UI
- Web Interface → Friend Views: shows friends
- Web Interface → Overview: shows overview
- Web Interface → Settings: configures service
- HTTP API → Health Monitor: exposes health
- Health Monitor → Web Interface: streams health
- VRChat Status → Web Interface: provides status
- App Assembly → Segmented Logs: opens log files
src/index.js - App Assembly → Live Log Stream: creates stream
src/index.js - SQLite Store → Data Encryption: encrypts fields