SkillAgentSearch skills...

MusicBot Go

一个支持音乐下载/分享的 Telegram Bot。

Install / Use

npx skills add liuran001/MusicBot-Go

Installs into whichever agent you are using.

About this skill

Quality Score

0/100

Supported Platforms

Universal

README

MusicBot-Go

多平台音乐下载 / 分享的 Telegram Bot。发链接或搜索即可下载音乐、歌词与封面,带缓存、限流和插件化扩展。

基于 XiaoMengXinX/Music163bot-Go 重构,改为插件化架构以支持多平台。许可证 GPL-3.0。

支持平台

| 平台 | 下载 | 搜索 | 歌词 | Hi-Res / 无损 | 识曲 | |------|:--:|:--:|:--:|:--:|:--:| | 网易云音乐 | ✓ | ✓ | ✓ | ✓ | ✓ | | QQ 音乐 | ✓ | ✓ | ✓ | ✓ | — | | 酷狗音乐 | ✓ | ✓ | ✓ | ✓ | — | | 酷我音乐 | ✓ | ✓ | ✓ | ✓ | — | | 汽水音乐 | ✓ | ✓ | ✓ | ✓ | — | | 哔哩哔哩 | ✓ | ✓ | ✓ | ✓ ¹ | — | | Apple Music | ✓ | ✓ | ✓ | ✓ ² | — | | YouTube Music | ✓ | ✓ | ✓ | — | — | | Spotify | ✓ ³ | ✓ | ✓ | — | — |

¹ 哔哩哔哩取 Dash 流里的 FLAC / Dolby 音轨(音频 id 30251 / 30250 / 30280),视稿件是否提供。

² Apple Music 的 AAC 256k 开箱即用;无损 / Hi-Res / Atmos 需额外的解密服务,见 Apple Music 无损

³ Spotify 下载需要 sp_dc 加自备的 Widevine L3 设备文件(仓库不内置),上限 AAC 256k;只配 Web API 时仅提供搜索与元数据。

快速开始

Docker(推荐)

镜像由 CI 自动构建并推送到 GHCR:

  • ghcr.io/liuran001/musicbot-go:latest —— 含精简版 ffmpeg(仅运行时所需共享库),支持 /recognize 听歌识曲。识曲指纹编码已用纯 Go(wazero + afp.wasm)实现,无需 Node.js。

所有运行数据(配置、数据库、缓存、脚本)放在一个挂载目录里:

mkdir -p docker-data
cp config_example.ini docker-data/config.ini
# 编辑 docker-data/config.ini,至少填 BOT_TOKEN

docker run -d --name musicbot-go --restart unless-stopped \
  -w /app/workdir -v "$(pwd)/docker-data:/app/workdir" \
  -e TZ=Asia/Shanghai \
  ghcr.io/liuran001/musicbot-go:latest -c /app/workdir/config.ini

或用仓库自带的 docker-compose.yml(本地构建):

docker compose up -d --build

不需要识曲时,建议在配置里显式 EnableRecognize = false

裸机运行

需要 Go 1.26+;用 /recognize 还需 ffmpeg(识曲指纹编码已用纯 Go 实现,无需 Node.js)。

go build -o MusicBot-Go
./MusicBot-Go -c config.ini

配置

复制 config_example.iniconfig.ini,按注释填写。最少只需一个 Bot Token:

BOT_TOKEN = YOUR_BOT_TOKEN   # 必填
BotAdmin  = 123456789        # 管理员 Telegram ID(逗号分隔),管理命令需要

各平台凭证写在对应的 [plugins.<name>] 段,例如:

[plugins.netease]
music_u = YOUR_MUSIC_U_COOKIE      # 网易云无损需要

[plugins.qqmusic]
cookie = YOUR_QQMUSIC_COOKIE       # 高音质 / Hi-Res 需要

[plugins.applemusic]
media_user_token = YOUR_TOKEN      # 登录 music.apple.com 后从浏览器 Cookie 复制

[plugins.spotify]
sp_dc    = YOUR_SP_DC_COOKIE       # 下载需要;另需自备 .wvd(见下方注释)
wvd_path = /path/to/device.wvd     # Widevine L3 设备文件,仓库不内置

酷我、汽水、哔哩哔哩和 YouTube Music 匿名即可使用;YouTube Music 配置 Cookie 可解锁 256k 并降低限流概率。

