Lilianne is a Discord bot that plays music over voice chat.
Each user in the voice channel can queue up songs they want to play. Lilianne will choose who gets their song played based on the order in which users joined the music channel. This way, everyone gets a turn to play their music!
At the moment, Lilianne supports the following services:
- YouTube
- SoundCloud
After retrieving the songs, Lilianne will perform additional processing such as volume normalization.
Check the roadmap for a look at what's coming in the future.
You will need:
- Node.js
- ffmpeg
- a Redis server
- a Discord app with an associated bot user
- a Discord server with a chat channel and a voice channel for music, with the bot on the server
First, if you have Git installed, run:
git clone https://github.com/meishuu/lilianne.git
Otherwise, you can download the latest source from GitHub and unzip it anywhere convenient.
Next,
cd path/to/lilianne
npm install
You will need to set up a configuration file as a JSON file. For a list of possible options, please see the ConfigOptions
interface in src/index.ts
.
Note that any fields without a question mark ?
after the field name are required. This means your config file must have, at minimum:
{
"discord": {
"oauth2": {
"client_id": "...",
"client_secret": "..."
},
"bot": {
"token": "...",
"server_id": "...",
"text_channel": "...",
"voice_channel": "..."
},
},
"radio": {
"cache": "..."
},
"web": {
"url": "..."
}
}
You can get discord.oauth2.client_id
, discord.oauth2.client_secret
, and discord.bot.token
from your Discord app's information page. There, you should add a Redirect URI that points to web.url
with /auth
appended to the path.
discord.bot.server_id
, discord.bot.text_channel
, and discord.bot.voice_channel
can be determined from within Discord by going to Settings, Appearance, Advanced and turning on "Developer Mode", then right-clicking on the server or channels and clicking "Copy ID". Use these for the config values.
radio.cache
points to the directory in which to store cached songs. An absolute path is preferred but not required.
For development:
node path/to/lilianne/lib path/to/config.json
This supports hot module reloading for React components. If any web client code changes, the page will be updated accordingly.
For production:
npm run build
NODE_ENV=production node path/to/lilianne/lib path/to/config.json