Discord Voice & Text Conversation Logger + AI Summarizer
Joins your voice channel, transcribes everything everyone says, reads the VC text chat, and gives you organized AI-powered meeting notes โ all from one slash command.
| Feature | Description |
|---|---|
| ๐๏ธ Live Voice Transcription | Transcribes every person in the voice channel separately in real time โ handles people talking over each other |
| ๐ฌ VC Text Chat Monitoring | Automatically reads the voice channel's built-in text chat (no extra setup) |
| ๐ Combined Timeline | Voice and text are merged into one chronological transcript so nothing is out of order |
| ๐ก Periodic Live Updates | Posts a quick "what's happening right now" summary at a regular interval (default: every 10 min) |
| โฑ๏ธ Configurable Summary Interval | Set the live update interval from 1โ60 minutes right in the slash command |
| ๐ Full Narrative Summary | When you stop, you get a detailed story-style writeup of the entire conversation |
| ๐ Cliff's Notes | 7 key takeaways + 6-sentence high-level + 15-sentence full summary |
| ๐ฅ Transcript Export | Download the raw transcript as a Markdown .md file with /chatrobber transcript |
| ๐ฅ Speaker Stats | See exactly how many voice utterances and text messages each person contributed |
| ๐ Auto-Stop on Empty Channel | Bot automatically stops and generates reports if everyone leaves the voice channel (60 s grace period) |
| ๐ Ephemeral Responses | All command responses are only visible to you โ nobody else sees them |
You need four things, all free (or nearly free). Here's exactly what they are and where to get them:
| # | What | Where to get it | Cost |
|---|---|---|---|
| 1 | Node.js (version 18 or higher) | nodejs.org โ click the big green "LTS" button | Free |
| 2 | A Discord Bot Token | Discord Developer Portal (full steps below) | Free |
| 3 | A Deepgram API Key | console.deepgram.com | Free tier available |
| 4 | An OpenRouter API Key | openrouter.ai/keys | Pay per use โ pennies per session |
Don't skip steps. Go in order. Each one takes a couple of minutes.
- Go to https://nodejs.org
- Click the big green "LTS" button to download the installer
- Run the installer โ click Next through every screen (all the defaults are fine)
- When it's done, open a terminal to make sure it worked:
- Windows: Press
Win + R, typecmd, press Enter - Mac: Open Terminal from Applications โ Utilities
- Windows: Press
- Type this and press Enter:
node --version - You should see a version number like
v20.x.x. If you get an error, restart your computer and try step 5 again.
Option A โ Download as ZIP (easiest):
- On the GitHub page, click the green "Code" button โ "Download ZIP"
- Unzip the file to a folder you can find easily (like your Desktop)
Option B โ Clone with Git (if you know what Git is):
git clone https://github.com/chchchadzilla/ChatRobber.git
cd ChatRobber
- Open a terminal / command prompt
- Navigate to the ChatRobber folder:
- Windows:
cd Desktop\ChatRobber(or wherever you put it) - Mac:
cd ~/Desktop/ChatRobber
- Windows:
- Run:
npm install - Wait for it to finish. You'll see a new
node_modulesfolder appear โ that's normal.
Windows users: You can also just double-click the
setup.batfile inside the ChatRobber folder. It does the same thing.
This is the longest step, but just follow the numbered list exactly:
Create the bot application:
- Go to https://discord.com/developers/applications
- Sign in with your Discord account if asked
- Click the blue "New Application" button (top right)
- Name it
ChatRobber(or whatever you want) and click Create
Get your bot token:
- Click "Bot" in the left sidebar
- Click "Reset Token" โ click "Yes, do it!"
- Copy the token that appears โ paste it somewhere safe (Notepad, a sticky note, etc.). You will need it in Step 7.
โ ๏ธ Never share your bot token with anyone. It's like a password for your bot.
Turn on required permissions:
- Scroll down on the Bot page to "Privileged Gateway Intents"
- Turn ON all three of these switches:
- โ Presence Intent
- โ Server Members Intent
- โ Message Content Intent
- Click Save Changes at the bottom (don't skip this!)
Invite the bot to your server:
- Click "OAuth2" in the left sidebar
- Click "URL Generator"
- Under Scopes, check these two boxes:
- โ
bot - โ
applications.commands
- โ
- Under Bot Permissions, check these boxes:
- โ
Send Messages - โ
Attach Files - โ
Embed Links - โ
Read Message History - โ
Connect(under Voice Permissions) - โ
Speak(under Voice Permissions) - โ
Use Voice Activity(under Voice Permissions)
- โ
- Copy the URL at the bottom of the page
- Open that URL in your browser
- Select your server from the dropdown and click Authorize
The bot will now show up in your server's member list (it will be offline โ that's fine, we haven't started it yet).
Deepgram is the service that turns voice audio into text.
- Go to https://console.deepgram.com
- Create a free account (or sign in)
- In the dashboard, go to API Keys
- Click "Create a New API Key"
- Name it
ChatRobberand click Create - Copy the key โ paste it somewhere safe!
๐ก Deepgram's free tier gives you $200 in credit, which is enough for many hours of transcription.
OpenRouter is the service that powers the AI summaries.
- Go to https://openrouter.ai
- Create an account (or sign in)
- Go to https://openrouter.ai/keys
- Click "Create Key"
- Copy the key โ paste it somewhere safe!
๐ก OpenRouter costs pennies. The Gemini 2.0 Flash model ChatRobber uses is extremely cheap โ a multi-hour session might cost $0.01โ$0.05.
Now you'll plug in the three keys you collected.
- Open the ChatRobber folder on your computer
- Find the file called
.env.example - Make a copy of that file and rename the copy to
.env(just.env, nothing else)- Windows: Right-click the file โ Copy โ Paste โ right-click the copy โ Rename โ type
.env - Mac/Linux terminal:
cp .env.example .env
- Windows: Right-click the file โ Copy โ Paste โ right-click the copy โ Rename โ type
- Open the new
.envfile with any text editor (Notepad, TextEdit, VS Code โ anything works) - Replace the placeholder text with the keys you copied earlier:
DISCORD_TOKEN=paste_your_discord_bot_token_here
DEEPGRAM_API_KEY=paste_your_deepgram_api_key_here
OPENROUTER_API_KEY=paste_your_openrouter_api_key_hereRules:
- No quotes around the values
- No spaces around the
=sign - Each key goes on its own line
- Save the file when you're done
- Open a terminal / command prompt inside the ChatRobber folder
- Run:
npm start - You should see something like:
[ChatRobber] โ Logged in as ChatRobber#1234 [ChatRobber] โน๏ธ Registering slash commandsโฆ [ChatRobber] โ Slash commands registered.
Congratulations โ the bot is online! ๐
To stop the bot at any time, press Ctrl + C in the terminal window.
The bot runs as long as the terminal window is open. Close the terminal = bot goes offline.
Everything is controlled with a single slash command: /chatrobber
Type this in any text channel on your server:
/chatrobber start voice_channel:#your-vc output_channel:#summary-channel
| Option | Required? | What it does |
|---|---|---|
voice_channel |
โ Yes | The voice channel to join. The bot listens to voice and automatically watches its built-in text chat. |
output_channel |
โ Yes | The text channel where live updates and final summaries will be posted. |
chunk_interval |
No | How often (in minutes) the bot posts live updates. Default is whatever SUMMARY_INTERVAL_MINUTES is in your .env (10 min by default). Accepts 1โ60. |
Example with custom interval:
/chatrobber start voice_channel:#General chunk_interval:5 output_channel:#meeting-notes
This starts monitoring #General voice, posting live updates every 5 minutes to #meeting-notes.
๐ก Tip: Use a private channel for
output_channelso summaries don't clutter public chat.
/chatrobber status
Shows: how long the session has been running, how many voice utterances and text messages have been captured, and per-person speaker stats (who's talked the most).
/chatrobber stop
This will:
- Disconnect from the voice channel
- Generate the full narrative summary of the combined conversation
- Generate the Cliff's Notes (7 takeaways + summaries)
- Post everything to the output channel
- Let you know you can download the transcript with
/chatrobber transcript
/chatrobber transcript
Sends you a .md (Markdown) file containing the full raw transcript from the last session โ every voice utterance and text message, in chronological order, with timestamps and speaker names. Great for archiving or searching later.
The transcript is saved until you start a new session or restart the bot.
๐ก Live Update โ Interval #3 The group has shifted to discussing deployment options. John proposed containerizing the app. Sarah flagged cost concerns with the current cloud provider.
โฑ๏ธ 30m 0s into the session
Full Summary:
๐ Conversation Summary The meeting began with John presenting the quarterly results. Revenue was up 15%. The team then discussed deployment strategies, with Sarah explaining the cost tradeoffsโฆ (detailed narrative covering the entire voice + text conversation)
Cliff's Notes:
๐ Cliff's Notes
๐ 7 KEY TAKEAWAYS:
- Revenue is up 15% quarter-over-quarter
- Docker was chosen for deployment (etc.)
๐ HIGH-LEVEL SUMMARY (6 sentences): (concise overview)
๐ FULL SUMMARY (15 sentences): (thorough overview)
You can tweak these in your .env file. All of them are optional โ the defaults work great.
| Setting | Default | What it does |
|---|---|---|
SUMMARY_INTERVAL_MINUTES |
10 |
How often live updates are posted (in minutes). Can also be overridden per session with the chunk_interval option. |
CHUNK_MODEL |
google/gemini-2.0-flash-001 |
AI model used for periodic chunk summaries |
FINAL_MODEL |
google/gemini-2.0-flash-001 |
AI model used for the final narrative summary |
DEEPGRAM_MODEL |
nova-3 |
Deepgram speech-to-text model |
DEEPGRAM_LANGUAGE |
en |
Language code for speech recognition |
DEBUG |
false |
Set to true for verbose console log output |
ChatRobber/
โโโ .env.example โ Template for your config (copy this to .env)
โโโ .env โ Your actual config (you create this)
โโโ package.json โ Project info & dependencies
โโโ setup.bat โ Windows quick-install script (double-click)
โโโ setup.sh โ Mac/Linux quick-install script
โโโ img_assets/ โ Branding images
โโโ src/
โ โโโ index.js โ Entry point โ starts the bot
โ โโโ config.js โ Loads & validates environment settings
โ โโโ bot.js โ Discord client, slash commands, event handlers
โ โโโ session.js โ Core session manager (voice + text + summaries)
โ โโโ services/
โ โ โโโ openrouter.js โ OpenRouter API client
โ โ โโโ summarizer.js โ AI prompts & summarization logic
โ โ โโโ transcriber.js โ Per-user Deepgram live transcription
โ โโโ utils/
โ โโโ embeds.js โ Discord embed builders (formatting)
โ โโโ logger.js โ Console logging helper
"Missing required environment variables"
You didn't create a .env file, or it's missing one of the three required keys.
Fix: Make sure you have a file called .env (not .env.example) in the ChatRobber folder with all three keys filled in. See Step 7 above.
"Could not join the voice channel"
The bot doesn't have permission to enter the voice channel.
Fix: In Discord, go to the voice channel's settings โ Permissions โ make sure the bot (or its role) has Connect and Speak enabled.
Bot is online but slash commands don't show up
Discord can take up to an hour to sync slash commands globally.
Fix: Wait a few minutes and try again. If it still doesn't work, kick the bot from your server and re-invite it using the URL from Step 4 (make sure applications.commands is checked under Scopes).
No voice transcriptions appearing
Either nobody is speaking, or there's a Deepgram issue.
Fix: Check the terminal for error messages. Make sure your Deepgram API key is valid and has credits (check at console.deepgram.com).
"OpenRouter API error"
Your OpenRouter key may be invalid or out of credits.
Fix: Check your balance and key at openrouter.ai/keys.
Bot disconnects from voice randomly
This usually means a network hiccup.
Fix: Just start a new session with /chatrobber start. If it keeps happening, check your internet connection.
No text messages being captured
People might be typing in the wrong channel.
Fix: Make sure people are using the voice channel's built-in text chat (click the chat icon while in the VC), not a separate text channel. ChatRobber monitors the VC's own text chat automatically.
Bot stops by itself and says "auto-stopped"
Everyone left the voice channel and nobody came back within 60 seconds.
Fix: This is intended behavior โ the bot cleans up after itself when the channel empties. Just start a new session when you're ready.
Per-User Audio Streams โ Discord sends a separate audio stream for each person in the voice channel. ChatRobber runs an independent Deepgram transcription for each user, so overlapping speech is captured cleanly.
Combined Timeline โ Voice utterances (๐๏ธ) and text messages (๐ฌ) are interleaved into a single chronological transcript. This gives the AI the full picture of the conversation, not two disconnected halves.
Chunked Summarization โ Every N minutes, the latest slice of transcript is summarized into a "chunk". When you stop, all chunks are fed to the AI to produce the final narrative. This keeps token costs low even for long sessions.
Auto-Stop โ The bot watches for voiceStateUpdate events. If the voice channel becomes empty, a 60-second grace period starts. If someone rejoins, it cancels. If nobody comes back, the bot auto-stops and posts the final reports.
MIT โ do whatever you want with it.
