MosswartOverlord/go-services
Erik 8d4c6ff68f feat(go-services): discord-go — Go port of discord-rare-monitor
Consumes the Python tracker's /ws/live firehose (subscribed to rare+chat),
classifies rares common/great, posts embeds + relays allegiance chat.

- classify.go: the 74-name common-rares set, extracted verbatim from the Python
  COMMON_RARES_PATTERN (not hand-transcribed). go test runs at build time; a
  server-side dump-rares vs the Python regex confirms the sets are IDENTICAL.
- poster.go: a `poster` interface with a real discordgo impl (REST sends by
  channel id; gold/blue embeds, location/time fields, icon attachment) and a
  dry-run log impl.
- ws.go: coder/websocket client to /ws/live with subscribe, ping keepalive,
  exponential-backoff reconnect; rare/chat dispatch incl. vortex-warning + the
  MONITOR_CHARACTER filter.
- SAFE BY DEFAULT: dry-run unless a token AND DRY_RUN=0 are set, so it can never
  double-post to production. Deployed via the compose override
  (discord-rare-monitor-go), running dry-run against the same live firehose.

Validated on the server: connects, subscribes, relays a real chat in dry-run;
classifier parity 74/74 vs the Python regex.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-24 10:06:59 +02:00
..
compare feat(go-services): tracker-go — complete the Phase 1 read API 2026-06-24 09:38:10 +02:00
discord-go feat(go-services): discord-go — Go port of discord-rare-monitor 2026-06-24 10:06:59 +02:00
nginx chore(go-services): ready-to-apply nginx /go/ snippet (user must sudo) 2026-06-24 09:51:25 +02:00
tracker-go feat(go-services): tracker-go — auth gate (itsdangerous + internal-trust) 2026-06-24 09:48:47 +02:00
docker-compose.go.yml feat(go-services): discord-go — Go port of discord-rare-monitor 2026-06-24 10:06:59 +02:00