完整选项(并发、缓存、限流、代理、日志、各平台细节等)见 config_example.ini 的注释,每一项都有说明。

多数平台账号也可以不写进配置,改用管理员命令 /login <平台> cookie <cookie> 在运行时导入(会回写 config.ini)。

命令

通用命令

| 命令 | 说明 | |------|------| | /music <URL 或关键词> | 下载音乐;直接发音乐链接也会自动识别下载 | | /search <关键词> | 搜索并选择下载 | | /lyric <URL> | 获取歌词 | | /fav | 收藏歌曲 / 查看收藏列表 | | /recognize | 回复一条语音消息识别歌曲(需 EnableRecognize) | | /settings | 默认平台、音质与歌词格式(支持私聊 / 群聊维度) | | /status | 查看统计与各平台账号状态 | | /queue | 查看当前下载、发送和 Telegram API 队列 | | /cancel | 取消自己正在进行的下载与发送 | | /about · /help | 关于 / 帮助 |

也支持 Inline 模式(@bot 关键词)和直接粘贴链接。命令菜单、帮助文本和 Bot 简介按客户端语言本地化,内置简体中文、English、日本語、Русский,可用 [bot_profile.<lang>] 段覆盖名称与简介。

管理员命令(需在 BotAdmin 中)

| 命令 | 说明 | |------|------| | /login <平台> cookie <cookie> | 导入平台 Cookie | | /login kugou qr | 扫码登录酷狗概念版 | | /login <平台> check · /login check | 检查单个 / 全部平台账号 | | /login <平台> renew · /login renew | 手动续期 | | /login <平台> auto on\|off\|status [秒] | 自动续期开关 | | /login applemusic lang [语言] | 查看 / 设置 Apple Music 元数据语言 | | /reload | 重载配置与动态脚本插件 | | /rmcache <平台>\|all | 清除 Telegram 文件 ID 缓存(不操作临时媒体目录) | | /wl add\|del\|list [chatID] | 白名单管理(需 EnableWhitelist = true) |

Apple Music 无损(Hi-Res/Atmos)

Apple Music 的解密分两档:

  • AAC 256k —— 开箱即用。 插件内置原生 Go Widevine 解密,填好 media_user_token 即可,无需任何额外服务。
  • 无损 ALAC / Hi-Res 24bit / Dolby Atmos —— 需要外部 wrapper。 这些音质走 FairPlay,Apple 不对 Widevine 放行,必须经 WorldObservationLog/wrapper 解密。请求高于 AAC 的音质时若 wrapper 不可用,会自动回退到 AAC 256k。

启用无损(Docker):

  1. 构建 wrapper 镜像。 上游不发布镜像,仓库提供了手动工作流:进入 GitHub → Actions → Build Apple Music Wrapper Image → Run,它会从上游 Release 取预编译二进制打包并推到 ghcr.io/<你的用户名>/musicbot-wrapper(仅 x86_64)。
  2. 登录 wrapper。docker-compose.ymlwrapper 服务里填一个有订阅的 Apple IDUSERNAME / PASSWORD)。它模拟安卓客户端,登录是设备级的,无法复用 bot 的 media_user_token——两套独立凭证,都要有。首次启动会自动登录(含 2FA),会话持久化到挂载卷,之后可清空账密。
  3. 指向 wrapper。config.iniwrapper_host = wrapper(compose 服务名),docker compose up -d

2FA:首次启动后看 wrapper 日志,出现 Waiting for input... 时把收到的 6 位验证码写入挂载目录的 data/com.apple.android.music/files/2fa.txt(60 秒内)。

裸机:自行运行 wrapper(见其仓库),把 wrapper_host 指向它的地址(如 127.0.0.1,端口 10020/20020/30020)。

插件开发

两种方式:

  • 动态脚本插件(无需重新编译):源码放 plugins/scripts/<name>/,在 config.ini[plugins.<name>] 段,管理员 /reload 即可热加载。最小入口见 plugins/scripts/README.md
  • 静态插件(编译进二进制,能力最全):实现 platform.Platform 接口并注册,见 plugins/README.md

架构设计见 ARCHITECTURE.md

Related Skills

View on GitHub
GitHub Stars162
CategoryDevelopment
Updated1h ago
Forks20

Languages

Go

Security Score

95/100

Audited on Aug 8, 2026

No findings