mirror of
https://github.com/FloatTech/ZeroBot-Plugin.git
synced 2025-12-19 22:00:11 +08:00
Feature zbpp bilibilipush 20230224 (#599)
* 🔥 删除小鸡词典 * ✨ 添加新插件和修改bilibilipush问题 * 🎨 去掉多余结构 * 🎨 简化语句
This commit is contained in:
parent
bdc4138d78
commit
091d3170fc
26
README.md
26
README.md
@ -620,6 +620,14 @@ print("run[CQ:image,file="+j["img"]+"]")
|
|||||||
|
|
||||||
- [x] 磕cp大老师 雪乃
|
- [x] 磕cp大老师 雪乃
|
||||||
|
|
||||||
|
</details>
|
||||||
|
<details>
|
||||||
|
<summary>今日早报</summary>
|
||||||
|
|
||||||
|
`import _ "github.com/FloatTech/ZeroBot-Plugin/plugin/dailynews"`
|
||||||
|
|
||||||
|
- [x] 今日早报
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
<details>
|
<details>
|
||||||
<summary>DeepDanbooru二次元图标签识别</summary>
|
<summary>DeepDanbooru二次元图标签识别</summary>
|
||||||
@ -872,6 +880,14 @@ print("run[CQ:image,file="+j["img"]+"]")
|
|||||||
|
|
||||||
- [x] 喝奶茶绝绝子 | 绝绝子吃饭
|
- [x] 喝奶茶绝绝子 | 绝绝子吃饭
|
||||||
|
|
||||||
|
</details>
|
||||||
|
<details>
|
||||||
|
<summary>疯狂星期四</summary>
|
||||||
|
|
||||||
|
`import _ "github.com/FloatTech/ZeroBot-Plugin/plugin/kfccrazythursday"`
|
||||||
|
|
||||||
|
- [x] 疯狂星期四
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
<details>
|
<details>
|
||||||
<summary>kokomi原神面板</summary>
|
<summary>kokomi原神面板</summary>
|
||||||
@ -1283,6 +1299,16 @@ print("run[CQ:image,file="+j["img"]+"]")
|
|||||||
|
|
||||||
- [x] 更新vtb
|
- [x] 更新vtb
|
||||||
|
|
||||||
|
</details>
|
||||||
|
<details>
|
||||||
|
<summary>vtb语录</summary>
|
||||||
|
|
||||||
|
`import _ "github.com/FloatTech/ZeroBot-Plugin/plugin/vtbmusic"`
|
||||||
|
|
||||||
|
- [x] vtb点歌
|
||||||
|
|
||||||
|
- [x] vtb随机点歌
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
<details>
|
<details>
|
||||||
<summary>钱包</summary>
|
<summary>钱包</summary>
|
||||||
|
|||||||
168
main.go
168
main.go
@ -56,89 +56,91 @@ import (
|
|||||||
// vvvvvvvvvvvvvv //
|
// vvvvvvvvvvvvvv //
|
||||||
// vvvv //
|
// vvvv //
|
||||||
|
|
||||||
_ "github.com/FloatTech/ZeroBot-Plugin/plugin/ahsai" // ahsai tts
|
_ "github.com/FloatTech/ZeroBot-Plugin/plugin/ahsai" // ahsai tts
|
||||||
_ "github.com/FloatTech/ZeroBot-Plugin/plugin/ai_false" // 服务器监控
|
_ "github.com/FloatTech/ZeroBot-Plugin/plugin/ai_false" // 服务器监控
|
||||||
_ "github.com/FloatTech/ZeroBot-Plugin/plugin/aipaint" // ai绘图
|
_ "github.com/FloatTech/ZeroBot-Plugin/plugin/aipaint" // ai绘图
|
||||||
_ "github.com/FloatTech/ZeroBot-Plugin/plugin/aiwife" // 随机老婆
|
_ "github.com/FloatTech/ZeroBot-Plugin/plugin/aiwife" // 随机老婆
|
||||||
_ "github.com/FloatTech/ZeroBot-Plugin/plugin/alipayvoice" // 支付宝到账语音
|
_ "github.com/FloatTech/ZeroBot-Plugin/plugin/alipayvoice" // 支付宝到账语音
|
||||||
_ "github.com/FloatTech/ZeroBot-Plugin/plugin/autowithdraw" // 触发者撤回时也自动撤回
|
_ "github.com/FloatTech/ZeroBot-Plugin/plugin/autowithdraw" // 触发者撤回时也自动撤回
|
||||||
_ "github.com/FloatTech/ZeroBot-Plugin/plugin/b14" // base16384加解密
|
_ "github.com/FloatTech/ZeroBot-Plugin/plugin/b14" // base16384加解密
|
||||||
_ "github.com/FloatTech/ZeroBot-Plugin/plugin/baidu" // 百度一下
|
_ "github.com/FloatTech/ZeroBot-Plugin/plugin/baidu" // 百度一下
|
||||||
_ "github.com/FloatTech/ZeroBot-Plugin/plugin/baiduaudit" // 百度内容审核
|
_ "github.com/FloatTech/ZeroBot-Plugin/plugin/baiduaudit" // 百度内容审核
|
||||||
_ "github.com/FloatTech/ZeroBot-Plugin/plugin/base64gua" // base64卦加解密
|
_ "github.com/FloatTech/ZeroBot-Plugin/plugin/base64gua" // base64卦加解密
|
||||||
_ "github.com/FloatTech/ZeroBot-Plugin/plugin/baseamasiro" // base天城文加解密
|
_ "github.com/FloatTech/ZeroBot-Plugin/plugin/baseamasiro" // base天城文加解密
|
||||||
_ "github.com/FloatTech/ZeroBot-Plugin/plugin/bilibili" // b站相关
|
_ "github.com/FloatTech/ZeroBot-Plugin/plugin/bilibili" // b站相关
|
||||||
_ "github.com/FloatTech/ZeroBot-Plugin/plugin/book_review" // 哀伤雪刃吧推书记录
|
_ "github.com/FloatTech/ZeroBot-Plugin/plugin/book_review" // 哀伤雪刃吧推书记录
|
||||||
_ "github.com/FloatTech/ZeroBot-Plugin/plugin/cangtoushi" // 藏头诗
|
_ "github.com/FloatTech/ZeroBot-Plugin/plugin/cangtoushi" // 藏头诗
|
||||||
_ "github.com/FloatTech/ZeroBot-Plugin/plugin/choose" // 选择困难症帮手
|
_ "github.com/FloatTech/ZeroBot-Plugin/plugin/choose" // 选择困难症帮手
|
||||||
_ "github.com/FloatTech/ZeroBot-Plugin/plugin/chouxianghua" // 说抽象话
|
_ "github.com/FloatTech/ZeroBot-Plugin/plugin/chouxianghua" // 说抽象话
|
||||||
_ "github.com/FloatTech/ZeroBot-Plugin/plugin/chrev" // 英文字符翻转
|
_ "github.com/FloatTech/ZeroBot-Plugin/plugin/chrev" // 英文字符翻转
|
||||||
_ "github.com/FloatTech/ZeroBot-Plugin/plugin/coser" // 三次元小姐姐
|
_ "github.com/FloatTech/ZeroBot-Plugin/plugin/coser" // 三次元小姐姐
|
||||||
_ "github.com/FloatTech/ZeroBot-Plugin/plugin/cpstory" // cp短打
|
_ "github.com/FloatTech/ZeroBot-Plugin/plugin/cpstory" // cp短打
|
||||||
_ "github.com/FloatTech/ZeroBot-Plugin/plugin/danbooru" // DeepDanbooru二次元图标签识别
|
_ "github.com/FloatTech/ZeroBot-Plugin/plugin/dailynews" // 今日早报
|
||||||
_ "github.com/FloatTech/ZeroBot-Plugin/plugin/diana" // 嘉心糖发病
|
_ "github.com/FloatTech/ZeroBot-Plugin/plugin/danbooru" // DeepDanbooru二次元图标签识别
|
||||||
_ "github.com/FloatTech/ZeroBot-Plugin/plugin/dress" // 女装
|
_ "github.com/FloatTech/ZeroBot-Plugin/plugin/diana" // 嘉心糖发病
|
||||||
_ "github.com/FloatTech/ZeroBot-Plugin/plugin/drift_bottle" // 漂流瓶
|
_ "github.com/FloatTech/ZeroBot-Plugin/plugin/dress" // 女装
|
||||||
_ "github.com/FloatTech/ZeroBot-Plugin/plugin/emojimix" // 合成emoji
|
_ "github.com/FloatTech/ZeroBot-Plugin/plugin/drift_bottle" // 漂流瓶
|
||||||
_ "github.com/FloatTech/ZeroBot-Plugin/plugin/event" // 好友申请群聊邀请事件处理
|
_ "github.com/FloatTech/ZeroBot-Plugin/plugin/emojimix" // 合成emoji
|
||||||
_ "github.com/FloatTech/ZeroBot-Plugin/plugin/font" // 渲染任意文字到图片
|
_ "github.com/FloatTech/ZeroBot-Plugin/plugin/event" // 好友申请群聊邀请事件处理
|
||||||
_ "github.com/FloatTech/ZeroBot-Plugin/plugin/fortune" // 运势
|
_ "github.com/FloatTech/ZeroBot-Plugin/plugin/font" // 渲染任意文字到图片
|
||||||
_ "github.com/FloatTech/ZeroBot-Plugin/plugin/funny" // 笑话
|
_ "github.com/FloatTech/ZeroBot-Plugin/plugin/fortune" // 运势
|
||||||
_ "github.com/FloatTech/ZeroBot-Plugin/plugin/genshin" // 原神抽卡
|
_ "github.com/FloatTech/ZeroBot-Plugin/plugin/funny" // 笑话
|
||||||
_ "github.com/FloatTech/ZeroBot-Plugin/plugin/gif" // 制图
|
_ "github.com/FloatTech/ZeroBot-Plugin/plugin/genshin" // 原神抽卡
|
||||||
_ "github.com/FloatTech/ZeroBot-Plugin/plugin/github" // 搜索GitHub仓库
|
_ "github.com/FloatTech/ZeroBot-Plugin/plugin/gif" // 制图
|
||||||
_ "github.com/FloatTech/ZeroBot-Plugin/plugin/guessmusic" // 猜歌
|
_ "github.com/FloatTech/ZeroBot-Plugin/plugin/github" // 搜索GitHub仓库
|
||||||
_ "github.com/FloatTech/ZeroBot-Plugin/plugin/heisi" // 黑丝
|
_ "github.com/FloatTech/ZeroBot-Plugin/plugin/guessmusic" // 猜歌
|
||||||
_ "github.com/FloatTech/ZeroBot-Plugin/plugin/hs" // 炉石
|
_ "github.com/FloatTech/ZeroBot-Plugin/plugin/heisi" // 黑丝
|
||||||
_ "github.com/FloatTech/ZeroBot-Plugin/plugin/hyaku" // 百人一首
|
_ "github.com/FloatTech/ZeroBot-Plugin/plugin/hs" // 炉石
|
||||||
_ "github.com/FloatTech/ZeroBot-Plugin/plugin/image_finder" // 关键字搜图
|
_ "github.com/FloatTech/ZeroBot-Plugin/plugin/hyaku" // 百人一首
|
||||||
_ "github.com/FloatTech/ZeroBot-Plugin/plugin/inject" // 注入指令
|
_ "github.com/FloatTech/ZeroBot-Plugin/plugin/image_finder" // 关键字搜图
|
||||||
_ "github.com/FloatTech/ZeroBot-Plugin/plugin/jandan" // 煎蛋网无聊图
|
_ "github.com/FloatTech/ZeroBot-Plugin/plugin/inject" // 注入指令
|
||||||
_ "github.com/FloatTech/ZeroBot-Plugin/plugin/jiami" // 兽语加密
|
_ "github.com/FloatTech/ZeroBot-Plugin/plugin/jandan" // 煎蛋网无聊图
|
||||||
_ "github.com/FloatTech/ZeroBot-Plugin/plugin/jikipedia" // 小鸡词典
|
_ "github.com/FloatTech/ZeroBot-Plugin/plugin/jiami" // 兽语加密
|
||||||
_ "github.com/FloatTech/ZeroBot-Plugin/plugin/jptingroom" // 日语听力学习材料
|
_ "github.com/FloatTech/ZeroBot-Plugin/plugin/jptingroom" // 日语听力学习材料
|
||||||
_ "github.com/FloatTech/ZeroBot-Plugin/plugin/juejuezi" // 绝绝子生成器
|
_ "github.com/FloatTech/ZeroBot-Plugin/plugin/juejuezi" // 绝绝子生成器
|
||||||
_ "github.com/FloatTech/ZeroBot-Plugin/plugin/lolicon" // lolicon 随机图片
|
_ "github.com/FloatTech/ZeroBot-Plugin/plugin/kfccrazythursday" // 疯狂星期四
|
||||||
_ "github.com/FloatTech/ZeroBot-Plugin/plugin/magicprompt" // magicprompt吟唱提示
|
_ "github.com/FloatTech/ZeroBot-Plugin/plugin/lolicon" // lolicon 随机图片
|
||||||
_ "github.com/FloatTech/ZeroBot-Plugin/plugin/midicreate" // 简易midi音乐制作
|
_ "github.com/FloatTech/ZeroBot-Plugin/plugin/magicprompt" // magicprompt吟唱提示
|
||||||
_ "github.com/FloatTech/ZeroBot-Plugin/plugin/moegoe" // 日韩 VITS 模型拟声
|
_ "github.com/FloatTech/ZeroBot-Plugin/plugin/midicreate" // 简易midi音乐制作
|
||||||
_ "github.com/FloatTech/ZeroBot-Plugin/plugin/moyu" // 摸鱼
|
_ "github.com/FloatTech/ZeroBot-Plugin/plugin/moegoe" // 日韩 VITS 模型拟声
|
||||||
_ "github.com/FloatTech/ZeroBot-Plugin/plugin/moyu_calendar" // 摸鱼人日历
|
_ "github.com/FloatTech/ZeroBot-Plugin/plugin/moyu" // 摸鱼
|
||||||
_ "github.com/FloatTech/ZeroBot-Plugin/plugin/music" // 点歌
|
_ "github.com/FloatTech/ZeroBot-Plugin/plugin/moyu_calendar" // 摸鱼人日历
|
||||||
_ "github.com/FloatTech/ZeroBot-Plugin/plugin/nativesetu" // 本地涩图
|
_ "github.com/FloatTech/ZeroBot-Plugin/plugin/music" // 点歌
|
||||||
_ "github.com/FloatTech/ZeroBot-Plugin/plugin/nativewife" // 本地老婆
|
_ "github.com/FloatTech/ZeroBot-Plugin/plugin/nativesetu" // 本地涩图
|
||||||
_ "github.com/FloatTech/ZeroBot-Plugin/plugin/nbnhhsh" // 拼音首字母缩写释义工具
|
_ "github.com/FloatTech/ZeroBot-Plugin/plugin/nativewife" // 本地老婆
|
||||||
_ "github.com/FloatTech/ZeroBot-Plugin/plugin/nihongo" // 日语语法学习
|
_ "github.com/FloatTech/ZeroBot-Plugin/plugin/nbnhhsh" // 拼音首字母缩写释义工具
|
||||||
_ "github.com/FloatTech/ZeroBot-Plugin/plugin/novel" // 铅笔小说网搜索
|
_ "github.com/FloatTech/ZeroBot-Plugin/plugin/nihongo" // 日语语法学习
|
||||||
_ "github.com/FloatTech/ZeroBot-Plugin/plugin/nsfw" // nsfw图片识别
|
_ "github.com/FloatTech/ZeroBot-Plugin/plugin/novel" // 铅笔小说网搜索
|
||||||
_ "github.com/FloatTech/ZeroBot-Plugin/plugin/omikuji" // 浅草寺求签
|
_ "github.com/FloatTech/ZeroBot-Plugin/plugin/nsfw" // nsfw图片识别
|
||||||
_ "github.com/FloatTech/ZeroBot-Plugin/plugin/qqwife" // 一群一天一夫一妻制群老婆
|
_ "github.com/FloatTech/ZeroBot-Plugin/plugin/omikuji" // 浅草寺求签
|
||||||
_ "github.com/FloatTech/ZeroBot-Plugin/plugin/quan" // QQ权重查询
|
_ "github.com/FloatTech/ZeroBot-Plugin/plugin/qqwife" // 一群一天一夫一妻制群老婆
|
||||||
_ "github.com/FloatTech/ZeroBot-Plugin/plugin/qzone" // qq空间表白墙
|
_ "github.com/FloatTech/ZeroBot-Plugin/plugin/quan" // QQ权重查询
|
||||||
_ "github.com/FloatTech/ZeroBot-Plugin/plugin/realcugan" // realcugan清晰术
|
_ "github.com/FloatTech/ZeroBot-Plugin/plugin/qzone" // qq空间表白墙
|
||||||
_ "github.com/FloatTech/ZeroBot-Plugin/plugin/reborn" // 投胎
|
_ "github.com/FloatTech/ZeroBot-Plugin/plugin/realcugan" // realcugan清晰术
|
||||||
_ "github.com/FloatTech/ZeroBot-Plugin/plugin/runcode" // 在线运行代码
|
_ "github.com/FloatTech/ZeroBot-Plugin/plugin/reborn" // 投胎
|
||||||
_ "github.com/FloatTech/ZeroBot-Plugin/plugin/saucenao" // 以图搜图
|
_ "github.com/FloatTech/ZeroBot-Plugin/plugin/runcode" // 在线运行代码
|
||||||
_ "github.com/FloatTech/ZeroBot-Plugin/plugin/scale" // 叔叔的AI二次元图片放大
|
_ "github.com/FloatTech/ZeroBot-Plugin/plugin/saucenao" // 以图搜图
|
||||||
_ "github.com/FloatTech/ZeroBot-Plugin/plugin/score" // 分数
|
_ "github.com/FloatTech/ZeroBot-Plugin/plugin/scale" // 叔叔的AI二次元图片放大
|
||||||
_ "github.com/FloatTech/ZeroBot-Plugin/plugin/setutime" // 来份涩图
|
_ "github.com/FloatTech/ZeroBot-Plugin/plugin/score" // 分数
|
||||||
_ "github.com/FloatTech/ZeroBot-Plugin/plugin/shadiao" // 沙雕app
|
_ "github.com/FloatTech/ZeroBot-Plugin/plugin/setutime" // 来份涩图
|
||||||
_ "github.com/FloatTech/ZeroBot-Plugin/plugin/shindan" // 测定
|
_ "github.com/FloatTech/ZeroBot-Plugin/plugin/shadiao" // 沙雕app
|
||||||
_ "github.com/FloatTech/ZeroBot-Plugin/plugin/tarot" // 抽塔罗牌
|
_ "github.com/FloatTech/ZeroBot-Plugin/plugin/shindan" // 测定
|
||||||
_ "github.com/FloatTech/ZeroBot-Plugin/plugin/tiangou" // 舔狗日记
|
_ "github.com/FloatTech/ZeroBot-Plugin/plugin/tarot" // 抽塔罗牌
|
||||||
_ "github.com/FloatTech/ZeroBot-Plugin/plugin/tracemoe" // 搜番
|
_ "github.com/FloatTech/ZeroBot-Plugin/plugin/tiangou" // 舔狗日记
|
||||||
_ "github.com/FloatTech/ZeroBot-Plugin/plugin/translation" // 翻译
|
_ "github.com/FloatTech/ZeroBot-Plugin/plugin/tracemoe" // 搜番
|
||||||
_ "github.com/FloatTech/ZeroBot-Plugin/plugin/vitsnyaru" // vits猫雷
|
_ "github.com/FloatTech/ZeroBot-Plugin/plugin/translation" // 翻译
|
||||||
_ "github.com/FloatTech/ZeroBot-Plugin/plugin/vtb_quotation" // vtb语录
|
_ "github.com/FloatTech/ZeroBot-Plugin/plugin/vitsnyaru" // vits猫雷
|
||||||
_ "github.com/FloatTech/ZeroBot-Plugin/plugin/wallet" // 钱包
|
_ "github.com/FloatTech/ZeroBot-Plugin/plugin/vtb_quotation" // vtb语录
|
||||||
_ "github.com/FloatTech/ZeroBot-Plugin/plugin/wangyiyun" // 网易云音乐热评
|
_ "github.com/FloatTech/ZeroBot-Plugin/plugin/vtbmusic" // vtb点歌
|
||||||
_ "github.com/FloatTech/ZeroBot-Plugin/plugin/warframeapi" // warframeAPI插件
|
_ "github.com/FloatTech/ZeroBot-Plugin/plugin/wallet" // 钱包
|
||||||
_ "github.com/FloatTech/ZeroBot-Plugin/plugin/wenben" // 文本指令大全
|
_ "github.com/FloatTech/ZeroBot-Plugin/plugin/wangyiyun" // 网易云音乐热评
|
||||||
_ "github.com/FloatTech/ZeroBot-Plugin/plugin/wenxinAI" // 百度文心AI画图
|
_ "github.com/FloatTech/ZeroBot-Plugin/plugin/warframeapi" // warframeAPI插件
|
||||||
_ "github.com/FloatTech/ZeroBot-Plugin/plugin/word_count" // 聊天热词
|
_ "github.com/FloatTech/ZeroBot-Plugin/plugin/wenben" // 文本指令大全
|
||||||
_ "github.com/FloatTech/ZeroBot-Plugin/plugin/wordle" // 猜单词
|
_ "github.com/FloatTech/ZeroBot-Plugin/plugin/wenxinAI" // 百度文心AI画图
|
||||||
_ "github.com/FloatTech/ZeroBot-Plugin/plugin/ygo" // 游戏王相关插件
|
_ "github.com/FloatTech/ZeroBot-Plugin/plugin/word_count" // 聊天热词
|
||||||
_ "github.com/FloatTech/ZeroBot-Plugin/plugin/ymgal" // 月幕galgame
|
_ "github.com/FloatTech/ZeroBot-Plugin/plugin/wordle" // 猜单词
|
||||||
|
_ "github.com/FloatTech/ZeroBot-Plugin/plugin/ygo" // 游戏王相关插件
|
||||||
|
_ "github.com/FloatTech/ZeroBot-Plugin/plugin/ymgal" // 月幕galgame
|
||||||
|
|
||||||
// _ "github.com/FloatTech/ZeroBot-Plugin/plugin/thesaurus" // 词典匹配回复
|
// _ "github.com/FloatTech/ZeroBot-Plugin/plugin/thesaurus" // 词典匹配回复
|
||||||
// _ "github.com/FloatTech/ZeroBot-Plugin/plugin/wtf" // 鬼东西
|
// _ "github.com/FloatTech/ZeroBot-Plugin/plugin/wtf" // 鬼东西
|
||||||
|
|||||||
@ -340,7 +340,7 @@ func init() {
|
|||||||
for i := 0; i < len(danmaku.Data.Data); i++ {
|
for i := 0; i < len(danmaku.Data.Data); i++ {
|
||||||
totalDanmuku += len(danmaku.Data.Data[i].Danmakus) + 1
|
totalDanmuku += len(danmaku.Data.Data[i].Danmakus) + 1
|
||||||
}
|
}
|
||||||
cw := 10000
|
cw := 3000
|
||||||
mcw := float64(2000)
|
mcw := float64(2000)
|
||||||
ch := 550 + len(danmaku.Data.Data)*int(faceH) + totalDanmuku*int(danmuH)
|
ch := 550 + len(danmaku.Data.Data)*int(faceH) + totalDanmuku*int(danmuH)
|
||||||
canvas = gg.NewContext(cw, ch)
|
canvas = gg.NewContext(cw, ch)
|
||||||
|
|||||||
@ -5,6 +5,7 @@ import (
|
|||||||
"bytes"
|
"bytes"
|
||||||
"encoding/json"
|
"encoding/json"
|
||||||
"fmt"
|
"fmt"
|
||||||
|
"net/http"
|
||||||
"strconv"
|
"strconv"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
@ -175,7 +176,19 @@ func getName(buid int64) (name string, err error) {
|
|||||||
var ok bool
|
var ok bool
|
||||||
if name, ok = upMap[buid]; !ok {
|
if name, ok = upMap[buid]; !ok {
|
||||||
var data []byte
|
var data []byte
|
||||||
data, err = web.RequestDataWith(web.NewDefaultClient(), fmt.Sprintf(infoURL, buid), "GET", referer, ua, nil)
|
data, err = web.RequestDataWithHeaders(web.NewDefaultClient(), fmt.Sprintf(infoURL, buid), "GET", func(r *http.Request) error {
|
||||||
|
r.Header.Set("refer", referer)
|
||||||
|
r.Header.Set("user-agent", ua)
|
||||||
|
cookie := ""
|
||||||
|
if cfg != nil {
|
||||||
|
cookie, err = cfg.Load()
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
}
|
||||||
|
r.Header.Set("cookie", cookie)
|
||||||
|
return nil
|
||||||
|
}, nil)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|||||||
37
plugin/dailynews/dailynews.go
Normal file
37
plugin/dailynews/dailynews.go
Normal file
@ -0,0 +1,37 @@
|
|||||||
|
// Package dailynews 今日早报
|
||||||
|
package dailynews
|
||||||
|
|
||||||
|
import (
|
||||||
|
"github.com/FloatTech/floatbox/binary"
|
||||||
|
"github.com/FloatTech/floatbox/web"
|
||||||
|
ctrl "github.com/FloatTech/zbpctrl"
|
||||||
|
"github.com/FloatTech/zbputils/control"
|
||||||
|
"github.com/tidwall/gjson"
|
||||||
|
zero "github.com/wdvxdr1123/ZeroBot"
|
||||||
|
"github.com/wdvxdr1123/ZeroBot/message"
|
||||||
|
)
|
||||||
|
|
||||||
|
const api = "http://dwz.2xb.cn/zaob"
|
||||||
|
|
||||||
|
func init() {
|
||||||
|
engine := control.Register("dailynews", &ctrl.Options[*zero.Ctx]{
|
||||||
|
DisableOnDefault: false,
|
||||||
|
Brief: "今日早报",
|
||||||
|
Help: "- 今日早报",
|
||||||
|
PrivateDataFolder: "dailynews",
|
||||||
|
})
|
||||||
|
|
||||||
|
engine.OnFullMatch(`今日早报`).SetBlock(true).
|
||||||
|
Handle(func(ctx *zero.Ctx) {
|
||||||
|
data, err := web.GetData(api)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
picURL := gjson.Get(binary.BytesToString(data), "imageUrl").String()
|
||||||
|
if err != nil {
|
||||||
|
ctx.SendChain(message.Text("ERROR:", err))
|
||||||
|
return
|
||||||
|
}
|
||||||
|
ctx.SendChain(message.Image(picURL))
|
||||||
|
})
|
||||||
|
}
|
||||||
@ -1,121 +0,0 @@
|
|||||||
// Package jikipedia 小鸡词典
|
|
||||||
// 修改自https://github.com/TeamPGM/PagerMaid_Plugins_Pyro ,非常感谢!!
|
|
||||||
package jikipedia
|
|
||||||
|
|
||||||
import (
|
|
||||||
"bytes"
|
|
||||||
"encoding/json"
|
|
||||||
"errors"
|
|
||||||
"fmt"
|
|
||||||
"io"
|
|
||||||
"net/http"
|
|
||||||
"strings"
|
|
||||||
|
|
||||||
"github.com/FloatTech/floatbox/binary"
|
|
||||||
ctrl "github.com/FloatTech/zbpctrl"
|
|
||||||
"github.com/FloatTech/zbputils/control"
|
|
||||||
"github.com/FloatTech/zbputils/ctxext"
|
|
||||||
"github.com/tidwall/gjson"
|
|
||||||
zero "github.com/wdvxdr1123/ZeroBot"
|
|
||||||
"github.com/wdvxdr1123/ZeroBot/message"
|
|
||||||
)
|
|
||||||
|
|
||||||
const (
|
|
||||||
url = "https://api.jikipedia.com/go/search_entities"
|
|
||||||
)
|
|
||||||
|
|
||||||
type value struct {
|
|
||||||
Phrase string `json:"phrase"`
|
|
||||||
Page int `json:"page"`
|
|
||||||
Size int `json:"size"`
|
|
||||||
}
|
|
||||||
|
|
||||||
func init() {
|
|
||||||
// 初始化engine
|
|
||||||
engine := control.Register("jikipedia", &ctrl.Options[*zero.Ctx]{
|
|
||||||
DisableOnDefault: false,
|
|
||||||
Brief: "小鸡词典",
|
|
||||||
Help: "- [查梗|小鸡词典][梗]",
|
|
||||||
},
|
|
||||||
)
|
|
||||||
engine.OnPrefixGroup([]string{"小鸡词典", "查梗"}).Limit(ctxext.LimitByGroup).SetBlock(true).Handle(
|
|
||||||
func(ctx *zero.Ctx) {
|
|
||||||
keyWord := strings.Trim(ctx.State["args"].(string), " ")
|
|
||||||
|
|
||||||
definition, err := parseKeyword(keyWord)
|
|
||||||
if err != nil {
|
|
||||||
ctx.SendChain(message.Text("ERROR: ", err))
|
|
||||||
return
|
|
||||||
}
|
|
||||||
if definition.String() == "" {
|
|
||||||
ctx.SendChain(message.Text("好像什么都没查到,换个关键词试一试?"))
|
|
||||||
return
|
|
||||||
}
|
|
||||||
imgURL := definition.Get("images.0.scaled.path").String()
|
|
||||||
ctx.SendChain(message.Text("【标题】:", definition.Get("term.title"),
|
|
||||||
"\n【释义】:", definition.Get("plaintext"),
|
|
||||||
"\n【原文】:https://jikipedia.com/definition/", definition.Get("id")),
|
|
||||||
message.Image(imgURL))
|
|
||||||
},
|
|
||||||
)
|
|
||||||
}
|
|
||||||
|
|
||||||
func parseKeyword(keyWord string) (definition gjson.Result, err error) {
|
|
||||||
client := &http.Client{}
|
|
||||||
|
|
||||||
values := value{Phrase: keyWord, Page: 1, Size: 10}
|
|
||||||
jsonData, err := json.Marshal(values)
|
|
||||||
if err != nil {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
var request *http.Request
|
|
||||||
request, err = http.NewRequest("POST", url, bytes.NewBuffer(jsonData))
|
|
||||||
if err != nil {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
request.Header = http.Header{
|
|
||||||
"Accept": {"application/json, text/plain, */*"},
|
|
||||||
"Accept-Encoding": {"gzip, deflate, br"},
|
|
||||||
"Accept-Language": {"zh-CN,zh-TW;q=0.9,zh;q=0.8"},
|
|
||||||
"Client": {"web"},
|
|
||||||
"Client-Version": {"2.7.2g"},
|
|
||||||
"Connection": {"keep-alive"},
|
|
||||||
"Host": {"api.jikipedia.com"},
|
|
||||||
"Origin": {"https://jikipedia.com"},
|
|
||||||
"Referer": {"https://jikipedia.com/"},
|
|
||||||
"Sec-Fetch-Dest": {"empty"},
|
|
||||||
"Sec-Fetch-Mode": {"cors"},
|
|
||||||
"Sec-Fetch-Site": {"same-site"},
|
|
||||||
"Token": {""},
|
|
||||||
"User-Agent": {"Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/102.0.0.0 Mobile Safari/537.36"},
|
|
||||||
"XID": {"uNo5bL1nyNCp/Gm7lJAHQ91220HLbMT8jqk9IJYhtHA4ofP+zgxwM6lSDIKiYoppP2k1IW/1Vxc2vOVGxOOVReebsLmWPHhTs7NCRygfDkE="},
|
|
||||||
"sec-ch-ua": {`" Not A;Brand";v="99", "Chromium";v="102", "Google Chrome";v="102"`},
|
|
||||||
"sec-ch-ua-mobile": {"?1"},
|
|
||||||
"sec-ch-ua-platform": {`"Android"`},
|
|
||||||
}
|
|
||||||
request.Header.Set("Content-Type", "application/json;charset=UTF-8")
|
|
||||||
var response *http.Response
|
|
||||||
response, err = client.Do(request)
|
|
||||||
if err != nil {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
defer response.Body.Close()
|
|
||||||
if response.StatusCode != http.StatusOK {
|
|
||||||
extraInfo := ""
|
|
||||||
if response.StatusCode == 423 {
|
|
||||||
extraInfo = "\n调用过多被网站暂时封禁,请等待数个小时后使用该功能~"
|
|
||||||
}
|
|
||||||
s := fmt.Sprintf("status code: %d%s", response.StatusCode, extraInfo)
|
|
||||||
err = errors.New(s)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
data, err := io.ReadAll(response.Body)
|
|
||||||
if err != nil {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
gjson.Get(binary.BytesToString(data), "data").ForEach(func(key, value gjson.Result) bool {
|
|
||||||
definition = value.Get("definitions.0")
|
|
||||||
return definition.String() == ""
|
|
||||||
})
|
|
||||||
return
|
|
||||||
}
|
|
||||||
31
plugin/kfccrazythursday/kfccrazythursday.go
Normal file
31
plugin/kfccrazythursday/kfccrazythursday.go
Normal file
@ -0,0 +1,31 @@
|
|||||||
|
// Package kfccrazythursday 疯狂星期四
|
||||||
|
package kfccrazythursday
|
||||||
|
|
||||||
|
import (
|
||||||
|
"github.com/FloatTech/floatbox/web"
|
||||||
|
ctrl "github.com/FloatTech/zbpctrl"
|
||||||
|
"github.com/FloatTech/zbputils/control"
|
||||||
|
"github.com/tidwall/gjson"
|
||||||
|
zero "github.com/wdvxdr1123/ZeroBot"
|
||||||
|
"github.com/wdvxdr1123/ZeroBot/message"
|
||||||
|
)
|
||||||
|
|
||||||
|
const (
|
||||||
|
crazyURL = "https://www.iculture.cc/demo/CrazyThursday/api/kfc.php"
|
||||||
|
)
|
||||||
|
|
||||||
|
func init() {
|
||||||
|
engine := control.Register("kfccrazythursday", &ctrl.Options[*zero.Ctx]{
|
||||||
|
DisableOnDefault: false,
|
||||||
|
Brief: "疯狂星期四",
|
||||||
|
Help: "疯狂星期四\n",
|
||||||
|
})
|
||||||
|
engine.OnFullMatch("疯狂星期四").SetBlock(true).Handle(func(ctx *zero.Ctx) {
|
||||||
|
data, err := web.GetData(crazyURL)
|
||||||
|
if err != nil {
|
||||||
|
ctx.SendChain(message.Text("Error:", err))
|
||||||
|
return
|
||||||
|
}
|
||||||
|
ctx.SendChain(message.Text(gjson.ParseBytes(data).Get("@this.0.content").String()))
|
||||||
|
})
|
||||||
|
}
|
||||||
321
plugin/vtbmusic/vtbmusic.go
Normal file
321
plugin/vtbmusic/vtbmusic.go
Normal file
@ -0,0 +1,321 @@
|
|||||||
|
// Package vtbmusic vtb点歌
|
||||||
|
package vtbmusic
|
||||||
|
|
||||||
|
import (
|
||||||
|
"encoding/json"
|
||||||
|
"fmt"
|
||||||
|
"math/rand"
|
||||||
|
"net/http"
|
||||||
|
"os"
|
||||||
|
"path"
|
||||||
|
"strconv"
|
||||||
|
"strings"
|
||||||
|
"time"
|
||||||
|
|
||||||
|
"github.com/FloatTech/floatbox/binary"
|
||||||
|
"github.com/FloatTech/floatbox/file"
|
||||||
|
"github.com/FloatTech/floatbox/web"
|
||||||
|
ctrl "github.com/FloatTech/zbpctrl"
|
||||||
|
"github.com/FloatTech/zbputils/control"
|
||||||
|
"github.com/FloatTech/zbputils/img/text"
|
||||||
|
zero "github.com/wdvxdr1123/ZeroBot"
|
||||||
|
"github.com/wdvxdr1123/ZeroBot/message"
|
||||||
|
)
|
||||||
|
|
||||||
|
const (
|
||||||
|
getGroupListURL = "https://aqua.chat/v1/GetGroupsList"
|
||||||
|
getMusicListURL = "https://aqua.chat/v1/GetMusicList"
|
||||||
|
fileURL = "https://cdn.aqua.chat/"
|
||||||
|
musicListBody = `{"search":{"condition":"VocalId","keyword":"%v"},"sortField":"CreateTime","sortType":"desc","pageIndex":1,"pageRows":10000}`
|
||||||
|
)
|
||||||
|
|
||||||
|
type groupsList struct {
|
||||||
|
Total int `json:"Total"`
|
||||||
|
Data []struct {
|
||||||
|
ID string `json:"Id"`
|
||||||
|
CreateTime string `json:"CreateTime"`
|
||||||
|
Name string `json:"Name"`
|
||||||
|
GroupImg string `json:"GroupImg"`
|
||||||
|
VocalList []struct {
|
||||||
|
ID string `json:"Id"`
|
||||||
|
CreateTime string `json:"CreateTime"`
|
||||||
|
ChineseName string `json:"ChineseName"`
|
||||||
|
OriginName string `json:"OriginName"`
|
||||||
|
AvatarImg string `json:"AvatarImg"`
|
||||||
|
} `json:"VocalList"`
|
||||||
|
} `json:"Data"`
|
||||||
|
Success bool `json:"Success"`
|
||||||
|
ErrorCode int `json:"ErrorCode"`
|
||||||
|
Msg interface{} `json:"Msg"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type musicList struct {
|
||||||
|
Total int `json:"Total"`
|
||||||
|
Data []struct {
|
||||||
|
ID string `json:"Id"`
|
||||||
|
CreateTime string `json:"CreateTime"`
|
||||||
|
PublishTime interface{} `json:"PublishTime"`
|
||||||
|
CreatorID interface{} `json:"CreatorId"`
|
||||||
|
CreatorRealName interface{} `json:"CreatorRealName"`
|
||||||
|
Deleted bool `json:"Deleted"`
|
||||||
|
OriginName string `json:"OriginName"`
|
||||||
|
VocalID string `json:"VocalId"`
|
||||||
|
VocalName string `json:"VocalName"`
|
||||||
|
CoverImg string `json:"CoverImg"`
|
||||||
|
Music string `json:"Music"`
|
||||||
|
Lyric interface{} `json:"Lyric"`
|
||||||
|
CDN string `json:"CDN"`
|
||||||
|
BiliBili interface{} `json:"BiliBili"`
|
||||||
|
YouTube interface{} `json:"YouTube"`
|
||||||
|
Twitter interface{} `json:"Twitter"`
|
||||||
|
Likes interface{} `json:"Likes"`
|
||||||
|
Length float64 `json:"Length"`
|
||||||
|
Label interface{} `json:"Label"`
|
||||||
|
IsLike bool `json:"isLike"`
|
||||||
|
Duration float64 `json:"Duration"`
|
||||||
|
Source interface{} `json:"Source"`
|
||||||
|
SourceName interface{} `json:"SourceName"`
|
||||||
|
Statis struct {
|
||||||
|
PlayCount int `json:"PlayCount"`
|
||||||
|
CommentCount int `json:"CommentCount"`
|
||||||
|
LikeCount int `json:"LikeCount"`
|
||||||
|
ShareCount int `json:"ShareCount"`
|
||||||
|
} `json:"Statis"`
|
||||||
|
VocalList []struct {
|
||||||
|
ID string `json:"Id"`
|
||||||
|
Cn string `json:"cn"`
|
||||||
|
Jp string `json:"jp"`
|
||||||
|
En string `json:"en"`
|
||||||
|
Originlang string `json:"originlang"`
|
||||||
|
} `json:"VocalList"`
|
||||||
|
} `json:"Data"`
|
||||||
|
Success bool `json:"Success"`
|
||||||
|
ErrorCode int `json:"ErrorCode"`
|
||||||
|
Msg interface{} `json:"Msg"`
|
||||||
|
}
|
||||||
|
|
||||||
|
func init() { // 插件主体
|
||||||
|
engine := control.Register("vtbmusic", &ctrl.Options[*zero.Ctx]{
|
||||||
|
DisableOnDefault: false,
|
||||||
|
Brief: "vtbmusic.com点歌",
|
||||||
|
Help: "- vtb点歌\n" +
|
||||||
|
"- vtb随机点歌",
|
||||||
|
PrivateDataFolder: "vtbmusic",
|
||||||
|
})
|
||||||
|
storePath := engine.DataFolder()
|
||||||
|
// 开启
|
||||||
|
engine.OnFullMatch(`vtb点歌`).SetBlock(true).
|
||||||
|
Handle(func(ctx *zero.Ctx) {
|
||||||
|
next := zero.NewFutureEvent("message", 999, false, ctx.CheckSession(), zero.RegexRule(`^\d+$`))
|
||||||
|
recv, cancel := next.Repeat()
|
||||||
|
defer cancel()
|
||||||
|
i := 0
|
||||||
|
paras := [3]int{}
|
||||||
|
data, err := web.PostData(getGroupListURL, "application/json", strings.NewReader(`{"PageIndex":1,"PageRows":9999}`))
|
||||||
|
if err != nil {
|
||||||
|
ctx.SendChain(message.Text("ERROR: ", err))
|
||||||
|
return
|
||||||
|
}
|
||||||
|
var (
|
||||||
|
gl groupsList
|
||||||
|
ml musicList
|
||||||
|
num int
|
||||||
|
imageBytes []byte
|
||||||
|
)
|
||||||
|
err = json.Unmarshal(data, &gl)
|
||||||
|
if err != nil {
|
||||||
|
ctx.SendChain(message.Text("ERROR: ", err))
|
||||||
|
return
|
||||||
|
}
|
||||||
|
tex := "请输入群组序号\n"
|
||||||
|
for i, v := range gl.Data {
|
||||||
|
tex += fmt.Sprintf("%d. %s\n", i, v.Name)
|
||||||
|
}
|
||||||
|
imageBytes, err = text.RenderToBase64(tex, text.FontFile, 400, 20)
|
||||||
|
if err != nil {
|
||||||
|
ctx.SendChain(message.Text("ERROR: ", err))
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if id := ctx.SendChain(message.Reply(ctx.Event.MessageID), message.Image("base64://"+binary.BytesToString(imageBytes))); id.ID() == 0 {
|
||||||
|
ctx.SendChain(message.Text("ERROR: 可能被风控了"))
|
||||||
|
}
|
||||||
|
for {
|
||||||
|
select {
|
||||||
|
case <-time.After(time.Second * 120):
|
||||||
|
ctx.SendChain(message.Reply(ctx.Event.MessageID), message.Text("vtb点歌超时"))
|
||||||
|
return
|
||||||
|
case c := <-recv:
|
||||||
|
msg := c.Event.Message.ExtractPlainText()
|
||||||
|
num, err = strconv.Atoi(msg)
|
||||||
|
if err != nil {
|
||||||
|
ctx.SendChain(message.Reply(ctx.Event.MessageID), message.Text("请输入数字!"))
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
switch i {
|
||||||
|
case 0:
|
||||||
|
if num < 0 || num >= len(gl.Data) {
|
||||||
|
ctx.SendChain(message.Reply(ctx.Event.MessageID), message.Text("序号非法!"))
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
if len(gl.Data[num].VocalList) == 0 {
|
||||||
|
ctx.SendChain(message.Reply(ctx.Event.MessageID), message.Text("无内容, 点歌失败"))
|
||||||
|
return
|
||||||
|
}
|
||||||
|
paras[0] = num
|
||||||
|
tex = "请输入vtb序号\n"
|
||||||
|
for i, v := range gl.Data[paras[0]].VocalList {
|
||||||
|
tex += fmt.Sprintf("%d. %s\n", i, v.OriginName)
|
||||||
|
}
|
||||||
|
imageBytes, err = text.RenderToBase64(tex, text.FontFile, 400, 20)
|
||||||
|
if err != nil {
|
||||||
|
ctx.SendChain(message.Text("ERROR: ", err))
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if id := ctx.SendChain(message.Reply(ctx.Event.MessageID), message.Image("base64://"+binary.BytesToString(imageBytes))); id.ID() == 0 {
|
||||||
|
ctx.SendChain(message.Text("ERROR: 可能被风控了"))
|
||||||
|
}
|
||||||
|
case 1:
|
||||||
|
if num < 0 || num >= len(gl.Data[paras[0]].VocalList) {
|
||||||
|
ctx.SendChain(message.Reply(ctx.Event.MessageID), message.Text("序号非法!"))
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
paras[1] = num
|
||||||
|
data, err := web.PostData(getMusicListURL, "application/json", strings.NewReader(fmt.Sprintf(musicListBody, gl.Data[paras[0]].VocalList[paras[1]].ID)))
|
||||||
|
if err != nil {
|
||||||
|
ctx.SendChain(message.Text("ERROR: ", err))
|
||||||
|
return
|
||||||
|
}
|
||||||
|
err = json.Unmarshal(data, &ml)
|
||||||
|
if err != nil {
|
||||||
|
ctx.SendChain(message.Text("ERROR: ", err))
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if len(ml.Data) == 0 {
|
||||||
|
ctx.SendChain(message.Reply(ctx.Event.MessageID), message.Text("无内容, 点歌失败"))
|
||||||
|
return
|
||||||
|
}
|
||||||
|
tex = "请输入歌曲序号\n"
|
||||||
|
for i, v := range ml.Data {
|
||||||
|
tex += fmt.Sprintf("%d. %s\n", i, v.OriginName)
|
||||||
|
}
|
||||||
|
imageBytes, err = text.RenderToBase64(tex, text.FontFile, 400, 20)
|
||||||
|
if err != nil {
|
||||||
|
ctx.SendChain(message.Text("ERROR: ", err))
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if id := ctx.SendChain(message.Reply(ctx.Event.MessageID), message.Image("base64://"+binary.BytesToString(imageBytes))); id.ID() == 0 {
|
||||||
|
ctx.SendChain(message.Text("ERROR: 可能被风控了"))
|
||||||
|
}
|
||||||
|
case 2:
|
||||||
|
if num < 0 || num >= len(ml.Data) {
|
||||||
|
ctx.SendChain(message.Reply(ctx.Event.MessageID), message.Text("序号非法!"))
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
paras[2] = num
|
||||||
|
// 最后播放歌曲
|
||||||
|
groupName := gl.Data[paras[0]].Name
|
||||||
|
vtbName := gl.Data[paras[0]].VocalList[paras[1]].OriginName
|
||||||
|
musicName := ml.Data[paras[2]].OriginName
|
||||||
|
recURL := fileURL + ml.Data[paras[2]].Music
|
||||||
|
ctx.SendChain(message.Reply(ctx.Event.MessageID), message.Text("请欣赏", groupName, "-", vtbName, "的《", musicName, "》"))
|
||||||
|
recordFile := storePath + fmt.Sprintf("%d-%d-%d", paras[0], paras[1], paras[2]) + path.Ext(recURL)
|
||||||
|
if file.IsExist(recordFile) {
|
||||||
|
ctx.SendChain(message.Record("file:///" + file.BOTPATH + "/" + recordFile))
|
||||||
|
return
|
||||||
|
}
|
||||||
|
err = dlrec(recordFile, recURL)
|
||||||
|
if err != nil {
|
||||||
|
ctx.SendChain(message.Text("ERROR: ", err))
|
||||||
|
return
|
||||||
|
}
|
||||||
|
ctx.SendChain(message.Record("file:///" + file.BOTPATH + "/" + recordFile))
|
||||||
|
return
|
||||||
|
}
|
||||||
|
i++
|
||||||
|
}
|
||||||
|
}
|
||||||
|
})
|
||||||
|
engine.OnFullMatch(`vtb随机点歌`).SetBlock(true).
|
||||||
|
Handle(func(ctx *zero.Ctx) {
|
||||||
|
var (
|
||||||
|
paras = [3]int{}
|
||||||
|
gl groupsList
|
||||||
|
ml musicList
|
||||||
|
)
|
||||||
|
data, err := web.PostData(getGroupListURL, "application/json", strings.NewReader(`{"PageIndex":1,"PageRows":9999}`))
|
||||||
|
if err != nil {
|
||||||
|
ctx.SendChain(message.Text("ERROR: ", err))
|
||||||
|
return
|
||||||
|
}
|
||||||
|
err = json.Unmarshal(data, &gl)
|
||||||
|
if err != nil {
|
||||||
|
ctx.SendChain(message.Text("ERROR: ", err))
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if len(gl.Data) == 0 {
|
||||||
|
ctx.SendChain(message.Text("ERROR: 数组为空"))
|
||||||
|
return
|
||||||
|
}
|
||||||
|
paras[0] = rand.Intn(len(gl.Data))
|
||||||
|
for len(gl.Data[paras[0]].VocalList) == 0 {
|
||||||
|
paras[0] = rand.Intn(len(gl.Data))
|
||||||
|
}
|
||||||
|
paras[1] = rand.Intn(len(gl.Data[paras[0]].VocalList))
|
||||||
|
data, err = web.PostData(getMusicListURL, "application/json", strings.NewReader(fmt.Sprintf(musicListBody, gl.Data[paras[0]].VocalList[paras[1]].ID)))
|
||||||
|
if err != nil {
|
||||||
|
ctx.SendChain(message.Text("ERROR: ", err))
|
||||||
|
return
|
||||||
|
}
|
||||||
|
err = json.Unmarshal(data, &ml)
|
||||||
|
if err != nil {
|
||||||
|
ctx.SendChain(message.Text("ERROR: ", err))
|
||||||
|
return
|
||||||
|
}
|
||||||
|
for len(ml.Data) == 0 {
|
||||||
|
paras[1] = rand.Intn(len(gl.Data[paras[0]].VocalList))
|
||||||
|
data, err = web.PostData(getMusicListURL, "application/json", strings.NewReader(fmt.Sprintf(musicListBody, gl.Data[paras[0]].VocalList[paras[1]].ID)))
|
||||||
|
if err != nil {
|
||||||
|
ctx.SendChain(message.Text("ERROR: ", err))
|
||||||
|
return
|
||||||
|
}
|
||||||
|
err = json.Unmarshal(data, &ml)
|
||||||
|
if err != nil {
|
||||||
|
ctx.SendChain(message.Text("ERROR: ", err))
|
||||||
|
return
|
||||||
|
}
|
||||||
|
}
|
||||||
|
paras[2] = rand.Intn(len(ml.Data))
|
||||||
|
// 最后播放歌曲
|
||||||
|
groupName := gl.Data[paras[0]].Name
|
||||||
|
vtbName := gl.Data[paras[0]].VocalList[paras[1]].OriginName
|
||||||
|
musicName := ml.Data[paras[2]].OriginName
|
||||||
|
recURL := fileURL + ml.Data[paras[2]].Music
|
||||||
|
ctx.SendChain(message.Reply(ctx.Event.MessageID), message.Text("请欣赏", groupName, "-", vtbName, "的《", musicName, "》"))
|
||||||
|
recordFile := storePath + fmt.Sprintf("%d-%d-%d", paras[0], paras[1], paras[2]) + path.Ext(recURL)
|
||||||
|
if file.IsExist(recordFile) {
|
||||||
|
ctx.SendChain(message.Record("file:///" + file.BOTPATH + "/" + recordFile))
|
||||||
|
return
|
||||||
|
}
|
||||||
|
err = dlrec(recordFile, recURL)
|
||||||
|
if err != nil {
|
||||||
|
ctx.SendChain(message.Text("ERROR: ", err))
|
||||||
|
return
|
||||||
|
}
|
||||||
|
ctx.SendChain(message.Record("file:///" + file.BOTPATH + "/" + recordFile))
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
func dlrec(recordFile, recordURL string) error {
|
||||||
|
if file.IsNotExist(recordFile) {
|
||||||
|
data, err := web.RequestDataWithHeaders(web.NewTLS12Client(), recordURL, "GET", func(r *http.Request) error {
|
||||||
|
r.Header.Set("Content-Type", "application/x-www-form-urlencoded")
|
||||||
|
r.Header.Set("User-Agent", "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:6.0) Gecko/20100101 Firefox/6.0")
|
||||||
|
return nil
|
||||||
|
}, nil)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
return os.WriteFile(recordFile, data, 0666)
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
Loading…
Reference in New Issue
Block a user