From 8fa928d37fd86fad2b6e674acd3669ad2cbf550b Mon Sep 17 00:00:00 2001 From: vatebur <67186678+vatebur@users.noreply.github.com> Date: Thu, 9 May 2024 15:29:20 +0800 Subject: [PATCH] optimize: gif plugin for image cache (#901) (fix #900) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 修改gif插件图片保存方式 --- plugin/gif/context.go | 8 ++++---- plugin/gif/logo.go | 4 ++-- plugin/gif/run.go | 3 ++- 3 files changed, 8 insertions(+), 7 deletions(-) diff --git a/plugin/gif/context.go b/plugin/gif/context.go index 74613bc69a..a1161053fc 100644 --- a/plugin/gif/context.go +++ b/plugin/gif/context.go @@ -87,13 +87,13 @@ func dlrange(prefix string, end int, wg *sync.WaitGroup, exit func(error)) []str } // 新的上下文 -func newContext(user int64) *context { +func newContext(user int64, atUser int64) *context { c := new(context) - c.usrdir = datapath + "users/" + strconv.FormatInt(user, 10) + `/` + c.usrdir = datapath + "users/" + strconv.FormatInt(atUser, 10) + `/` _ = os.MkdirAll(c.usrdir, 0755) c.headimgsdir = make([]string, 2) - c.headimgsdir[0] = c.usrdir + "0.gif" - c.headimgsdir[1] = c.usrdir + "1.gif" + c.headimgsdir[0] = datapath + "users/" + strconv.FormatInt(atUser, 10) + ".gif" + c.headimgsdir[1] = datapath + "users/" + strconv.FormatInt(user, 10) + ".gif" return c } diff --git a/plugin/gif/logo.go b/plugin/gif/logo.go index 3d78726072..f0fe05b654 100644 --- a/plugin/gif/logo.go +++ b/plugin/gif/logo.go @@ -14,9 +14,9 @@ func (cc *context) prepareLogos(s ...string) error { for i, v := range s { _, err := strconv.Atoi(v) if err != nil { - err = file.DownloadTo("https://gchat.qpic.cn/gchatpic_new//--"+strings.ToUpper(v)+"/0", cc.usrdir+strconv.Itoa(i)+".gif") + err = file.DownloadTo("https://gchat.qpic.cn/gchatpic_new//--"+strings.ToUpper(v)+"/0", cc.headimgsdir[i]) } else { - err = file.DownloadTo("http://q4.qlogo.cn/g?b=qq&nk="+v+"&s=640", cc.usrdir+strconv.Itoa(i)+".gif") + err = file.DownloadTo("http://q4.qlogo.cn/g?b=qq&nk="+v+"&s=640", cc.headimgsdir[i]) } if err != nil { return err diff --git a/plugin/gif/run.go b/plugin/gif/run.go index bf9f036e3a..04524c2cd1 100644 --- a/plugin/gif/run.go +++ b/plugin/gif/run.go @@ -152,8 +152,9 @@ func init() { // 插件主体 datapath = file.BOTPATH + "/" + en.DataFolder() en.OnRegex(`^(` + strings.Join(cmd, "|") + `)[\s\S]*?(\[CQ:(image\,file=([0-9a-zA-Z]{32}).*|at.+?(\d{5,11}))\].*|(\d+))$`). SetBlock(true).Handle(func(ctx *zero.Ctx) { - c := newContext(ctx.Event.UserID) list := ctx.State["regex_matched"].([]string) + atUserID, _ := strconv.ParseInt(list[4]+list[5]+list[6], 10, 64) + c := newContext(ctx.Event.UserID, atUserID) err := c.prepareLogos(list[4]+list[5]+list[6], strconv.FormatInt(ctx.Event.UserID, 10)) if err != nil { ctx.SendChain(message.Text("ERROR: ", err))