Commit Graph
130 Commits
Author SHA1 Message Date
tiennm99 3904aa6750 refactor(misc): share disclaimer template 2026-07-09 11:34:53 +07:00
tiennm99 5c5fc5c168 feat(misc): add VNG disclaimer aliases 2026-07-07 11:19:27 +07:00
tiennm99 aa74379f81 feat(coin): allow upstream-supported tickers 2026-07-07 10:12:29 +07:00
tiennm99 00dc4c7800 feat(misc): add wheelofnamesbeta render API 2026-07-07 00:12:58 +07:00
tiennm99 194caf17eb fix(lol): rename next week command 2026-07-06 20:46:10 +07:00
tiennm99 00a5ff1c0b feat(lol): add tomorrow and next-week schedules 2026-07-06 20:20:07 +07:00
tiennm99 0a4d237391 fix(misc): restore wheel beta renderer 2026-07-06 15:30:29 +07:00
tiennm99 e7154d27f3 feat(misc): render wheel beta with canvas 2026-07-06 15:18:47 +07:00
tiennm99 5e07ccc4f6 fix(misc): improve wheel beta label readability 2026-07-06 14:37:35 +07:00
tiennm99 edd62603fa feat(misc): support vietnamese wheel beta text 2026-07-06 14:28:54 +07:00
tiennm99 ae0b61b61f feat(misc): move wheel beta pointer right 2026-07-06 14:14:34 +07:00
tiennm99 c8a1586580 feat(misc): rotate wheel beta labels 2026-07-06 14:06:18 +07:00
tiennm99 2ac4f59b53 feat(misc): polish wheel beta animation 2026-07-06 13:48:51 +07:00
tiennm99 6d021d1e04 fix(misc): satisfy wheel spin lint 2026-07-06 13:23:12 +07:00
tiennm99 eb4a3c49c4 feat(misc): improve wheel beta spin animation 2026-07-06 13:12:22 +07:00
tiennm99 4ffa045ffe fix(misc): hold wheel beta result 2026-07-06 12:31:37 +07:00
tiennm99 aebdab0e8b fix(misc): label wheel beta slices 2026-07-06 12:26:53 +07:00
tiennm99 0240bc88b5 fix(misc): tune wheel beta timing 2026-07-06 12:16:15 +07:00
tiennm99 23fc766a64 fix(misc): improve wheel beta animation 2026-07-06 11:47:41 +07:00
tiennm99 3763b293d6 feat(misc): add wheelofnames beta animation 2026-07-06 11:41:20 +07:00
tiennm99 079d506695 feat(misc): add random command and wheel draft streaming 2026-07-06 11:26:50 +07:00
tiennm99 a6a24ba4c9 feat(lol): add EWC schedule support 2026-07-06 09:40:01 +07:00
tiennm99 3832c1aa5e feat(gold): show buy and sell prices in portfolio 2026-07-03 13:34:34 +07:00
tiennm99 d375029214 feat(misc): add wheelofnames command 2026-07-03 11:12:34 +07:00
tiennm99 beebddf1d8 refactor(lol): remove match cache cleanup logic 2026-07-01 16:53:11 +07:00
tiennm99 275c83b8a6 feat(lol): make match cache fallback-only 2026-07-01 16:41:59 +07:00
tiennm99 2fb10ff632 refactor: remove completed migration logic 2026-07-01 16:20:30 +07:00
tiennm99 3049af2800 perf(stats): simplify username lookup index 2026-07-01 16:06:03 +07:00
tiennm99 b0b4321fa1 feat(lol): expire match cache 2026-07-01 13:40:37 +07:00
tiennm99 e6d5bc3cc9 feat: refine command names and behavior 2026-07-01 13:19:42 +07:00
tiennm99 5254ab4c8e refactor: remove completed startup migrations 2026-07-01 11:42:59 +07:00
tiennm99 ad153d8e6c fix(stats): merge legacy trade command counts 2026-07-01 11:21:11 +07:00
tiennm99 364ddee285 feat(stats): migrate command history 2026-07-01 11:10:36 +07:00
tiennm99 788f1015b5 feat(commands): simplify portfolio command names 2026-07-01 10:53:52 +07:00
tiennm99 c362732951 feat: rename wc schedule commands 2026-07-01 10:42:56 +07:00
tiennm99 ccaa34336d feat: rename lol schedule module 2026-07-01 10:38:49 +07:00
tiennm99 8f0286e54f feat(stats): use queryable Mongo usage records 2026-07-01 10:22:03 +07:00
tiennm99 034252b2ea fix(cron): claim daily pushes by ict day 2026-07-01 09:31:58 +07:00
tiennm99 7f16ccf668 fix(lolschedule): silence empty daily push 2026-06-30 09:01:40 +07:00
tiennm99 ef2f70b49b fix(wc): send silent daily push at midnight ict 2026-06-30 08:56:01 +07:00
tiennm99 9c998a0e2f refactor(modules): remove twentyq genai integration 2026-06-29 10:07:21 +07:00
tiennm99 20dc03c6d2 refactor(config): remove price URL env overrides 2026-06-29 09:23:20 +07:00
tiennm99 5971347a6b feat(wc): add world cup schedule module 2026-06-29 00:59:30 +07:00
tiennm99 b0586903f5 refactor(deploy): remove retired aws support 2026-06-29 00:11:42 +07:00
tiennm99 d56c95cff2 build(coolify): rename compose file 2026-06-29 00:00:22 +07:00
tiennm99 ed867f33f0 feat(deploynotify): notify owner on every startup, no SHA dedup
Match the store-scraper-bot behaviour: DM the owner once per boot regardless of
commit, and report an unknown SHA rather than staying silent. Drop the store-
based dedup and the empty-SHA skip; resolveCommitSHA defaults to "unknown".
2026-06-28 23:25:07 +07:00
tiennm99 1fa549fa18 feat(modules): log every command with input, sender, chat, result
Emit one structured line per authorized command: input text, sender id +
username, chat type/id/title (DM vs group), and outcome (INFO ok / ERROR with
err). Replaces the prior error-only log; denied commands stay silent.
2026-06-28 22:52:55 +07:00
tiennm99 36cb5750e6 fix(telegram): clear webhook via Bot API GET to avoid empty-body POST
go-telegram's DeleteWebhook posts an empty multipart form (DropPendingUpdates
is omitempty); some networks answer that bodyless POST with an empty response,
failing to parse and leaving the webhook active so getUpdates 409s forever.
Replace it with a plain GET /deleteWebhook, which sends no body and parses the
JSON reliably. Keeps pending updates for a lossless cutover.
2026-06-28 22:41:49 +07:00
tiennm99 60a7aa5836 fix(server): retry webhook clear on startup past transient empty-body error
Telegram's edge can return an empty body on the first request after a cold
container start, failing the single best-effort DeleteWebhook with 'unexpected
end of JSON input' and leaving a stale webhook that 409s getUpdates. Retry up
to 5 times with a 1s backoff so long polling is reliably unblocked.
2026-06-28 22:33:34 +07:00
tiennm99 cc547136b7 refactor(server): drop HTTP /cron route; run crons in-process only
The in-process scheduler is the sole cron trigger on self-host, so the
/cron/{name} HTTP endpoint and its CRON_SHARED_SECRET are dead surface.
Reduce the HTTP server to GET / (health) and remove the cron secret config,
SSM binding, and now-unused timeout.
2026-06-28 22:15:04 +07:00