this is a discord bot that joins a random voice channel in a random guild and plays a random sound file (mp3) at a random time. it uses the @discordjs/voice
library for voice connections and the node-schedule
library for scheduling the next join. the bot also starts a web server using the startserver
function from the webserver
module.
to use this project, you'll need to install FFmpeg:
- For Linux, run the command
sudo apt install ffmpeg
in your terminal. - For other operating systems, download FFmpeg from the official website and install it.
once you have FFmpeg installed, follow these steps to get the project up and running:
- Run
npm i
in your terminal to install all dependencies. - Run
npm run create
to create the.env
file in the root folder. - Open the
.env
file and insert your Discord bot token. - Run
npm start
to start the project.
make sure you have those installed:
- Node.js (v16 or later)
- npm (v7 or later)
[OPTIONAL] on server i run this using pm2 to manage it.
if the command npm run create
doesnt work, create a .env file with the following contents in same folder as bot.ts:
TOKEN=<your Discord bot token>
INTERVALMIN_MINUTES=<minimum interval in minutes>
INTERVALMAX_HOURS=<maximum interval in hours>
VOICECHANNELRETRIES=<number of retries to find a voice channel with members in it>
replace <your Discord bot token>
with your actual Discord bot token. replace <minimum interval in minutes>
, <maximum interval in hours>
, and <number of retries to find a voice channel with members in it>
with your desired values.
Helpful links for creating your Discord application and finding the token:
Getting token | Discord Developer Portal
once the bot start successfully youll get the full invitation link in the terminal.
once the project starts it will host a website where the user can access and upload sound clips.
it will run on ssl ports if certificates exists. you can generate certficates using the script located at:
./client/certs/create-cert.sh
using git-bash for example. this is not mandatory and the server will use http if no certficates exists.
this bot uses the following libraries:
@discordjs/voice
: For voice connections.discord.js
: For interacting with the Discord API.dotenv
: For loading environment variables from a.env
file.fs
: For reading files from the file system.node-schedule
: For scheduling the next join.express
: For starting a web server.
if you'd like to contribute to this project, please fork the repository and create a pull request with your changes.