Find a file
2021-01-24 16:58:29 +05:30
bin Add dockerfile 2021-01-20 01:12:29 +05:30
sounds Updated README, re-organized code, modified sounds 2020-10-26 20:46:36 +05:30
.gitignore First Version 2020-09-09 22:38:22 +05:30
Dockerfile Add dockerfile 2021-01-20 01:12:29 +05:30
index.js Exit channel without specifying it 2020-10-27 00:33:22 +05:30
LICENSE Initial commit 2020-09-09 22:35:39 +05:30
package-lock.json Add dockerfile 2021-01-20 01:12:29 +05:30
package.json fix engines.node version 2021-01-24 16:58:29 +05:30
README.md R E A D M E 2021-01-21 00:40:32 +05:30

Discord Voice Recorder

A Discord.js script which can record voice calls. Summon the bot to a voice channel, and voilà! the audio is piped right into your local machine. Jump to Installation & Usage to get started.

Index

Note: Recording voice calls without prior consent violates privacy. Do not use this bot without approval. I'm not responsible for your insanity.

Installation and Usage

Clone the repository :

git clone https://github.com/chebro/discord-voice-recorder/

Create a discord bot if you don't have one already and invite the bot to your server, then:

  1. Create config.json file and a /recordings directory at the root folder.
  2. Paste the bot token (from developer window) and any bot prefix into config.json, like so:
{
    "BOT_TOKEN": "<YOUR_BOT_TOKEN>",
    "PREFIX": "<BOT_PREFIX>"
}

You can run the script in any of the following two ways:

Run Locally

  1. Run npm i to download necessary node_modules.

  2. Run npm start.

The bot should be online.

Run in Container

  1. Build the docker image:
docker build -t dvr .
  1. Bind /recordings directory on host to container and start the container with a custom name:
docker run \          
  --name <CONTAINER_NAME> \     
  --mount type=bind,source="$(pwd)"/recordings,target=/usr/src/bot/recordings \
  dvr

The bot should be online.

Bot Commands

  • Start Recording : <PREFIX>enter <VOICE_CHANNEL_NAME>

  • Stop Recording : <PREFIX>exit

Managing the Output

The output for each piece of audio stream is written to a unique file in PCM format (48000 Hz, signed 16-bit little-endian, 2 channel (stereo)) and saved to the /recordings directory.

Merge Recording

To merge all output files to /recordings/merge.pcm, run:

node /bin/merge.js

Note: Empty your recordings folder (and remove merge.pcm) after each session. Running ./bin/merge.js otherwise will dump large merge files.

Convert the Merged File to MP3

Head over to FFmpeg.org, and download executables for your OS; If you're on Windows, double-check if the FFmpeg bin is on your path. As discussed in issue #3, to convert pcm to mp3, run:

ffmpeg -f s16le -ar 48000 -ac 2 -i merge.pcm out.mp3

Thanks

Special thanks to @eslachance for the gist. It is what inspired me to make this repo.