1
0
mirror of https://github.com/Mrs4s/go-cqhttp.git synced 2025-06-19 22:15:04 +08:00

fix(config): only read config once

This commit is contained in:
wdvxdr 2021-04-08 22:30:17 +08:00
parent a0cb34dc7a
commit 6dfa5e5959
No known key found for this signature in database
GPG Key ID: 55FF1414A69CEBA6
3 changed files with 12 additions and 11 deletions

View File

@ -28,7 +28,6 @@ import (
"github.com/tidwall/gjson" "github.com/tidwall/gjson"
"github.com/Mrs4s/go-cqhttp/global" "github.com/Mrs4s/go-cqhttp/global"
"github.com/Mrs4s/go-cqhttp/global/config"
) )
/* /*
@ -37,7 +36,11 @@ var typeReg = regexp.MustCompile(`\[CQ:(\w+)`)
var paramReg = regexp.MustCompile(`,([\w\-.]+?)=([^,\]]+)`) var paramReg = regexp.MustCompile(`,([\w\-.]+?)=([^,\]]+)`)
*/ */
var conf *config.Config // RemoveReplyAt 是否删除reply后的at
var RemoveReplyAt bool
// ExtraReplyData 是否上报额外reply信息
var ExtraReplyData bool
// IgnoreInvalidCQCode 是否忽略无效CQ码 // IgnoreInvalidCQCode 是否忽略无效CQ码
var IgnoreInvalidCQCode = false var IgnoreInvalidCQCode = false
@ -49,7 +52,6 @@ var SplitURL = false
var magicCQ = uint32(0) var magicCQ = uint32(0)
func init() { func init() {
conf = config.Get()
CQHeader := "[CQ:" CQHeader := "[CQ:"
magicCQ = *(*uint32)(unsafe.Pointer((*reflect.StringHeader)(unsafe.Pointer(&CQHeader)).Data)) magicCQ = *(*uint32)(unsafe.Pointer((*reflect.StringHeader)(unsafe.Pointer(&CQHeader)).Data))
} }
@ -139,7 +141,7 @@ func ToArrayMessage(e []message.IMessageElement, id int64, isRaw ...bool) (r []M
}) })
if reply != nil { if reply != nil {
replyElem := reply.(*message.ReplyElement) replyElem := reply.(*message.ReplyElement)
if conf.Message.ExtraReplyData { if ExtraReplyData {
r = append(r, MSG{ r = append(r, MSG{
"type": "reply", "type": "reply",
"data": map[string]string{ "data": map[string]string{
@ -161,7 +163,7 @@ func ToArrayMessage(e []message.IMessageElement, id int64, isRaw ...bool) (r []M
var m MSG var m MSG
switch o := elem.(type) { switch o := elem.(type) {
case *message.ReplyElement: case *message.ReplyElement:
if conf.Message.RemoveReplyAt && len(e) > i+1 { if RemoveReplyAt && len(e) > i+1 {
elem, ok := e[i+1].(*message.AtElement) elem, ok := e[i+1].(*message.AtElement)
if ok && elem.Target == o.Sender { if ok && elem.Target == o.Sender {
e[i+1] = nil e[i+1] = nil
@ -314,7 +316,7 @@ func ToStringMessage(e []message.IMessageElement, id int64, isRaw ...bool) (r st
}) })
if reply != nil { if reply != nil {
replyElem := reply.(*message.ReplyElement) replyElem := reply.(*message.ReplyElement)
if conf.Message.ExtraReplyData { if ExtraReplyData {
r += fmt.Sprintf("[CQ:reply,id=%d,seq=%d,qq=%d,time=%d,text=%s]", r += fmt.Sprintf("[CQ:reply,id=%d,seq=%d,qq=%d,time=%d,text=%s]",
toGlobalID(id, replyElem.ReplySeq), toGlobalID(id, replyElem.ReplySeq),
replyElem.ReplySeq, replyElem.Sender, replyElem.Time, replyElem.ReplySeq, replyElem.Sender, replyElem.Time,
@ -326,7 +328,7 @@ func ToStringMessage(e []message.IMessageElement, id int64, isRaw ...bool) (r st
for i, elem := range e { for i, elem := range e {
switch o := elem.(type) { switch o := elem.(type) {
case *message.ReplyElement: case *message.ReplyElement:
if conf.Message.RemoveReplyAt && len(e) > i+1 { if RemoveReplyAt && len(e) > i+1 {
elem, ok := e[i+1].(*message.AtElement) elem, ok := e[i+1].(*message.AtElement)
if ok && elem.Target == o.Sender { if ok && elem.Target == o.Sender {
e[i+1] = nil e[i+1] = nil

View File

@ -3,12 +3,9 @@ package coolq
import ( import (
"fmt" "fmt"
"testing" "testing"
"github.com/Mrs4s/MiraiGo/client"
"github.com/Mrs4s/go-cqhttp/global"
) )
var bot = NewQQBot(client.NewClient(1, ""), global.DefaultConfig()) var bot = CQBot{}
func TestCQBot_ConvertStringMessage(t *testing.T) { func TestCQBot_ConvertStringMessage(t *testing.T) {
for _, v := range bot.ConvertStringMessage(`[CQ:face,id=115,text=111][CQ:face,id=217]] [CQ:text,text=123] [`, false) { for _, v := range bot.ConvertStringMessage(`[CQ:face,id=115,text=111][CQ:face,id=217]] [CQ:text,text=123] [`, false) {

View File

@ -380,6 +380,8 @@ func main() {
coolq.IgnoreInvalidCQCode = conf.Message.IgnoreInvalidCQCode coolq.IgnoreInvalidCQCode = conf.Message.IgnoreInvalidCQCode
coolq.SplitURL = conf.Message.FixURL coolq.SplitURL = conf.Message.FixURL
coolq.ForceFragmented = conf.Message.ForceFragment coolq.ForceFragmented = conf.Message.ForceFragment
coolq.RemoveReplyAt = conf.Message.RemoveReplyAt
coolq.ExtraReplyData = conf.Message.ExtraReplyData
for _, m := range conf.Servers { for _, m := range conf.Servers {
if h, ok := m["http"]; ok { if h, ok := m["http"]; ok {
hc := new(config.HTTPServer) hc := new(config.HTTPServer)