Parker 4a64f9b0b2
Some checks failed
Create and publish a Docker image / build-and-push-image (push) Has been cancelled
Warn when features are skipped
2025-03-26 18:51:26 -05:00
2024-07-18 17:36:10 -05:00
2025-03-26 18:51:26 -05:00
2024-06-20 06:15:50 -05:00
2024-12-03 22:43:27 -06:00
2024-03-28 22:53:16 -05:00
2024-12-03 22:43:27 -06:00
2025-03-26 18:37:35 -05:00
2025-02-17 21:24:31 -06:00
2024-07-10 16:37:52 -05:00
2024-03-31 00:11:06 -05:00
2024-03-28 22:53:16 -05:00
2025-03-26 17:10:54 -05:00
2025-02-17 21:24:31 -06:00


Guava Image
Guava

Dead simple Discord music bot
Invite Guava

discord.py Code Style: Black

Overview

Guava is a Discord music bot with support for multiple different music and video streaming platforms. Guava is a part of >225 Discord servers and currently supports these services:

  • YouTube
  • Apple Music
  • Spotify
  • SoundCloud
  • Bandcamp
  • Deezer
  • Twitch Streams
  • Vimeo

Getting started is easy, simply invite Guava to your server and run /help to see what all Guava has to offer.

Want to self-host?

Guava is built on Python and requires a Lavalink node running release v4 or higher with the LavaSrc and youtube-source plugins.

If you would like to run your own version of Guava, continue to read the information below.

NOTE: No matter which option you choose (Docker or bare metal) you will get a fatal error on first run due to missing the config.yaml file. A new config.yaml file will be created for you with the necessary fields for configuration. For information on each configuration field, see Configuration.

Docker

To run Guava in Docker, use the provided docker-compose.yaml file as a template for the container.

In addition to the Guava container, you must also create a Lavalink node however you choose (bare metal or docker)

Bare metal

To run Guava on bare metal, follow the steps below.

  1. Install Python 3 and Pip
  2. Clone this repository
  3. Install the requirements with pip install -r requirements.txt
  4. Run the code/bot.py file
  5. Input information into the newly created config.yaml file.
  6. Re-run the code/bot.py file.

Lavalink

For instructions on setting up a Lavalink node on bare metal, look here. Refer to the plugin repositories for support on configuring them.

P.S. Only the Deezer/SoundCloud sources/search providers are needed in the LavaSrc plugin.

After setting up your Lavalink node, it is highly recommended to configure IPv6 rotation with at least a /64 or /48 block. IPv6 rotation helps to relieve issues from getting rate limited/blocked from YouTube and other sources. There are helpful guides for setting this up which are available on GitHub, however, this is the one that I have used .

An example of my personal application.yml configuration file can be found here.

Configuration

BOT_INFO | REQUIRED

Field Description Requirement
TOKEN The token for your bot. Create a bot at discord.com/developers REQUIRED
BOT_COLOR HEX CODE: Color that will be used for message embeds REQUIRED
BOT_INVITE_LINK URL: Discord Invite link for your bot OPTIONAL - Adds an "Invite Me" button to the /help message
FEEDBACK_CHANNEL_ID CHANNEL ID: Discord channel for feedback messages to be sent to OPTIONAL - Used for feedback messages (/feedback)
BUG_CHANNEL_ID CHANNEL ID: Discord channel for bug messages to be sent to OPTIONAL - Used for bug reporting (/bug)
LOG_SONGS BOOLEAN: Whether or not to log song events in track_events.log OPTIONAL - default false
Field Description Requirement
HOST Host address for your Lavalink node REQUIRED
PORT Port for your Lavalink node REQUIRED
PASSWORD Password to authenticate into the Lavalink node REQUIRED

YOUTUBE | OPTIONAL

Field Description Requirement
ENABLED BOOLEAN: Whether or not playing from YouTube is allowed/supported OPTIONAL

SPOTIFY | OPTIONAL

Field Description Requirement
SPOTIFY_CLIENT_ID CLIENT ID: ID from Spotify Developer account OPTIONAL - Used for Spotify support
SPOTIFY_CLIENT_SECRET CLIENT SECRET: Secret string from Spotify Developer account OPTIONAL - Used for Sporify support

GENIUS | OPTIONAL

Field Description Requirement
GENIUS_CLIENT_ID CLIENT ID: ID from Genius API Dashboard OPTIONAL - Used for the /lyrics command
GENIUS_CLIENT_SECRET CLIENT SECRET: Secret string from Genius API Dashboard OPTIONAL - Used for the /lyrics command

AI | OPTIONAL

Field Description Requirement
SERVICE Which providers API you will use. Supports groq or openai OPTIONAL - Used to support the /autoplay feature
API_KEY API key for the provider you are using OPTIONAL - Used to support the /autoplay feature

If you have any questions, feel free to email at contact@pkrm.dev. Thank you for checking out Guava, and happy coding.

Description
Dead simple Discord music bot
Readme 924 KiB
Languages
Python 100%