feat(bots): bot framework polish + store

- /ws/bot endpoint: bot token auth via query param, SHA-256 lookup
- Bot WS actions: SEND_MESSAGE + DELETE_MESSAGE handled in gateway
- Bot messages: bot_id on messages table, bot badge in chat (green + BOT tag)
- Bot store: /bots lists all bots with server count + add-to-server
- Bot manager moved to /bots/manage
- Fix: command routes were double-nested under /bots/{botID}/commands
- Fix: fetchServerCommands route corrected to /bots/servers/...
This commit is contained in:
2026-07-15 12:45:44 -04:00
parent 2674c254a1
commit 7c70082f37
13 changed files with 557 additions and 22 deletions
+6 -5
View File
@@ -128,6 +128,11 @@ func main() {
gateway.ServeWS(database.DB, hub, logger, w, r, cfg.Session.CookieName)
})
// Bot WebSocket endpoint (auth via ?token= query param)
r.Get("/ws/bot", func(w http.ResponseWriter, r *http.Request) {
gateway.ServeBotWS(database.DB, hub, logger, w, r)
})
// API routes
r.Route("/api/v1", func(r chi.Router) {
// Auth (public: register, login, logout) with strict rate limiting
@@ -343,13 +348,9 @@ func main() {
reaction.NewHandler(database.DB, hub).RegisterRoutes(r)
})
// Bots
// Bots + slash commands
r.Route("/bots", func(r chi.Router) {
bot.NewHandler(database.DB).RegisterRoutes(r)
})
// Bot slash commands
r.Route("/bots/{botID}/commands", func(r chi.Router) {
bot.NewCommandHandler(database.DB).RegisterCommandRoutes(r)
})