The greatest Discord bot on the planet (don't fact-check that).
- Playing music in voice channels from supported sources (see below)
- Clipping audio from voice channels
- Text-to-speech with Flowery TTS in voice channels
- OpenAI integration with the OpenAI API
- Chat with AI (ChatGPT-4o with Vision)
- AI-generate images with DALL-E 3
- Last.fm integration with the Last.fm API
- Get currently playing Spotify track information
- Search Google (and Google Images) with the Google API
- Get Fortnite stats, daily shop updates, and map information with the Fortnite API
Bobo supports all formats supported by LavaPlayer, as well as Spotify and Deezer supported by LavaSrc, with extra functionality for many sources from API integrations.
Bobo isn't currently publicly available to be invited to your server, but you can host your own instance easily (see below).
You can run it on any platform with Docker installed by copying the docker-compose.yml file, filling in the environment variables in the .env
file (see below), and running the command: docker-compose up -d
.
Important
.env.example is an example file including all the required environment variables. You can rename it to .env
and fill in the values. It includes some default values, such as !
as the message command prefix or 0
as the UTC offset (for time-related features), which you can change to your liking, but you must fill in values such as the owner's Discord user ID, the database credentials, or API keys, for their respective features to work. It is recommended to fill in all values to ensure all features work as intended. Of course, the TOKEN
value is required for the bot to even run at all.
The Docker configuration also includes a MySQL database for storing user/server data, so you can run the bot without setting up a database separately (though you will need to add credentials in the .env
file).
The Docker image for the bot used in the configuration can be found here on Docker Hub.
Note
The prefix of !
is shown here for message commands, but can be changed in the .env
file.
Additionally, command aliases are available for some commands (when used as message commands) and are shown in parentheses.
Can be used by the bot owner only (as message commands only) - configured with the owner's Discord user ID in the .env
file
!restart
- Restarts Bobo!set-activity
- Sets Bobo's activity/status- Subcommands:
custom <status>
- Sets Bobo's status to<status>
playing <activity>
- Sets Bobo's activity toplaying <activity>
streaming <activity> <url>
- Sets Bobo's activity tostreaming <activity>
with the stream URL<url>
listening <activity>
- Sets Bobo's activity tolistening to <activity>
watching <activity>
- Sets Bobo's activity towatching <activity>
competing <activity>
- Sets Bobo's activity tocompeting in <activity>
- Subcommands:
!dm <user-id> <message>
- Sends a direct message to a user specified by their Discord user ID!sql <statement>
- Executes an SQL statement in the linked database (see below)
Caution
The !sql
command is dangerous and should be used with caution. It can be used to modify the database directly, which can cause data loss or corruption if used incorrectly. Most use cases should be to read data, rather than write it.
Can be used by server admins only (as slash commands only)
/say <message>
- Makes Bobo say<message>
in the current channel/config <setting> <channel>
- Configures the server- Settings:
clips channel
quotes channel
Fortnite Shop channel
- No channel input clears the setting
- Settings:
Can be used by anyone with the proper permissions (as slash commands or message commands)
/help <command>
- Gets help for a specific command. No input defaults to a list of all commands/google <query>
- Searches Google for<query>
and returns the first 10 results/random
- Gets a random quote/clip from the respective configured channel- Subcommands:
quote
- Gets a random quoteclip
- Gets a random clip
- Subcommands:
/fortnite
- Get info about Fortnite- Subcommands:
stats <username>
- Gets the stats of<username>
in Fortniteinfo
- Get info about Fortnite- Choices:
shop
- Gets the current Fortnite shopnews
- Gets the current Fortnite (Battle Royale) newsmap
- Gets the current Fortnite map
- Choices:
- Subcommands:
Requires the user to be logged into Last.fm
/fmlogin
- Logs into Last.fm/fmlogout
- Logs out of Last.fm - to be used normally, or if the login becomes invalid/outdated (e.g. the user changes their username)/track <track>
- Gets information about a given track on Last.fm. No input defaults to last played track/album <album>
- Gets information about a given album on Last.fm. No input defaults to last played album/artist <artist>
- Gets information about a given artist on Last.fm. No input defaults to last played artist
/tldr <minutes>
- Summarizes the recent conversation in the channel.<minutes>
is the number of minutes to look back in the channel. If not provided, searches until a 5-minute gap is found/chat
- Opens a thread to chat with ChatGPT/image
- Generates an image with DALL-E 3
Can be used only while in an audio channel
/join
- Joins the voice channel you are in/leave
- Leaves the voice channel/mute
- Mutes/unmutes Bobo in the voice channel/deafen
- Deafens/undeafens Bobo in the voice channel (Bobo will not be able to clip you)/clip
- Clips the last 30 seconds of audio from the voice channel you are in. The clip will also be sent to the configured clips channel, if one is set
Subset of voice commands (and so can only be used while in an audio channel)
/play
- Plays a track in the voice channel you are in (alias:!p
)- Subcommands:
track <url/query>
- Plays given YouTube<url>
or the first track result from<query>
file <file>
- Plays the given<file>
(this subcommand can't be used as a message command)
- Subcommands:
/tts <message>
- Plays<message>
as text-to-speech for the voice channel./search
- Searches a platform, and plays the requested result- Choices:
youtube/spotify/soundcloud
- Search YouTube/Spotify/SoundCloudtrack/playlist/album
- Search for a track/playlist/album
- Choices:
/lyrics
- Get the lyrics of the currently playing track/pause
- Pauses the current track/resume
- Resumes the current track/skip
- Skips the current track/loop
- Loops the currently playing track or queue- Subcommands:
track
- Loops the currently playing trackqueue
- Loops the entire queueoff
- Turns looping off
- Subcommands:
/repeat
- Repeats the current/last-played track/now-playing
- Shows the current track/seek
- Seeks to specified position in the current track- Subcommands:
forward <seconds>
- Seeks forward by<seconds>
secondsbackward <seconds>
- Seeks backward by<seconds>
secondsposition <position>
- Seeks to<position>
in the current track
- Subcommands:
/queue
- Shows/manipulates the current queue (alias:!q
)- Subcommands:
show
- Shows the current queueclear
- Clears the current queue (alias:!clear
(rather than!queue clear
))remove <index>
- Removes the track at<index>
from the queueshuffle
- Shuffles the queue
- Subcommands:
For a detailed list of planned features, improvements, and bug fixes, please refer to the TODO.md file.
Please refer to the terms-of-service.md and privacy-policy.md files for Bobo's Terms of Service and Privacy Policy, respectively.