Vocard
Vocard copied to clipboard
Vocard is a simple music bot. It leads to a comfortable experience which is user-friendly, It supports Youtube, Soundcloud, Spotify, Twitch and more!
Vocard (Discord Music Bot)
Vocard is a simple custom Disocrd Music Bot built with Python & discord.py
Demo: Discord Bot Demo, Dashboard Demo
Host for you?
Tutorial
Click on the image below to watch the tutorial on Youtube.
Screenshot
Discord Bot
Dashboard
Run the Projects
Requirements
Quick Start
git clone https://github.com/ChocoMeow/Vocard.git #Clone the repository
cd Vocard #Go to the directory
python -m pip install -r requirements.txt #Install required packages
After installing all packages, you must configure the bot before to start! How To Configure
Start your bot with python main.py
Configuration
- Rename
.env Exampleto.envand fill all the values
TOKEN = XXXXXXXXXXXXXXXXXXXXXXXX.XXXXXX.XXXXXXXXXXXXXXXXXXXXXXXXXXX
CLIENT_ID = 123456789012345678
CLIENT_SECRET_ID = XXXXXXXXXX-XXXXXXXXXXXXXXXXXXXXX
SERCET_KEY = DASHBOARD_SERCET_KEY
BUG_REPORT_CHANNEL_ID = 123456789012345678
SPOTIFY_CLIENT_ID = 0XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
SPOTIFY_CLIENT_SECRET = 0XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
GENIUS_TOKEN = XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
MONGODB_URL = mongodb+srv://user:password@clusterURL
MONGODB_NAME = Vocard
| Values | Description |
|---|---|
| TOKEN | Your Discord bot token (Discord Portal) |
| CLIENT_ID | Your Discord bot client id (Discord Portal) |
| CLIENT_SECRET_ID | Your Discord bot client secret id (Discord Portal) (optional) |
| SERCET_KEY | Secret key for dashboard (optional) |
| BUG_REPORT_CHANNEL_ID | All the error messages will send to this text channel (optional) |
| SPOTIFY_CLIENT_ID | Your Spoity client id (Spotify Portal) (optional) |
| SPOTIFY_CLIENT_SECRET | Your Spoity client sercret id (Spotify Portal) (optional) |
| GENIUS_TOKEN | Your genius api key (Genius Lyrics API) (optional) |
| MONGODB_URL | Your Mongo datebase url (Mongodb) |
| MONGODB_NAME | The datebase name that you created on Mongodb |
- Rename
settings Example.jsontosettings.jsonand customize your settings (Note: Do not change any keys fromsettings.json)
{
"nodes": {
"DEFAULT": {
"host": "127.0.0.1",
"port": 2333,
"password": "password",
"secure": false,
"identifier": "DEFAULT"
}
},
"prefix": "?",
"activity":[
{"listen": "/help"}
],
"bot_access_user": [],
"embed_color":"0xb3b3b3",
"default_max_queue": 1000,
"lyrics_platform": "A_ZLyrics",
"ipc_server": {
"host": "127.0.0.1",
"port": 8000,
"enable": false
},
"sources_settings": {
"youtube": {
"emoji": "<:youtube:826661982760992778>",
"color": "0xFF0000"
},
"youtube music": {
"emoji": "<:youtube:826661982760992778>",
"color": "0xFF0000"
},
"spotify": {
"emoji": "<:spotify:826661996615172146>",
"color": "0x1DB954"
},
"soundcloud": {
"emoji": "<:soundcloud:852729280027033632>",
"color": "0xFF7700"
},
"twitch": {
"emoji": "<:twitch:852729278285086741>",
"color": "0x9B4AFF"
},
"bandcamp": {
"emoji": "<:bandcamp:864694003811221526>",
"color": "0x6F98A7"
},
"vimeo": {
"emoji": "<:vimeo:864694001919721473>",
"color": "0x1ABCEA"
},
"apple": {
"emoji": "<:applemusic:994844332374884413>",
"color": "0xE298C4"
},
"reddit": {
"emoji": "<:reddit:996007566863773717>",
"color": "0xFF5700"
},
"tiktok": {
"emoji": "<:tiktok:996007689798811698>",
"color": "0x74ECE9"
}
},
"default_controller": {
"embeds": {
"active": {
"description": "**Now Playing: ```[@@track_name@@]```\nLink: [Click Me](@@track_url@@) | Requester: @@requester@@ | DJ: @@dj@@**",
"footer": {
"text": "Queue Length: @@queue_length@@ | Duration: @@track_duration@@ | Volume: @@volume@@% {{loop_mode != 'Off' ?? | Repeat: @@loop_mode@@}}"
},
"image": "@@track_thumbnail@@",
"author": {
"name": "Music Controller | @@channel_name@@",
"icon_url": "@@bot_icon@@"
},
"color": "@@track_color@@"
},
"inactive": {
"header": {
"title": "There are no songs playing right now"
},
"description": "[Support](@@server_invite_link@@) | [Invite](@@invite_link@@) | [Questionnaire](https://forms.gle/Qm8vjBfg2kp13YGD7)",
"image": "https://i.imgur.com/dIFBwU7.png",
"color": "@@default_embed_color@@"
}
},
"default_buttons": [
["back", "resume", "skip", {"stop": "red"}, "add"],
["tracks"]
],
"disableButtonText": false
},
"cooldowns": {
"connect": [2, 30],
"playlist view": [1, 30]
},
"aliases": {
"connect": ["join"],
"leave": ["stop", "bye"],
"play": ["p"],
"view": ["v"]
}
}
- For
nodesyou have to provide host, port, password and identifier of the Lavalink Server - For
prefixyou can set the prefix of the bot. (If you don't provide any prefix, the bot will disable the message command). - For
activityyou can set the activity of the bot. Example Here - For
bot_access_useryou can pass the discord user id. Example:[123456789012345678] - For
embed_coloryou must pass a Hexadecimal color code and add0xbefore the color code. Example:"0xb3b3b3" - For
default_max_queueyou can set a default maximum number of tracks that can be added to the queue. - For
lyrics_platformyou can set lyrics search engine (e.g.A_ZLyrics,Genius,lyrist)
NOTE: If you are using Genius as your lyrics search engine, you must install the lyricsgenius module (pip install lyricsgenius) - For
ipc_serveryou can set the host, password and enable of the ipc server. - For
emoji_source_rawyou can change the source emoji of the track with discord emoji like<:EMOJI_NAME:EMOJI_ID> - For
cooldownsyou can set a custom cooldown in the command. Example:"command_name": [The total number of tokens available, The length of the cooldown period in seconds] - For
aliasesyou can set custom aliases in the command. Example:"command_name": [alias1, alias2, ...] - For
default_controlleryou can set custom embeds and buttons in controller, Example Here
How to update? (For Windows and Linux)
Note: Make sure there are no personal files in the directory! Otherwise it will be deleted.
# Check the current version
python update.py -c
# Install the latest version
python update.py -l
# Install the specified version
python update.py -v VERSION
# Install the beta version
python update.py -b
