From 971c17922716a28e25611cf29e11dc8a6f7df0b1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=BA=90=E6=96=87=E9=9B=A8?= <41315874+fumiama@users.noreply.github.com> Date: Wed, 19 Apr 2023 23:26:15 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- plugin/thesaurus/chat.go | 35 +++++++++++++++++++++++------------ 1 file changed, 23 insertions(+), 12 deletions(-) diff --git a/plugin/thesaurus/chat.go b/plugin/thesaurus/chat.go index 33d6a625..9331f163 100644 --- a/plugin/thesaurus/chat.go +++ b/plugin/thesaurus/chat.go @@ -5,6 +5,7 @@ import ( "bytes" "encoding/json" "math/rand" + "net/http" "net/url" "os" "strings" @@ -106,7 +107,7 @@ func init() { } ctx.SendChain(message.Text("成功!")) }) - engine.OnRegex(`^设置🦙API地址\s*(http.*)\s*$`).SetBlock(true).Handle(func(ctx *zero.Ctx) { + engine.OnRegex(`^设置🦙API地址\s*(http.*)\s*$`, zero.SuperUserPermission, zero.OnlyPrivate).SetBlock(true).Handle(func(ctx *zero.Ctx) { alpacapiurl = ctx.State["regex_matched"].([]string)[1] err := os.WriteFile(alpacapifile, binary.StringToBytes(alpacapiurl), 0644) if err != nil { @@ -115,7 +116,7 @@ func init() { } ctx.SendChain(message.Text("成功!")) }) - engine.OnRegex(`^设置🦙token\s*([0-9a-f]{112})\s*$`).SetBlock(true).Handle(func(ctx *zero.Ctx) { + engine.OnRegex(`^设置🦙token\s*([0-9a-f]{112})\s*$`, zero.SuperUserPermission, zero.OnlyPrivate).SetBlock(true).Handle(func(ctx *zero.Ctx) { alpacatoken = ctx.State["regex_matched"].([]string)[1] err := os.WriteFile(alpacatokenfile, binary.StringToBytes(alpacatoken), 0644) if err != nil { @@ -181,16 +182,26 @@ func init() { }).SetBlock(false).Handle(func(ctx *zero.Ctx) { msg := ctx.ExtractPlainText() if msg != "" { - data, err := web.GetData(alpacapiurl + "/reply?msg=" + url.QueryEscape(msg)) - if err == nil { - type reply struct { - Msg string - } - m := reply{} - err := json.Unmarshal(data, &m) - if err == nil && len(m.Msg) > 0 { - ctx.Send(message.ReplyWithMessage(ctx.Event.MessageID, message.Text(m.Msg))) - } + data, err := web.RequestDataWithHeaders(http.DefaultClient, alpacapiurl+"/reply?msg="+url.QueryEscape(msg), "GET", + func(r *http.Request) error { + r.Header.Set("Authorization", alpacatoken) + return nil + }, nil) + if err != nil { + logrus.Warnln("[chat] 🦙 err:", err) + return + } + type reply struct { + Msg string + } + m := reply{} + err = json.Unmarshal(data, &m) + if err != nil { + logrus.Warnln("[chat] 🦙 unmarshal err:", err) + return + } + if len(m.Msg) > 0 { + ctx.Send(message.ReplyWithMessage(ctx.Event.MessageID, message.Text(m.Msg))) } } })