diff --git a/plugin/music/selecter.go b/plugin/music/selecter.go index 8e42ed41..6e9392cf 100644 --- a/plugin/music/selecter.go +++ b/plugin/music/selecter.go @@ -1,11 +1,11 @@ -// Package music 整合多平台音乐点播能力(基于 music-lib 重构) +// Package music 整合多平台音乐点播能力 package music import ( "fmt" - ctrl "github.com/FloatTech/zbpctrl" // 别名 zbpctrl 为 ctrl - "github.com/FloatTech/zbputils/control" // 保持 control 原名 + ctrl "github.com/FloatTech/zbpctrl" + "github.com/FloatTech/zbputils/control" "github.com/FloatTech/zbputils/ctxext" "github.com/guohuiyuan/music-lib/kugou" "github.com/guohuiyuan/music-lib/kuwo" @@ -17,7 +17,6 @@ import ( "github.com/wdvxdr1123/ZeroBot/message" ) -// 平台映射:指令前缀 -> 点歌函数 var platformMap = map[string]func(string) (message.Segment, error){ "咪咕": getMiguMusic, "酷我": getKuwoMusic, @@ -28,7 +27,6 @@ var platformMap = map[string]func(string) (message.Segment, error){ } func init() { - // 注册指令处理器 control.AutoRegister(&ctrl.Options[*zero.Ctx]{ DisableOnDefault: false, Brief: "点歌", @@ -44,17 +42,14 @@ func init() { platformPrefix := matches[1] keyword := matches[2] - // 获取目标平台处理函数 processFunc, ok := platformMap[platformPrefix] if !ok { ctx.SendChain(message.Text("不支持的点播平台:", platformPrefix)) return } - // 执行点播并返回结果 seg, err := processFunc(keyword) if err != nil { - // 修改:直接传递 err,不需要 call .Error() ctx.SendChain(message.Text("点歌失败:", err)) return } @@ -62,11 +57,24 @@ func init() { }) } -// 删除了 getMusicSegment 函数,因为已经通过 Map 直接分发 +// getMusicSegment 根据平台和关键词获取音乐消息段 +func getMusicSegment(platform, keyword string) (message.Segment, error) { + switch platform { + case "migu": + return getMiguMusic(keyword) + case "kuwo": + return getKuwoMusic(keyword) + case "kugou": + return getKugouMusic(keyword) + case "netease": + return getNeteaseMusic(keyword) + case "qq": + return getQQMusic(keyword) + default: + return message.Segment{}, errors.New("未知的音乐平台:" + platform) + } +} -// --- 各平台适配层(基于 music-lib 实现) --- - -// getMiguMusic 咪咕音乐点播 func getMiguMusic(keyword string) (message.Segment, error) { songs, err := migu.Search(keyword) if err != nil { @@ -77,7 +85,6 @@ func getMiguMusic(keyword string) (message.Segment, error) { } song := songs[0] - // 传入 &song (指针) playURL, err := migu.GetDownloadURL(&song) if err != nil { return message.Segment{}, errors.Wrap(err, "获取咪咕播放链接失败") @@ -93,7 +100,6 @@ func getMiguMusic(keyword string) (message.Segment, error) { ).Add("content", song.Artist).Add("image", song.Cover).Add("subtype", "migu"), nil } -// getKuwoMusic 酷我音乐点播 func getKuwoMusic(keyword string) (message.Segment, error) { songs, err := kuwo.Search(keyword) if err != nil { @@ -104,7 +110,6 @@ func getKuwoMusic(keyword string) (message.Segment, error) { } song := songs[0] - // 传入 &song (指针) playURL, err := kuwo.GetDownloadURL(&song) if err != nil { return message.Segment{}, errors.Wrap(err, "获取酷我播放链接失败") @@ -120,7 +125,6 @@ func getKuwoMusic(keyword string) (message.Segment, error) { ).Add("content", song.Artist).Add("image", song.Cover).Add("subtype", "kuwo"), nil } -// getKugouMusic 酷狗音乐点播 func getKugouMusic(keyword string) (message.Segment, error) { songs, err := kugou.Search(keyword) if err != nil { @@ -131,7 +135,6 @@ func getKugouMusic(keyword string) (message.Segment, error) { } song := songs[0] - // 传入 &song (指针) playURL, err := kugou.GetDownloadURL(&song) if err != nil { return message.Segment{}, errors.Wrap(err, "获取酷狗播放链接失败") @@ -147,7 +150,6 @@ func getKugouMusic(keyword string) (message.Segment, error) { ).Add("content", song.Artist).Add("image", song.Cover).Add("subtype", "kugou"), nil } -// getNeteaseMusic 网易云音乐点播 func getNeteaseMusic(keyword string) (message.Segment, error) { songs, err := netease.Search(keyword) if err != nil { @@ -158,7 +160,6 @@ func getNeteaseMusic(keyword string) (message.Segment, error) { } song := songs[0] - // 获取播放直链 playURL, err := netease.GetDownloadURL(&song) if err != nil { return message.Segment{}, errors.Wrap(err, "获取网易云播放链接失败") @@ -167,7 +168,6 @@ func getNeteaseMusic(keyword string) (message.Segment, error) { return message.Segment{}, errors.New("获取网易云播放链接失败:链接为空") } - // 构造 CustomMusic return message.CustomMusic( fmt.Sprintf("https://music.163.com/#/song?id=%s", song.ID), playURL, @@ -175,7 +175,6 @@ func getNeteaseMusic(keyword string) (message.Segment, error) { ).Add("content", song.Artist).Add("image", song.Cover).Add("subtype", "163"), nil } -// getQQMusic QQ音乐点播 func getQQMusic(keyword string) (message.Segment, error) { songs, err := qq.Search(keyword) if err != nil { @@ -186,7 +185,6 @@ func getQQMusic(keyword string) (message.Segment, error) { } song := songs[0] - // 获取播放直链 playURL, err := qq.GetDownloadURL(&song) if err != nil { return message.Segment{}, errors.Wrap(err, "获取QQ音乐播放链接失败") @@ -195,7 +193,6 @@ func getQQMusic(keyword string) (message.Segment, error) { return message.Segment{}, errors.New("获取QQ音乐播放链接失败:链接为空") } - // 构造 CustomMusic return message.CustomMusic( fmt.Sprintf("https://y.qq.com/n/ryqq/songDetail/%s", song.ID), playURL,