Music Turret is a music bot built because Companion Cube's music module felt like afterthought clutter.
It's a custom solution designed for a couple of servers, and, as such, my instance is not available for public use. Feel free to self-host, however.
In order to run the bot you will need to have the following components installed and available on your system:
- .NET 5 runtime
- Java 8 or better
- PostgreSQL server 10 or better
- Redis server
- Lavalink
The bot was designed for UNIX-like environments, and is not guaranteed to work under Windows.
The bot requires that you have .NET 5 SDK, and preferably Visual Studio 2019 installed and available on your system.
The required NuGet configurations are available in solution's root directory,
so no further NuGet configuration should be required. Should that happen to not
be the case, however, add the following MyGet feed to your NuGet sources:
https://nuget.emzi0767.com/api/v3/index.json
Just open the solution and hit build, then publish. This will create a complete
bot distribution in bin/Release/net5.0/publish/
.
Navigate to where the solution is located. From there you need to restore packages, build, and publish:
dotnet restore
dotnet build -c Release
dotnet publish -c Release -f net5.0 -r linux-x64
If you have all the required components installed, you need to properly set your environment up before running the bot.
I strongly recommend using Docker or another isolation/containerization solution to contain your bot.
You will need to log in to your PostgreSQL server, and create both a user and
a database for the bot's data. This is typically done via psql
utility.
After connecting to your database, you will first need to create a user for the
bot to authenticate as:
create user discord_turret with nocreatedb nocreaterole encrypted password 'hunter2';
Do not forget to substitute the username and password with your own values.
Next step is to create a database for the database for the bot's data:
create database discord_turret with owner='discord_turret';
Of course, don't
forget to set your own database name, and set the owner to the username you
created.
Finally, you need to input the schema into the database. Exit the psql
utility and copy the schema files from Database directory to your server. Next
up, open up a shell on your server, navigate to where you dropped the SQL
files, and execute the following:
find . -iname '*.sql' -exec cat "{}" \; | PGPASSWORD="hunter2" psql -U discord_turret -d discord_turret -h localhost
This command will load all schema files to your database. Don't forget to set
your password, username, database name, and hostname correctly.
Download and extract Lavalink. Copy the lavalink.sh
script from this repo's
Scripts directory to Lavalink's, then make it executable via
chmod +x lavalink.sh
.
Then follow the Lavalink's installation instructions, filling the config with proper values.
Open your browser and go to Google Developer Console. There, create a new project.
Once the project is created, go to its dashboard, and from there to API library. Find YouTube Data API v3, and enable it.
When you enable the API, go to Credentials tab, and press Create Credentials. Select API key as type. Copy the created API key and save it for later.
You can optionally give it a name and restrict its usage.
Go to Discord Developers page and create a new app for the bot. Give it a name and an icon, and press Save Changes. When changes are saved, go to Bot tab, and press Add Bot. Give the bot a username and avatar, and uncheck the Public Bot checkbox, then press Save Changes.
Once changes are saved, press the Copy button under the token. Save the token for later.
Copy all the files from your bot's publish directory to your target directory.
Nextup, copy the bot.sh
script from the repo's Scripts directory to the same
place as your bot, and make it executable via chmod +x bot.sh
.
Copy config.json.example
from this repository to where the bot files are, and
open it in your text editor.
Go to discord
section, and paste the Discord API token from step 4 into the
token
field. You can optionally configure other options here.
Once that's done, go to postgres
section. Enter your PostgreSQL server data
and database credentials. If your PostgreSQL server runs with SSL/TLS disabled,
set encrypt
to false
.
Next up, go to redis
section and fill it with proper data for connecting to
your Redis server.
Next, go to lavalink
section, and enter your Lavalink connection details and
the password you set when setting up Lavalink.
Finally, go to youtube
section, and paste the API key you obtained in step 3.
When all is done, press save.
Using your favourite container software or container multiplexer, start
Lavalink by running the autorestart script: ./lavalink.sh
. Detach from the
multiplexer.
Like above, using a multiplexer or a container, run the bot by doing
./bot.sh
. If everything works correctly, congratulations. If not, follow the
instructions more carefully.
Lots of effort went into making this bot, and sometimes even related software.
If you feel like I'm doing a good job, or just want to throw money at me, you can do so through any of the following:
If you have other questions or would like to talk in general, feel free to visit my Discord server.