b67856462f712bdde392d9c16fb7bad060f2468b
The chatbot agent now has 14 tools (was 4) so it can answer about ANY server situation from live data instead of a static snapshot: - get_server_stats (now also returns clean count) - get_top_channels, get_recent_activity, get_top_flagged - search_messages (LIKE keyword search) - get_user_messages, get_user_profile, get_user_reputation - get_channel_culture - get_message_detail (full AI analysis of one message) - get_message_reviews (human moderation queue by status) - get_voice_recordings (with transcriptions) - get_moderation_timeline (daily flagged/warn/clean trend) - get_corrections (AI false-positive correction history) Security/quality: - Every executor now uses parameterized drizzle queries (eq/like/and). The old code interpolated model-supplied IDs into sql.raw() — a SQL injection vector. Removed. - Split static tool *definitions* into chatbot.toolDefs.ts (no DB import) so the LLM-facing schema can be unit-tested without loading the database/config layer. chatbot.tools.ts keeps only the executor. Verified: tsc + biome clean, 40 backend tests pass (4 new covering the tool-contract: names unique, required args declared, full situation coverage). Co-Authored-By: Claude Opus 5 (Nous Research)
Description
Bete Discord moderation watcher
27 MiB
Languages
TypeScript
96.8%
Nix
1%
Shell
0.9%
CSS
0.5%
PLpgSQL
0.5%
Other
0.3%