From 63d87be789697a4b762a67188418c4aafaebd504 Mon Sep 17 00:00:00 2001 From: Kanri Date: Tue, 5 Oct 2021 00:57:22 +0800 Subject: [PATCH 1/6] =?UTF-8?q?=E2=9C=A8=20=E5=A2=9E=E5=8A=A0=E8=BF=90?= =?UTF-8?q?=E5=8A=BF=E5=9B=BE=E7=89=87=E6=8F=92=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- plugin_fortune/fortune.go | 302 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 302 insertions(+) create mode 100644 plugin_fortune/fortune.go diff --git a/plugin_fortune/fortune.go b/plugin_fortune/fortune.go new file mode 100644 index 00000000..c2442806 --- /dev/null +++ b/plugin_fortune/fortune.go @@ -0,0 +1,302 @@ +/* + * @Author: Kanri + * @Date: 2021-10-04 17:18:34 + * @LastEditors: Kanri + * @LastEditTime: 2021-10-05 00:55:53 + * @Description: 每日运势 + */ +package fortune + +import ( + "archive/zip" + "encoding/json" + "errors" + "io" + "io/ioutil" + "math/rand" + "net/http" + "os" + "strconv" + "strings" + "time" + + "github.com/fogleman/gg" + zero "github.com/wdvxdr1123/ZeroBot" + "github.com/wdvxdr1123/ZeroBot/extension/rate" + "github.com/wdvxdr1123/ZeroBot/message" + + "github.com/FloatTech/ZeroBot-Plugin/control" +) + +var ( + limit = rate.NewManager(time.Minute*3, 5) + // 底图缓存位置 + base = "data/fortune/" + table = map[int64]string{ + 0: "爱因斯坦", + 1048452984: "碧蓝航线", + 651044332: "原神", + } +) + +func init() { + + // 插件主体 + control.Register("runcode", &control.Options{ + DisableOnDefault: false, + Help: "每日运势: \n" + + "- 运势", + }).OnFullMatchGroup([]string{"运势", "抽签"}).SetBlock(true).SecondPriority(). + Handle(func(ctx *zero.Ctx) { + // 检查签文文件是否存在 + if _, err := os.Stat(base + "运势签文.json"); err != nil && !os.IsExist(err) { + ctx.SendChain(message.Text("正在下载签文文件,请稍后...")) + _, err := download("https://pan.dihe.moe/fortune/运势签文.json", base) + if err != nil { + ctx.SendChain(message.Text("ERROR: ", err)) + return + } + ctx.SendChain(message.Text("下载签文文件完毕")) + } + // 检查字体文件是否存在 + if _, err := os.Stat(base + "sakura.ttf"); err != nil && !os.IsExist(err) { + ctx.SendChain(message.Text("正在下载字体文件,请稍后...")) + _, err := download("https://pan.dihe.moe/fortune/sakura.ttf", base) + if err != nil { + ctx.SendChain(message.Text("ERROR: ", err)) + return + } + ctx.SendChain(message.Text("下载字体文件完毕")) + } + // 获取该群背景类型 + var type_ string + if v, ok := table[ctx.Event.GroupID]; ok { + type_ = v + } else { + type_ = table[0] + } + // 检查背景图片是否存在 + if _, err := os.Stat(base + type_); err != nil && !os.IsExist(err) { + ctx.SendChain(message.Text("正在下载背景图片,请稍后...")) + file, err := download("https://pan.dihe.moe/fortune/"+type_+".zip", base) + if err != nil { + ctx.SendChain(message.Text("ERROR: ", err)) + return + } + ctx.SendChain(message.Text("下载背景图片完毕")) + err = unpack(file, base) + if err != nil { + ctx.SendChain(message.Text("ERROR: ", err)) + return + } + ctx.SendChain(message.Text("解压背景图片完毕")) + } + // 生成种子 + t, _ := strconv.ParseInt(time.Now().Format("20060102"), 10, 64) + seed := ctx.Event.UserID + t + // 随机获取背景 + background, err := randimage(base+type_, seed) + if err != nil { + ctx.SendChain(message.Text("ERROR: ", err)) + return + } + // 随机获取签文 + title, text, err := randtext(base+"fortune.json", seed) + if err != nil { + ctx.SendChain(message.Text("ERROR: ", err)) + return + } + // 绘制背景 + err = draw(background, title, text) + if err != nil { + ctx.SendChain(message.Text("ERROR: ", err)) + return + } + // 发送图片 + ctx.SendChain(message.Image(base + "out.jpg")) + }) +} + +// @function download 下载资源包 +// @param url 下载链接 +// @param dest 下载位置 +// @return 文件路径 & 错误信息 +func download(url, dest string) (string, error) { + // 路径目录不存在则创建目录 + if _, err := os.Stat(dest); err != nil && !os.IsExist(err) { + if err := os.MkdirAll(dest, 0755); err != nil { + panic(err) + } + } + client := &http.Client{} + // 网络请求 + request, _ := http.NewRequest("GET", url, nil) + request.Header.Set("Accept", "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:6.0) Gecko/20100101 Firefox/6.0") + resp, err := client.Do(request) + if err != nil { + return "", err + } + defer resp.Body.Close() + // 验证接收到的长度 + length, _ := strconv.Atoi(resp.Header.Get("Content-Length")) + data, _ := ioutil.ReadAll(resp.Body) + if length != len(data) { + return "", errors.New("download not complete") + } + // 获取文件名 + temp := strings.Split(resp.Header.Get("Content-Disposition"), "\"") + name := temp[len(temp)-1] + // 写入文件 + f, _ := os.OpenFile(dest+name, os.O_WRONLY|os.O_TRUNC|os.O_CREATE, 0644) + defer f.Close() + f.Write(data) + return dest + name, nil +} + +// @function unpack 解压资源包 +// @param tgt 压缩文件位置 +// @param dest 解压位置 +// @return 错误信息 +func unpack(tgt, dest string) error { + // 路径目录不存在则创建目录 + if _, err := os.Stat(dest); err != nil && !os.IsExist(err) { + if err := os.MkdirAll(dest, 0755); err != nil { + panic(err) + } + } + reader, err := zip.OpenReader(tgt) + if err != nil { + return err + } + defer reader.Close() + // 遍历解压到文件 + for _, file := range reader.File { + // 打开解压文件 + rc, err := file.Open() + if err != nil { + return err + } + // 打开目标文件 + w, err := os.OpenFile(dest+file.Name, os.O_WRONLY|os.O_TRUNC|os.O_CREATE, 0644) + if err != nil { + rc.Close() + return err + } + // 复制到文件 + _, err = io.Copy(w, rc) + rc.Close() + w.Close() + if err != nil { + return err + } + } + return nil +} + +// @function randimage 随机选取文件夹下的文件 +// @param path 文件夹路径 +// @param seed 随机数种子 +// @return 文件路径 & 错误信息 +func randimage(path string, seed int64) (string, error) { + rd, err := ioutil.ReadDir(path) + if err != nil { + return "", err + } + rand.Seed(seed) + return rd[rand.Intn(len(rd))].Name(), nil +} + +// @function randtext 随机选取签文 +// @param file 文件路径 +// @param seed 随机数种子 +// @return 签名 & 签文 & 错误信息 +func randtext(file string, seed int64) (string, string, error) { + data, err := ioutil.ReadFile(file) + if err != nil { + return "", "", err + } + temp := []map[string]string{} + if err := json.Unmarshal(data, &temp); err != nil { + return "", "", err + } + rand.Seed(seed) + r := rand.Intn(len(temp)) + return temp[r]["title"], temp[r]["content"], nil +} + +// @function draw 绘制运势图 +// @param background 背景图片路径 +// @param seed 随机数种子 +// @param title 签名 +// @param text 签文 +// @return 错误信息 +func draw(background, title, text string) error { + // 加载背景 + back, err := gg.LoadImage(background) + if err != nil { + return err + } + canvas := gg.NewContext(back.Bounds().Size().Y, back.Bounds().Size().X) + canvas.DrawImage(back, 0, 0) + // 写标题 + canvas.SetRGB(1, 1, 1) + if err := canvas.LoadFontFace(base+"sakura.ttf", 45); err != nil { + return err + } + sw, _ := canvas.MeasureString(title) + canvas.DrawString(title, 140-sw/2, 112) + // 写正文 + canvas.SetRGB(0, 0, 0) + if err := canvas.LoadFontFace(base+"sakura.ttf", 23); err != nil { + return err + } + offest := func(total, now int, distance float64) float64 { + if total%2 == 0 { + return (float64(now-total/2) - 1) * distance + } else { + return (float64(now-total/2) - 1.5) * distance + } + } + rowsnum := func(total, div int) int { + temp := total / div + if total%div != 0 { + temp += 1 + } + return temp + } + min := func(a, b int) int { + if a < b { + return a + } + return b + } + tw, th := canvas.MeasureString("测") + tw, th = tw+10, th+10 + r := []rune(text) + xsum := rowsnum(len(r), 9) + switch xsum { + default: + for i, o := range r { + xnow := rowsnum(i+1, 9) + ysum := min(len(r)-(xnow-1)*9, 9) + ynow := i%9 + 1 + canvas.DrawString(string(o), -offest(xsum, xnow, tw)+115, offest(ysum, ynow, th)+320.0) + } + case 2: + div := rowsnum(len(r), 2) + for i, o := range r { + xnow := rowsnum(i+1, div) + ysum := min(len(r)-(xnow-1)*div, div) + ynow := i%div + 1 + switch xnow { + case 1: + canvas.DrawString(string(o), -offest(xsum, xnow, tw)+115, offest(9, ynow, th)+320.0) + case 2: + canvas.DrawString(string(o), -offest(xsum, xnow, tw)+115, offest(9, ynow+(9-ysum), th)+320.0) + } + } + } + // 保存 + gg.SaveJPG(base+"out.jpg", canvas.Image(), 70) + return nil +} From 0cc6251c0d827c01a02f21934b37b9833ead55ce Mon Sep 17 00:00:00 2001 From: Kanri Date: Tue, 5 Oct 2021 12:02:22 +0800 Subject: [PATCH 2/6] =?UTF-8?q?=E2=9E=95=20=E5=A2=9E=E5=8A=A0=20gg=20?= =?UTF-8?q?=E7=BB=98=E5=9B=BE=E5=BA=93=E7=9B=B4=E6=8E=A5=E4=BE=9D=E8=B5=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- go.mod | 1 + 1 file changed, 1 insertion(+) diff --git a/go.mod b/go.mod index 02ecf15b..16c48c95 100644 --- a/go.mod +++ b/go.mod @@ -7,6 +7,7 @@ require ( github.com/FloatTech/ZeroBot-Plugin-Gif v0.2.3 github.com/FloatTech/ZeroBot-Plugin-Timer v1.4.3 github.com/FloatTech/bot-manager v1.0.0 + github.com/fogleman/gg v1.3.0 github.com/gin-gonic/gin v1.7.4 github.com/golang/protobuf v1.5.2 github.com/gorilla/websocket v1.4.2 From 18424bea7cc7437e4616364586f083ba820470f0 Mon Sep 17 00:00:00 2001 From: Kanri Date: Tue, 5 Oct 2021 12:02:49 +0800 Subject: [PATCH 3/6] =?UTF-8?q?=F0=9F=99=88=20=E5=A2=9E=E5=8A=A0=20fortune?= =?UTF-8?q?=20=E7=B4=A0=E6=9D=90=E6=96=87=E4=BB=B6=E5=BF=BD=E7=95=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index 5736e33f..9480c4ef 100644 --- a/.gitignore +++ b/.gitignore @@ -3,6 +3,7 @@ data/control data/SetuTime/search data/manager data/acgimage +data/fortune data/hs .idea/ .DS_Store From 4cc1dc2d1b342fc1cc2819413f13a2d41597280f Mon Sep 17 00:00:00 2001 From: Kanri Date: Tue, 5 Oct 2021 12:03:31 +0800 Subject: [PATCH 4/6] =?UTF-8?q?=E2=9C=A8=E2=9C=A8=20=E5=A2=9E=E5=8A=A0=20f?= =?UTF-8?q?ortune=20=E6=8F=92=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- main.go | 1 + plugin_fortune/fortune.go | 76 ++++++++++++++++++++++++++------------- plugin_omikuji/sensou.go | 12 +++++-- 3 files changed, 62 insertions(+), 27 deletions(-) diff --git a/main.go b/main.go index 3dffa726..98f6f72b 100644 --- a/main.go +++ b/main.go @@ -24,6 +24,7 @@ import ( _ "github.com/FloatTech/ZeroBot-Plugin-Gif" // 制图 _ "github.com/FloatTech/ZeroBot-Plugin/plugin_ai_false" // 服务器监控 _ "github.com/FloatTech/ZeroBot-Plugin/plugin_choose" // 选择困难症帮手 + _ "github.com/FloatTech/ZeroBot-Plugin/plugin_fortune" // 运势 _ "github.com/FloatTech/ZeroBot-Plugin/plugin_hs" // 炉石 _ "github.com/FloatTech/ZeroBot-Plugin/plugin_minecraft" // MCSManager _ "github.com/FloatTech/ZeroBot-Plugin/plugin_music" // 点歌 diff --git a/plugin_fortune/fortune.go b/plugin_fortune/fortune.go index c2442806..1e64d57e 100644 --- a/plugin_fortune/fortune.go +++ b/plugin_fortune/fortune.go @@ -1,20 +1,32 @@ +/* + * @Author: Kanri + * @Date: 2021-10-05 11:30:32 + * @LastEditors: Kanri + * @LastEditTime: 2021-10-05 11:59:46 + * @Description: + */ /* * @Author: Kanri * @Date: 2021-10-04 17:18:34 * @LastEditors: Kanri - * @LastEditTime: 2021-10-05 00:55:53 + * @LastEditTime: 2021-10-05 11:29:32 * @Description: 每日运势 */ package fortune import ( "archive/zip" + "bytes" + "encoding/base64" "encoding/json" "errors" + "fmt" + "image/jpeg" "io" "io/ioutil" "math/rand" "net/http" + "net/url" "os" "strconv" "strings" @@ -31,16 +43,17 @@ import ( var ( limit = rate.NewManager(time.Minute*3, 5) // 底图缓存位置 - base = "data/fortune/" + base = "data/fortune/" + // int64 群号 string 底图类型 + // 底图类型列表:车万 DC4 爱因斯坦 星空列车 樱云之恋 富婆妹 李清歌 + // 公主连结 原神 明日方舟 碧蓝航线 碧蓝幻想 战双 阴阳师 table = map[int64]string{ - 0: "爱因斯坦", - 1048452984: "碧蓝航线", - 651044332: "原神", + 0: "车万", + 1048452984: "爱因斯坦", } ) func init() { - // 插件主体 control.Register("runcode", &control.Options{ DisableOnDefault: false, @@ -84,7 +97,7 @@ func init() { return } ctx.SendChain(message.Text("下载背景图片完毕")) - err = unpack(file, base) + err = unpack(file, base+type_+"/") if err != nil { ctx.SendChain(message.Text("ERROR: ", err)) return @@ -95,33 +108,33 @@ func init() { t, _ := strconv.ParseInt(time.Now().Format("20060102"), 10, 64) seed := ctx.Event.UserID + t // 随机获取背景 - background, err := randimage(base+type_, seed) + background, err := randimage(base+type_+"/", seed) if err != nil { ctx.SendChain(message.Text("ERROR: ", err)) return } // 随机获取签文 - title, text, err := randtext(base+"fortune.json", seed) + title, text, err := randtext(base+"运势签文.json", seed) if err != nil { ctx.SendChain(message.Text("ERROR: ", err)) return } // 绘制背景 - err = draw(background, title, text) + data, err := draw(background, title, text) if err != nil { ctx.SendChain(message.Text("ERROR: ", err)) return } // 发送图片 - ctx.SendChain(message.Image(base + "out.jpg")) + ctx.SendChain(message.Image("base64://" + string(data))) }) } // @function download 下载资源包 -// @param url 下载链接 +// @param link 下载链接 // @param dest 下载位置 // @return 文件路径 & 错误信息 -func download(url, dest string) (string, error) { +func download(link, dest string) (string, error) { // 路径目录不存在则创建目录 if _, err := os.Stat(dest); err != nil && !os.IsExist(err) { if err := os.MkdirAll(dest, 0755); err != nil { @@ -130,7 +143,7 @@ func download(url, dest string) (string, error) { } client := &http.Client{} // 网络请求 - request, _ := http.NewRequest("GET", url, nil) + request, _ := http.NewRequest("GET", link, nil) request.Header.Set("Accept", "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:6.0) Gecko/20100101 Firefox/6.0") resp, err := client.Do(request) if err != nil { @@ -140,14 +153,22 @@ func download(url, dest string) (string, error) { // 验证接收到的长度 length, _ := strconv.Atoi(resp.Header.Get("Content-Length")) data, _ := ioutil.ReadAll(resp.Body) - if length != len(data) { + if length > len(data) { + fmt.Println(len(data)) + fmt.Println(length) return "", errors.New("download not complete") } // 获取文件名 temp := strings.Split(resp.Header.Get("Content-Disposition"), "\"") - name := temp[len(temp)-1] + fmt.Println(temp) + fmt.Println(temp[len(temp)-2]) + name, _ := url.QueryUnescape(temp[len(temp)-2]) + fmt.Println(name) // 写入文件 - f, _ := os.OpenFile(dest+name, os.O_WRONLY|os.O_TRUNC|os.O_CREATE, 0644) + f, err := os.OpenFile(dest+name, os.O_WRONLY|os.O_TRUNC|os.O_CREATE, 0644) + if err != nil { + return "", err + } defer f.Close() f.Write(data) return dest + name, nil @@ -203,7 +224,7 @@ func randimage(path string, seed int64) (string, error) { return "", err } rand.Seed(seed) - return rd[rand.Intn(len(rd))].Name(), nil + return path + rd[rand.Intn(len(rd))].Name(), nil } // @function randtext 随机选取签文 @@ -230,25 +251,25 @@ func randtext(file string, seed int64) (string, string, error) { // @param title 签名 // @param text 签文 // @return 错误信息 -func draw(background, title, text string) error { +func draw(background, title, text string) ([]byte, error) { // 加载背景 back, err := gg.LoadImage(background) if err != nil { - return err + return nil, err } canvas := gg.NewContext(back.Bounds().Size().Y, back.Bounds().Size().X) canvas.DrawImage(back, 0, 0) // 写标题 canvas.SetRGB(1, 1, 1) if err := canvas.LoadFontFace(base+"sakura.ttf", 45); err != nil { - return err + return nil, err } sw, _ := canvas.MeasureString(title) canvas.DrawString(title, 140-sw/2, 112) // 写正文 canvas.SetRGB(0, 0, 0) if err := canvas.LoadFontFace(base+"sakura.ttf", 23); err != nil { - return err + return nil, err } offest := func(total, now int, distance float64) float64 { if total%2 == 0 { @@ -297,6 +318,13 @@ func draw(background, title, text string) error { } } // 保存 - gg.SaveJPG(base+"out.jpg", canvas.Image(), 70) - return nil + buffer := new(bytes.Buffer) + encoder := base64.NewEncoder(base64.StdEncoding, buffer) + var opt jpeg.Options + opt.Quality = 70 + err = jpeg.Encode(encoder, canvas.Image(), &opt) + if err != nil { + return nil, err + } + return buffer.Bytes(), nil } diff --git a/plugin_omikuji/sensou.go b/plugin_omikuji/sensou.go index 6c1571f4..6de44273 100644 --- a/plugin_omikuji/sensou.go +++ b/plugin_omikuji/sensou.go @@ -1,4 +1,10 @@ -// Package omikuji 浅草寺求签 +/* + * @Author: fumiama + * @Date: 2021-10-04 17:14:56 + * @LastEditors: Kanri + * @LastEditTime: 2021-10-05 11:04:39 + * @Description: 浅草寺求签 + */ package omikuji import ( @@ -21,8 +27,8 @@ func init() { // 插件主体 control.Register("omikuji", &control.Options{ DisableOnDefault: false, Help: "浅草寺求签\n" + - "- 求签|运势|占卜", - }).OnFullMatchGroup([]string{"求签", "运势", "占卜"}).SetPriority(10).SetBlock(true). + "- 求签|占卜", + }).OnFullMatchGroup([]string{"求签", "占卜"}).SetPriority(10).SetBlock(true). Handle(func(ctx *zero.Ctx) { miku := rand.Intn(100) + 1 ctx.SendChain( From 8236874779fd6d11b256c31a7f725e0be70bc336 Mon Sep 17 00:00:00 2001 From: Kanri Date: Tue, 5 Oct 2021 12:10:45 +0800 Subject: [PATCH 5/6] =?UTF-8?q?=F0=9F=8E=A8=20make=20lint=20happy?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- plugin_fortune/fortune.go | 37 ++++++++++--------------------------- plugin_omikuji/sensou.go | 8 +------- 2 files changed, 11 insertions(+), 34 deletions(-) diff --git a/plugin_fortune/fortune.go b/plugin_fortune/fortune.go index 1e64d57e..5607400c 100644 --- a/plugin_fortune/fortune.go +++ b/plugin_fortune/fortune.go @@ -1,17 +1,4 @@ -/* - * @Author: Kanri - * @Date: 2021-10-05 11:30:32 - * @LastEditors: Kanri - * @LastEditTime: 2021-10-05 11:59:46 - * @Description: - */ -/* - * @Author: Kanri - * @Date: 2021-10-04 17:18:34 - * @LastEditors: Kanri - * @LastEditTime: 2021-10-05 11:29:32 - * @Description: 每日运势 - */ +// Package fortune 每日运势 package fortune import ( @@ -82,22 +69,22 @@ func init() { ctx.SendChain(message.Text("下载字体文件完毕")) } // 获取该群背景类型 - var type_ string + var kind string if v, ok := table[ctx.Event.GroupID]; ok { - type_ = v + kind = v } else { - type_ = table[0] + kind = table[0] } // 检查背景图片是否存在 - if _, err := os.Stat(base + type_); err != nil && !os.IsExist(err) { + if _, err := os.Stat(base + kind); err != nil && !os.IsExist(err) { ctx.SendChain(message.Text("正在下载背景图片,请稍后...")) - file, err := download("https://pan.dihe.moe/fortune/"+type_+".zip", base) + file, err := download("https://pan.dihe.moe/fortune/"+kind+".zip", base) if err != nil { ctx.SendChain(message.Text("ERROR: ", err)) return } ctx.SendChain(message.Text("下载背景图片完毕")) - err = unpack(file, base+type_+"/") + err = unpack(file, base+kind+"/") if err != nil { ctx.SendChain(message.Text("ERROR: ", err)) return @@ -108,7 +95,7 @@ func init() { t, _ := strconv.ParseInt(time.Now().Format("20060102"), 10, 64) seed := ctx.Event.UserID + t // 随机获取背景 - background, err := randimage(base+type_+"/", seed) + background, err := randimage(base+kind+"/", seed) if err != nil { ctx.SendChain(message.Text("ERROR: ", err)) return @@ -160,10 +147,7 @@ func download(link, dest string) (string, error) { } // 获取文件名 temp := strings.Split(resp.Header.Get("Content-Disposition"), "\"") - fmt.Println(temp) - fmt.Println(temp[len(temp)-2]) name, _ := url.QueryUnescape(temp[len(temp)-2]) - fmt.Println(name) // 写入文件 f, err := os.OpenFile(dest+name, os.O_WRONLY|os.O_TRUNC|os.O_CREATE, 0644) if err != nil { @@ -274,14 +258,13 @@ func draw(background, title, text string) ([]byte, error) { offest := func(total, now int, distance float64) float64 { if total%2 == 0 { return (float64(now-total/2) - 1) * distance - } else { - return (float64(now-total/2) - 1.5) * distance } + return (float64(now-total/2) - 1.5) * distance } rowsnum := func(total, div int) int { temp := total / div if total%div != 0 { - temp += 1 + temp++ } return temp } diff --git a/plugin_omikuji/sensou.go b/plugin_omikuji/sensou.go index 6de44273..7da07449 100644 --- a/plugin_omikuji/sensou.go +++ b/plugin_omikuji/sensou.go @@ -1,10 +1,4 @@ -/* - * @Author: fumiama - * @Date: 2021-10-04 17:14:56 - * @LastEditors: Kanri - * @LastEditTime: 2021-10-05 11:04:39 - * @Description: 浅草寺求签 - */ +// Package omikuji 浅草寺求签 package omikuji import ( From e533170160e5133e06cdf54ac395b4ebcb0da422 Mon Sep 17 00:00:00 2001 From: Kanri Date: Tue, 5 Oct 2021 12:16:36 +0800 Subject: [PATCH 6/6] =?UTF-8?q?=F0=9F=8E=A8=20make=20lint=20happy?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- plugin_fortune/fortune.go | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/plugin_fortune/fortune.go b/plugin_fortune/fortune.go index 5607400c..6bada185 100644 --- a/plugin_fortune/fortune.go +++ b/plugin_fortune/fortune.go @@ -21,14 +21,12 @@ import ( "github.com/fogleman/gg" zero "github.com/wdvxdr1123/ZeroBot" - "github.com/wdvxdr1123/ZeroBot/extension/rate" "github.com/wdvxdr1123/ZeroBot/message" "github.com/FloatTech/ZeroBot-Plugin/control" ) var ( - limit = rate.NewManager(time.Minute*3, 5) // 底图缓存位置 base = "data/fortune/" // int64 群号 string 底图类型 @@ -154,7 +152,10 @@ func download(link, dest string) (string, error) { return "", err } defer f.Close() - f.Write(data) + _, err = f.Write(data) + if err != nil { + return "", err + } return dest + name, nil }