Four Gemini capabilities (chat, image generation, speech and live voice) behind one bot, reachable by slash command or a single-character prefix. The hard part is the voice loop: Discord speaks Opus at 48 kHz stereo, Gemini Live speaks PCM at 24 kHz mono, and neither waits for the other.
Bidirectional live voice with VAD turn-taking
4 capabilities · 2 interfaces each
Context persisted in SQLite (WAL)
STACK: TypeScript · Bun · discord.js · @google/genai · SQLite · Opus
A Discord bot that overlays a speech bubble on any image, GIF or video the user can point at. Every upload has to land under the server's tier limit, so the encoder negotiates quality downward until the file fits instead of failing.
4-step progressive encode ladder
Media resolved through a 6-step fallback chain
Hard timeouts: 15s fetch · 45s ffmpeg
STACK: TypeScript · Bun · discord.js · sharp · ffmpeg
Venezuelan exchange rates posted to Discord four times a weekday, scraped from three markets in a single request. Each post remembers the previous one, so readers see the delta and direction rather than a number without context.
4 posts/weekday · America/Caracas
Directional deltas against last run
3 markets parsed per fetch
STACK: TypeScript · Bun · discord.js · croner · node-canvas