From 49e3995129f6adb04445c31951ba07c3cca2b9aa Mon Sep 17 00:00:00 2001 From: Mrs4s Date: Sat, 5 Sep 2020 08:02:31 +0800 Subject: [PATCH 1/5] move reply pos. close #220 --- coolq/cqcode.go | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/coolq/cqcode.go b/coolq/cqcode.go index 0183c30..323d8ba 100644 --- a/coolq/cqcode.go +++ b/coolq/cqcode.go @@ -32,6 +32,17 @@ func ToArrayMessage(e []message.IMessageElement, code int64, raw ...bool) (r []M if len(raw) != 0 { ur = raw[0] } + m := &message.SendingMessage{Elements: e} + reply := m.FirstOrNil(func(e message.IMessageElement) bool { + _, ok := e.(*message.ReplyElement) + return ok + }) + if reply != nil { + r = append(r, MSG{ + "type": "reply", + "data": map[string]string{"id": fmt.Sprint(ToGlobalId(code, o.ReplySeq))}, + }) + } for _, elem := range e { m := MSG{} switch o := elem.(type) { @@ -52,11 +63,6 @@ func ToArrayMessage(e []message.IMessageElement, code int64, raw ...bool) (r []M "data": map[string]string{"qq": fmt.Sprint(o.Target)}, } } - case *message.ReplyElement: - m = MSG{ - "type": "reply", - "data": map[string]string{"id": fmt.Sprint(ToGlobalId(code, o.ReplySeq))}, - } case *message.ForwardElement: m = MSG{ "type": "forward", From 42434956d963ce6a29fb496283abe582521e5fa7 Mon Sep 17 00:00:00 2001 From: Mrs4s Date: Sat, 5 Sep 2020 08:06:52 +0800 Subject: [PATCH 2/5] fix light app. --- coolq/cqcode.go | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/coolq/cqcode.go b/coolq/cqcode.go index 323d8ba..939309d 100644 --- a/coolq/cqcode.go +++ b/coolq/cqcode.go @@ -51,6 +51,11 @@ func ToArrayMessage(e []message.IMessageElement, code int64, raw ...bool) (r []M "type": "text", "data": map[string]string{"text": o.Content}, } + case *message.LightAppElement: + m = MSG{ + "type": "text", + "data": map[string]string{"text": o.Content}, + } case *message.AtElement: if o.Target == 0 { m = MSG{ @@ -161,6 +166,8 @@ func ToStringMessage(e []message.IMessageElement, code int64, raw ...bool) (r st } else { r += fmt.Sprintf(`[CQ:image,file=%s,url=%s]`, o.Filename, CQCodeEscapeValue(o.Url)) } + case *message.LightAppElement: + r += CQCodeEscapeText(o.Content) } } return From a991add799feb44ca8f7b4a04f2064ba767b780a Mon Sep 17 00:00:00 2001 From: Mrs4s Date: Sat, 5 Sep 2020 08:09:07 +0800 Subject: [PATCH 3/5] update default heartbeat value. close #232 --- coolq/bot.go | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/coolq/bot.go b/coolq/bot.go index 6d34bda..12a96e8 100644 --- a/coolq/bot.go +++ b/coolq/bot.go @@ -71,10 +71,13 @@ func NewQQBot(cli *client.QQClient, conf *global.JsonConfig) *CQBot { bot.Client.OnUserWantJoinGroup(bot.groupJoinReqEvent) go func() { i := conf.HeartbeatInterval - if i < 1 { + if i < 0 { log.Warn("警告: 心跳功能已关闭,若非预期,请检查配置文件。") return } + if i == 0 { + i = 5 + } for { time.Sleep(time.Second * i) bot.dispatchEventMessage(MSG{ From a9001d5c9e9b366a60da8711643f0568d8506b38 Mon Sep 17 00:00:00 2001 From: Mrs4s Date: Sat, 5 Sep 2020 08:10:45 +0800 Subject: [PATCH 4/5] fix ci. --- coolq/cqcode.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/coolq/cqcode.go b/coolq/cqcode.go index 939309d..0b86843 100644 --- a/coolq/cqcode.go +++ b/coolq/cqcode.go @@ -40,7 +40,7 @@ func ToArrayMessage(e []message.IMessageElement, code int64, raw ...bool) (r []M if reply != nil { r = append(r, MSG{ "type": "reply", - "data": map[string]string{"id": fmt.Sprint(ToGlobalId(code, o.ReplySeq))}, + "data": map[string]string{"id": fmt.Sprint(ToGlobalId(code, reply.(*message.ReplyElement).ReplySeq))}, }) } for _, elem := range e { From 6565a19aaa9e8111aca5f209432281215d840755 Mon Sep 17 00:00:00 2001 From: Mrs4s Date: Sat, 5 Sep 2020 08:16:50 +0800 Subject: [PATCH 5/5] fix #238. --- coolq/api.go | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/coolq/api.go b/coolq/api.go index 7f02ac6..d20bf6c 100644 --- a/coolq/api.go +++ b/coolq/api.go @@ -198,11 +198,24 @@ func (bot *CQBot) CQSendGroupForwardMessage(groupId int64, m gjson.Result) MSG { name := e.Get("data.name").Str content := bot.ConvertObjectMessage(e.Get("data.content"), true) if uin != 0 && name != "" && len(content) > 0 { + var newElem []message.IMessageElement + for _, elem := range content { + if img, ok := elem.(*message.ImageElement); ok { + gm, err := bot.Client.UploadGroupImage(groupId, img.Data) + if err != nil { + log.Warnf("警告:群 %v 图片上传失败: %v", groupId, err) + continue + } + newElem = append(newElem, gm) + continue + } + newElem = append(newElem, elem) + } nodes = append(nodes, &message.ForwardNode{ SenderId: uin, SenderName: name, Time: int32(ts.Unix()), - Message: content, + Message: newElem, }) return }