mirror of
https://github.com/FloatTech/ZeroBot-Plugin.git
synced 2026-02-05 23:09:37 +00:00
✨减少注释
This commit is contained in:
parent
1b81dadda2
commit
a8850eb5bf
@ -1,11 +1,11 @@
|
|||||||
// Package music 整合多平台音乐点播能力(基于 music-lib 重构)
|
// Package music 整合多平台音乐点播能力
|
||||||
package music
|
package music
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
|
|
||||||
ctrl "github.com/FloatTech/zbpctrl" // 别名 zbpctrl 为 ctrl
|
ctrl "github.com/FloatTech/zbpctrl"
|
||||||
"github.com/FloatTech/zbputils/control" // 保持 control 原名
|
"github.com/FloatTech/zbputils/control"
|
||||||
"github.com/FloatTech/zbputils/ctxext"
|
"github.com/FloatTech/zbputils/ctxext"
|
||||||
"github.com/guohuiyuan/music-lib/kugou"
|
"github.com/guohuiyuan/music-lib/kugou"
|
||||||
"github.com/guohuiyuan/music-lib/kuwo"
|
"github.com/guohuiyuan/music-lib/kuwo"
|
||||||
@ -17,7 +17,6 @@ import (
|
|||||||
"github.com/wdvxdr1123/ZeroBot/message"
|
"github.com/wdvxdr1123/ZeroBot/message"
|
||||||
)
|
)
|
||||||
|
|
||||||
// 平台映射:指令前缀 -> 点歌函数
|
|
||||||
var platformMap = map[string]func(string) (message.Segment, error){
|
var platformMap = map[string]func(string) (message.Segment, error){
|
||||||
"咪咕": getMiguMusic,
|
"咪咕": getMiguMusic,
|
||||||
"酷我": getKuwoMusic,
|
"酷我": getKuwoMusic,
|
||||||
@ -28,7 +27,6 @@ var platformMap = map[string]func(string) (message.Segment, error){
|
|||||||
}
|
}
|
||||||
|
|
||||||
func init() {
|
func init() {
|
||||||
// 注册指令处理器
|
|
||||||
control.AutoRegister(&ctrl.Options[*zero.Ctx]{
|
control.AutoRegister(&ctrl.Options[*zero.Ctx]{
|
||||||
DisableOnDefault: false,
|
DisableOnDefault: false,
|
||||||
Brief: "点歌",
|
Brief: "点歌",
|
||||||
@ -44,17 +42,14 @@ func init() {
|
|||||||
platformPrefix := matches[1]
|
platformPrefix := matches[1]
|
||||||
keyword := matches[2]
|
keyword := matches[2]
|
||||||
|
|
||||||
// 获取目标平台处理函数
|
|
||||||
processFunc, ok := platformMap[platformPrefix]
|
processFunc, ok := platformMap[platformPrefix]
|
||||||
if !ok {
|
if !ok {
|
||||||
ctx.SendChain(message.Text("不支持的点播平台:", platformPrefix))
|
ctx.SendChain(message.Text("不支持的点播平台:", platformPrefix))
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
// 执行点播并返回结果
|
|
||||||
seg, err := processFunc(keyword)
|
seg, err := processFunc(keyword)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
// 修改:直接传递 err,不需要 call .Error()
|
|
||||||
ctx.SendChain(message.Text("点歌失败:", err))
|
ctx.SendChain(message.Text("点歌失败:", err))
|
||||||
return
|
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) {
|
func getMiguMusic(keyword string) (message.Segment, error) {
|
||||||
songs, err := migu.Search(keyword)
|
songs, err := migu.Search(keyword)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@ -77,7 +85,6 @@ func getMiguMusic(keyword string) (message.Segment, error) {
|
|||||||
}
|
}
|
||||||
song := songs[0]
|
song := songs[0]
|
||||||
|
|
||||||
// 传入 &song (指针)
|
|
||||||
playURL, err := migu.GetDownloadURL(&song)
|
playURL, err := migu.GetDownloadURL(&song)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return message.Segment{}, errors.Wrap(err, "获取咪咕播放链接失败")
|
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
|
).Add("content", song.Artist).Add("image", song.Cover).Add("subtype", "migu"), nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// getKuwoMusic 酷我音乐点播
|
|
||||||
func getKuwoMusic(keyword string) (message.Segment, error) {
|
func getKuwoMusic(keyword string) (message.Segment, error) {
|
||||||
songs, err := kuwo.Search(keyword)
|
songs, err := kuwo.Search(keyword)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@ -104,7 +110,6 @@ func getKuwoMusic(keyword string) (message.Segment, error) {
|
|||||||
}
|
}
|
||||||
song := songs[0]
|
song := songs[0]
|
||||||
|
|
||||||
// 传入 &song (指针)
|
|
||||||
playURL, err := kuwo.GetDownloadURL(&song)
|
playURL, err := kuwo.GetDownloadURL(&song)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return message.Segment{}, errors.Wrap(err, "获取酷我播放链接失败")
|
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
|
).Add("content", song.Artist).Add("image", song.Cover).Add("subtype", "kuwo"), nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// getKugouMusic 酷狗音乐点播
|
|
||||||
func getKugouMusic(keyword string) (message.Segment, error) {
|
func getKugouMusic(keyword string) (message.Segment, error) {
|
||||||
songs, err := kugou.Search(keyword)
|
songs, err := kugou.Search(keyword)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@ -131,7 +135,6 @@ func getKugouMusic(keyword string) (message.Segment, error) {
|
|||||||
}
|
}
|
||||||
song := songs[0]
|
song := songs[0]
|
||||||
|
|
||||||
// 传入 &song (指针)
|
|
||||||
playURL, err := kugou.GetDownloadURL(&song)
|
playURL, err := kugou.GetDownloadURL(&song)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return message.Segment{}, errors.Wrap(err, "获取酷狗播放链接失败")
|
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
|
).Add("content", song.Artist).Add("image", song.Cover).Add("subtype", "kugou"), nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// getNeteaseMusic 网易云音乐点播
|
|
||||||
func getNeteaseMusic(keyword string) (message.Segment, error) {
|
func getNeteaseMusic(keyword string) (message.Segment, error) {
|
||||||
songs, err := netease.Search(keyword)
|
songs, err := netease.Search(keyword)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@ -158,7 +160,6 @@ func getNeteaseMusic(keyword string) (message.Segment, error) {
|
|||||||
}
|
}
|
||||||
song := songs[0]
|
song := songs[0]
|
||||||
|
|
||||||
// 获取播放直链
|
|
||||||
playURL, err := netease.GetDownloadURL(&song)
|
playURL, err := netease.GetDownloadURL(&song)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return message.Segment{}, errors.Wrap(err, "获取网易云播放链接失败")
|
return message.Segment{}, errors.Wrap(err, "获取网易云播放链接失败")
|
||||||
@ -167,7 +168,6 @@ func getNeteaseMusic(keyword string) (message.Segment, error) {
|
|||||||
return message.Segment{}, errors.New("获取网易云播放链接失败:链接为空")
|
return message.Segment{}, errors.New("获取网易云播放链接失败:链接为空")
|
||||||
}
|
}
|
||||||
|
|
||||||
// 构造 CustomMusic
|
|
||||||
return message.CustomMusic(
|
return message.CustomMusic(
|
||||||
fmt.Sprintf("https://music.163.com/#/song?id=%s", song.ID),
|
fmt.Sprintf("https://music.163.com/#/song?id=%s", song.ID),
|
||||||
playURL,
|
playURL,
|
||||||
@ -175,7 +175,6 @@ func getNeteaseMusic(keyword string) (message.Segment, error) {
|
|||||||
).Add("content", song.Artist).Add("image", song.Cover).Add("subtype", "163"), nil
|
).Add("content", song.Artist).Add("image", song.Cover).Add("subtype", "163"), nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// getQQMusic QQ音乐点播
|
|
||||||
func getQQMusic(keyword string) (message.Segment, error) {
|
func getQQMusic(keyword string) (message.Segment, error) {
|
||||||
songs, err := qq.Search(keyword)
|
songs, err := qq.Search(keyword)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@ -186,7 +185,6 @@ func getQQMusic(keyword string) (message.Segment, error) {
|
|||||||
}
|
}
|
||||||
song := songs[0]
|
song := songs[0]
|
||||||
|
|
||||||
// 获取播放直链
|
|
||||||
playURL, err := qq.GetDownloadURL(&song)
|
playURL, err := qq.GetDownloadURL(&song)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return message.Segment{}, errors.Wrap(err, "获取QQ音乐播放链接失败")
|
return message.Segment{}, errors.Wrap(err, "获取QQ音乐播放链接失败")
|
||||||
@ -195,7 +193,6 @@ func getQQMusic(keyword string) (message.Segment, error) {
|
|||||||
return message.Segment{}, errors.New("获取QQ音乐播放链接失败:链接为空")
|
return message.Segment{}, errors.New("获取QQ音乐播放链接失败:链接为空")
|
||||||
}
|
}
|
||||||
|
|
||||||
// 构造 CustomMusic
|
|
||||||
return message.CustomMusic(
|
return message.CustomMusic(
|
||||||
fmt.Sprintf("https://y.qq.com/n/ryqq/songDetail/%s", song.ID),
|
fmt.Sprintf("https://y.qq.com/n/ryqq/songDetail/%s", song.ID),
|
||||||
playURL,
|
playURL,
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user