{"id":18520352,"url":"https://github.com/hmes98318/music-disc","last_synced_at":"2025-04-04T08:02:46.458Z","repository":{"id":60192814,"uuid":"410071762","full_name":"hmes98318/Music-Disc","owner":"hmes98318","description":"A Discord music bot, supports YouTube, Spotify, SoundCloud, Deezer streams and web dashboard.","archived":false,"fork":false,"pushed_at":"2025-03-28T01:20:24.000Z","size":2051,"stargazers_count":121,"open_issues_count":12,"forks_count":107,"subscribers_count":4,"default_branch":"main","last_synced_at":"2025-04-04T07:23:56.940Z","etag":null,"topics":["discord","discord-bot","discord-js","discord-music","discord-music-bot","discord-music-bot-24-7","discordjs-v14","docker","docker-compose","music-bot","nodejs"],"latest_commit_sha":null,"homepage":"https://musicdisc.ggwp.tw","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/hmes98318.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":".github/CONTRIBUTING.md","funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":".github/CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null},"funding":{"github":null,"patreon":null,"open_collective":null,"ko_fi":"hmes98318","tidelift":null,"community_bridge":null,"liberapay":null,"issuehunt":null,"otechie":null,"lfx_crowdfunding":null,"custom":["https://www.buymeacoffee.com/hmes98318"]}},"created_at":"2021-09-24T18:56:38.000Z","updated_at":"2025-04-04T03:39:39.000Z","dependencies_parsed_at":"2023-09-29T18:10:25.260Z","dependency_job_id":"67f1b7c8-0c97-4317-9df7-847d36e0198a","html_url":"https://github.com/hmes98318/Music-Disc","commit_stats":{"total_commits":564,"total_committers":6,"mean_commits":94.0,"dds":"0.11170212765957444","last_synced_commit":"35876883bde0ec2bed7e1abdbdc37f3215423547"},"previous_names":[],"tags_count":32,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hmes98318%2FMusic-Disc","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hmes98318%2FMusic-Disc/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hmes98318%2FMusic-Disc/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hmes98318%2FMusic-Disc/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/hmes98318","download_url":"https://codeload.github.com/hmes98318/Music-Disc/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247142053,"owners_count":20890652,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["discord","discord-bot","discord-js","discord-music","discord-music-bot","discord-music-bot-24-7","discordjs-v14","docker","docker-compose","music-bot","nodejs"],"created_at":"2024-11-06T17:19:51.422Z","updated_at":"2025-04-04T08:02:46.420Z","avatar_url":"https://github.com/hmes98318.png","language":"TypeScript","funding_links":["https://ko-fi.com/hmes98318","https://www.buymeacoffee.com/hmes98318"],"categories":[],"sub_categories":[],"readme":"\u003cimg width=\"150\" height=\"150\" align=\"right\" style=\"float: right; margin: 0 10px 0 0;\" alt=\"music_disc\" src=\"public/imgs/logo/logo2.png\"\u003e\n\n# Music Disc \n\n\u003ca href=\"https://github.com/hmes98318/Music-Disc/releases\"\u003e\u003cimg alt=\"GitHub package.json version\" src=\"https://img.shields.io/github/package-json/v/hmes98318/Music-Disc?style=for-the-badge\"\u003e\u003c/a\u003e \n\u003ca href=\"https://discord.js.org/\"\u003e\u003cimg src=\"https://img.shields.io/badge/Discord.JS-v14-blue?style=for-the-badge\u0026logo=DISCORD\" /\u003e\u003c/a\u003e \n\u003ca href=\"https://nodejs.org/\"\u003e\u003cimg src=\"https://img.shields.io/badge/Node.JS-\u003e=18.x-brightgreen?style=for-the-badge\u0026logo=Node.js\"\u003e\u003c/a\u003e \n\u003ca href=\"https://github.com/hmes98318/Music-Disc/blob/main/LICENSE\"\u003e\u003cimg alt=\"GitHub\" src=\"https://img.shields.io/github/license/hmes98318/Music-Disc?style=for-the-badge\u0026color=brightgreen\"\u003e\u003c/a\u003e  \n\nA discord music bot, supports **YouTube**, **Spotify**, **SoundCloud**, **Deezer** streams and web dashboard.  \nDeveloped based on [**discord.js v14**](https://discord.js.org/#/), [**LavaShark**](https://lavashark.js.org/), [**Lavalink**](https://github.com/lavalink-devs/Lavalink/).  \n\n### Features\n* Stable\n* Use Lavalink\n* Web dashboard\n* Local node\n* Docker images\n\nIf you need the version of [**discord-player**](https://github.com/Androz2091/discord-player), please refer to this [**branch**](https://github.com/hmes98318/Music-Disc-discord-player).  \n\nIf you encounter any issues or would like to contribute to the community, please join our [Discord server](https://discord.gg/7rQEx7SPGr).  \n\n\n\n\n## Deploying with node.js\n\n### Clone the latest version of the repository\n```\ngit clone -b v3.1.0 https://github.com/hmes98318/Music-Disc.git\n```\nor [**click here**](https://github.com/hmes98318/Music-Disc/releases) to download  \n\n\n### Install the dependencies\ninstall all the dependencies from [**package.json**](./package.json)  \n```\nnpm ci\n```\n\n\n### Add Lavalink node\nEdit the [`nodelist.json`](./nodelist.json) file to add a [Lavalink](https://github.com/lavalink-devs/Lavalink) node.  \nOnly supports Lavalink **v4** nodes, **v4.0.8** or higher is recommended.  \n * Use [public node](https://lavalink-list.darrennathanael.com/)  \n * or [host your own](https://blog.darrennathanael.com/post/how-to-lavalink/)  \n * or enable [local node setup](https://musicdisc.ggwp.tw/docs/Environment-variables-description#local-node)  \n\nPlease refer to this [**documentation**](https://lavashark.js.org/docs/server-config) for detailed information.  \n\n```json\n[\n    {\n        \"id\": \"Node 1\",\n        \"hostname\": \"localhost\",\n        \"port\": 2333,\n        \"password\": \"youshallnotpass\"\n    }\n]\n```\n\n\n### Configure environment\nRefer to [**.env.example**](./.env.example) and edit the **.env** fileEdit the file.  \n```env\n# Discord Bot Token\nBOT_TOKEN = \"your_token\"\n\n# Admin of the bot (User ID)\n# For multiple admins, separate their user IDs with commas.\n# OAUTH2 mode requires setting BOT_ADMIN, BOT_CLIENT_SECRET value\nBOT_ADMIN = \"\"              \nBOT_CLIENT_SECRET = \"\"\n\n# Bot settings\nBOT_NAME = \"Music Disc\"\nBOT_PREFIX = \"+\"\nBOT_STATUS = \"online\"\nBOT_PLAYING = \"+help | music\"\nBOT_EMBEDS_COLOR = \"#FFFFFF\"\nBOT_SLASH_COMMAND = true\n\n\n# Volume settings\nDEFAULT_VOLUME = 50\nMAX_VOLUME = 100\n\n# Auto leave channel settings\nAUTO_LEAVE = true\nAUTO_LEAVE_COOLDOWN = 5000\n\n# Show voice channel updates\nDISPLAY_VOICE_STATE = true\n\n\n# Web dashboard settings\nENABLE_SITE = true\nSITE_PORT = 33333\nSITE_LOGIN_TYPE = \"USER\"   # \"USER\" | \"OAUTH2\"\n\n# USER mode settings\nSITE_USERNAME = \"admin\"\nSITE_PASSWORD = \"000\"\n\n# OAUTH2 mode settings\nSITE_OAUTH2_LINK = \"\"   # Your OAuth2 authentication link\nSITE_OAUTH2_REDIRECT_URI = \"http://localhost:33333/login\"   # Redirect link after OAuth2 authentication is complete\n\n\n# Local Lavalink node\nENABLE_LOCAL_NODE = false\nLOCAL_NODE_AUTO_RESTART = true\n# LOCAL_NODE_DOWNLOAD_LINK = \"\"\n```\n\n* [**Environment variables detailed description**](https://musicdisc.ggwp.tw/docs/Environment-variables-description)\n\n\n### Running the script \n```\nnpm run start\n```\n\n\n\n\n## Deploying with Docker\n**image link** : https://hub.docker.com/r/hmes98318/music-disc  \n\nIf you don't have any available nodes, you need to first start the server container using [Docker Compose](server/docker-compose.yml) in the server directory.  \n\n### Start with Docker Compose\nPlease put your **token** into the `BOT_TOKEN` variable.  \n```yml\nservices:\n  music-disc:\n    image: hmes98318/music-disc:latest\n    container_name: music-disc\n    restart: always\n    environment:\n      TZ: \"Asia/Taipei\"\n      BOT_TOKEN: \"your_token\"\n\n      # OAUTH2 mode requires setting BOT_ADMIN, BOT_CLIENT_SECRET value\n      BOT_ADMIN: \"\"\n      BOT_CLIENT_SECRET: \"\"\n\n      BOT_NAME: \"Music Disc\"\n      BOT_PREFIX: \"+\"\n      BOT_PLAYING: \"+help | music\"\n      BOT_EMBEDS_COLOR: \"#FFFFFF\"\n      BOT_SLASH_COMMAND: true\n\n      DEFAULT_VOLUME: 50\n      MAX_VOLUME: 100\n\n      AUTO_LEAVE: \"true\"\n      AUTO_LEAVE_COOLDOWN: 5000\n      DISPLAY_VOICE_STATE: \"true\"\n\n      # Web dashboard settings\n      ENABLE_SITE: true\n      SITE_PORT: 33333\n      SITE_LOGIN_TYPE: \"USER\"   # \"OAUTH2\" | \"USER\"\n      # USER mode settings\n      SITE_USERNAME: \"admin\"\n      SITE_PASSWORD: \"password\"\n      # OAUTH2 mode settings\n      SITE_OAUTH2_LINK: \"\"      # Your OAuth2 authentication link\n      SITE_OAUTH2_REDIRECT_URI: \"http://localhost:33333/login\"   # Redirect link after OAuth2 authentication is complete\n\n      # Local Lavalink node\n      ENABLE_LOCAL_NODE: false\n      LOCAL_NODE_AUTO_RESTART: true\n    volumes:\n      - ./server:/bot/server    # localnode configuration file\n      - ./nodelist.json:/bot/nodelist.json\n      - ./blacklist.json:/bot/blacklist.json\n    ports:\n      - 33333:33333\n```\n\n#### Start the container  \n```\ndocker compose up -d\n```\n\n\n### Start with Docker\nUse the following command to start the container:  \nPlease put your **token** into the `BOT_TOKEN` variable.  \n```\ndocker run -d \\\n  --name music-disc \\\n  --restart always \\\n  -e TZ=\"Asia/Taipei\" \\\n  -e BOT_TOKEN=\"your_token\" \\\n  -e BOT_ADMIN=\"\" \\\n  -e BOT_CLIENT_SECRET=\"\" \\\n  -e BOT_NAME=\"Music Disc\" \\\n  -e BOT_PREFIX=\"+\" \\\n  -e BOT_PLAYING=\"+help | music\" \\\n  -e BOT_EMBEDS_COLOR=\"#FFFFFF\" \\\n  -e BOT_SLASH_COMMAND=\"#true\" \\\n  -e DEFAULT_VOLUME=50 \\\n  -e MAX_VOLUME=100 \\\n  -e AUTO_LEAVE=\"true\" \\\n  -e AUTO_LEAVE_COOLDOWN=5000 \\\n  -e DISPLAY_VOICE_STATE=\"true\" \\\n  -e ENABLE_SITE=true \\\n  -e SITE_PORT=33333 \\\n  -e SITE_LOGIN_TYPE=\"USER\" \\\n  -e SITE_USERNAME=\"admin\" \\\n  -e SITE_PASSWORD=\"password\" \\\n  -e SITE_OAUTH2_LINK=\"\" \\\n  -e SITE_OAUTH2_REDIRECT_URI=\"http://localhost:33333/login\" \\\n  -e ENABLE_LOCAL_NODE=false \\\n  -e LOCAL_NODE_AUTO_RESTART=true \\\n  -v $(pwd)/server:/bot/server \\\n  -v $(pwd)/nodelist.json:/bot/nodelist.json \\\n  -v $(pwd)/blacklist.json:/bot/blacklist.json \\\n  -p 33333:33333 \\\n  hmes98318/music-disc:latest\n```","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhmes98318%2Fmusic-disc","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fhmes98318%2Fmusic-disc","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhmes98318%2Fmusic-disc/lists"}