一个支持多平台音乐下载/分享的 Telegram Bot。
当前支持平台:
- 网易云音乐 (NetEase Cloud Music)
- QQ音乐 (QQ Music)
原始项目: XiaoMengXinX/Music163bot-Go
本项目基于原项目进行了重构,采用插件化架构以支持多音乐平台。
- 🎵 多平台支持: 插件化架构,轻松扩展新音乐平台
- 🔍 搜索: 支持关键词搜索和直接 URL 下载
- 📝 歌词: 获取时间戳歌词或纯文本歌词
- 🎤 识曲: 语音识别功能 (需要 ffmpeg + Node.js)
- 💾 智能缓存: 数据库缓存,避免重复下载
- ⚡ 高性能: 并发下载,限流保护
- 🔌 插件系统: 第三方开发者可独立开发平台插件
- Go 1.26.0+
- ffmpeg(/recognize 语音识别需要,可通过
EnableRecognize = false关闭) - Node.js + npm(识曲服务需要,可通过
EnableRecognize = false关闭)
复制 config_example.ini 为 config.ini:
# Telegram Bot Token (必填)
BOT_TOKEN = YOUR_BOT_TOKEN
[plugins.netease]
# MUSIC_U Cookie (用于下载无损音质)
music_u = YOUR_MUSIC_U_COOKIE[plugins.qqmusic]
# QQ音乐 Cookie (用于高音质/Hi-Res)
cookie = YOUR_QQMUSIC_COOKIE详见 config_example.ini 获取完整配置选项。
- 脚本目录:
plugins/scripts/<name>,目录名需与[plugins.<name>]一致 - 修改脚本或配置后,管理员可使用
/reload重载(需配置BotAdmin),或直接重启程序
用于限制可使用 Bot 的聊天(chat)。开启后,非白名单群会被自动退出,私聊会被静默忽略;BotAdmin 始终可绕过白名单。
EnableWhitelist = false
WhitelistChatIDs =WhitelistChatIDs 支持逗号/分号/空格分隔多个 chatID。
管理员可使用 /wl 动态维护白名单(会回写 config.ini):
/wl add <chatID>/wl del <chatID>/wl list
go build -o MusicBot-Go
./MusicBot-Go -c config.ini- 安装 Node.js,并进入识曲服务目录安装依赖
cd plugins/netease/recognize/service
npm install-
确保机器已安装
ffmpeg -
可选:在配置里设置识曲服务端口(默认 3737)
RecognizePort = 3737- 重启 Bot,识曲服务会自动启动(启动失败会提示缺少 node_modules)
/music <URL>- 下载音乐 (支持多平台 URL)/search <关键词>- 搜索音乐/lyric <URL>- 获取歌词/recognize- 识别语音中的歌曲 (回复语音消息)/settings- 设置默认平台和音质/status- 查看 Bot 状态和支持的平台/about- 关于本 Bot/rmcache <platform> <trackID>|<URL>|all- 清理缓存(管理员)/reload- 重新加载动态脚本插件(管理员)/wl <add|del|list> [chatID]- 白名单管理(管理员)
网易云音乐:
https://music.163.com/song?id=12345https://music.163.com/#/song?id=12345https://y.music.163.com/m/song?id=12345(移动端)https://music.163.com/#/album?id=3411281https://music.163.com/#/playlist?id=19723756
QQ音乐:
https://y.qq.com/n/ryqq_v2/songDetail/003IGhQO0JdnuChttps://y.qq.com/n/ryqq_v2/playlist/114514https://y.qq.com/n/ryqq_v2/albumDetail/003MNOTS3FmvaOhttps://c6.y.qq.com/base/fcgi-bin/u?__=xxxxxx(短链, 自动解析)
专辑/歌单链接会进入分页列表模式;简介默认以 Telegram 可折叠引用样式展示。
搜索与歌单共用单页展示条数:
ListPageSize = 8- URL 下载: 直接发送音乐链接到 Bot
- 搜索下载:
/search 周杰伦 晴天 - 获取歌词:
/lyric https://music.163.com/song?id=12345
go build -o MusicBot-Go想要为新的音乐平台开发插件? 可选两种方式:
- 静态插件(需要重新编译)
- 参考
plugins/netease的实现方式
- 动态脚本插件(无需重新编译)
- 将插件源码放在
plugins/scripts/<name> - 在
config.ini添加[plugins.<name>]配置 - 可通过
PluginScriptDir修改脚本目录(默认./plugins/scripts) - 修改脚本后管理员可用
/reload重载(需配置BotAdmin)
动态脚本插件最小入口:
// package <name>
func Init(cfg map[string]string) error
func Meta() map[string]interface{}可选实现:Search/GetTrack/GetDownloadInfo/GetLyrics/GetPlaylist/MatchURL/MatchText
详见 ARCHITECTURE.md 了解项目架构设计。
GPL-3.0