This project consists of two main components that run together:
- A Python-based Discord bot that handles commands and user interaction.
- A Lavalink server that handles all the heavy lifting of fetching and streaming audio.
- Discord Bot (jam_machine_bot.py): The user-facing part of the application. It uses the wavelink library to communicate with the Lavalink server. It's responsible for joining voice channels, managing the queue, and translating user commands into instructions for Lavalink.
- Lavalink Server (Lavalink.jar): A standalone Java application that is the audio engine. It uses an external YouTube plugin and a robust IP rotation strategy to reliably search for and stream audio from YouTube and SoundCloud, bypassing common blocks.
- Lavalink Configuration (application.yml): The settings file for the Lavalink server. It's configured for high performance and stability, using the modern YouTube plugin system.
- Plugins (plugins/ folder): Contains the necessary .jar file(s) for Lavalink to access sources like YouTube.
- Ensure you have Java 17+ and Python 3.10+ installed.
- Install the necessary Python libraries: pip install discord.py wavelink spotipy PyNaCl.
- Fill in your credentials in jam_machine_bot.py.
- Start the Lavalink server first: java -jar Lavalink.jar.
- Start the bot: python jam_machine_bot.py.
For a headless server setup, both of these processes are managed by the Windows Task Scheduler to run automatically on startup.