From a215028ac049abcdfd7be1473d2bbfe8664ba584 Mon Sep 17 00:00:00 2001 From: Mrs4s <1844812067@qq.com> Date: Tue, 28 Jul 2020 22:37:20 +0800 Subject: [PATCH] object message supported. --- README.md | 1 + coolq/api.go | 8 ++++---- coolq/cqcode.go | 18 +++++++++++++----- main.go | 7 ++----- 4 files changed, 20 insertions(+), 14 deletions(-) diff --git a/README.md b/README.md index dba5ac1..55e847d 100644 --- a/README.md +++ b/README.md @@ -19,6 +19,7 @@ - [x] 消息撤回事件 - [x] 解析/发送 回复消息 - [x] 解析 合并转发 +- [x] 使用代理请求网络图片 #### 实现
diff --git a/coolq/api.go b/coolq/api.go index bd9282d..681c864 100644 --- a/coolq/api.go +++ b/coolq/api.go @@ -108,8 +108,8 @@ func (bot *CQBot) CQSendGroupMessage(groupId int64, m gjson.Result) MSG { } return OK(MSG{"message_id": mid}) } - if m.IsArray() { - elem := bot.ConvertArrayMessage(m, true) + if m.Type == gjson.JSON { + elem := bot.ConvertObjectMessage(m, true) mid := bot.SendGroupMessage(groupId, &message.SendingMessage{Elements: elem}) if mid == -1 { return Failed(100) @@ -130,8 +130,8 @@ func (bot *CQBot) CQSendPrivateMessage(userId int64, m gjson.Result) MSG { } return OK(MSG{"message_id": mid}) } - if m.IsArray() { - elem := bot.ConvertArrayMessage(m, true) + if m.Type == gjson.JSON { + elem := bot.ConvertObjectMessage(m, true) mid := bot.SendPrivateMessage(userId, &message.SendingMessage{Elements: elem}) if mid == -1 { return Failed(100) diff --git a/coolq/cqcode.go b/coolq/cqcode.go index 90cd315..19174e9 100644 --- a/coolq/cqcode.go +++ b/coolq/cqcode.go @@ -104,14 +104,14 @@ func (bot *CQBot) ConvertStringMessage(m string, group bool) (r []message.IMessa return } -func (bot *CQBot) ConvertArrayMessage(m gjson.Result, group bool) (r []message.IMessageElement) { - for _, e := range m.Array() { +func (bot *CQBot) ConvertObjectMessage(m gjson.Result, group bool) (r []message.IMessageElement) { + convertElem := func(e gjson.Result) { t := e.Get("type").Str if t == "reply" && group { if len(r) > 0 { if _, ok := r[0].(*message.ReplyElement); ok { log.Warnf("警告: 一条信息只能包含一个 Reply 元素.") - continue + return } } mid, err := strconv.Atoi(e.Get("data").Get("id").Str) @@ -126,7 +126,7 @@ func (bot *CQBot) ConvertArrayMessage(m gjson.Result, group bool) (r []message.I Elements: bot.ConvertStringMessage(org["message"].(string), group), }, }, r...) - continue + return } } } @@ -138,10 +138,18 @@ func (bot *CQBot) ConvertArrayMessage(m gjson.Result, group bool) (r []message.I elem, err := bot.ToElement(t, d, group) if err != nil { log.Warnf("转换CQ码到MiraiGo Element时出现错误: %v 将忽略本段CQ码.", err) - continue + return } r = append(r, elem) } + if m.IsArray() { + for _, e := range m.Array() { + convertElem(e) + } + } + if m.IsObject() { + convertElem(m) + } return } diff --git a/main.go b/main.go index 78d8acf..8d68c76 100644 --- a/main.go +++ b/main.go @@ -115,11 +115,8 @@ func main() { rsp, err = cli.SubmitCaptcha(strings.ReplaceAll(text, "\n", ""), rsp.CaptchaSign) continue case client.UnsafeDeviceError: - log.Warnf("账号已开启设备锁,请前往 -> %v <- 验证.", rsp.VerifyUrl) - log.Info("按 Enter 继续") - _, _ = console.ReadString('\n') - rsp, err = cli.Login() - continue + log.Warnf("账号已开启设备锁,请前往 -> %v <- 验证并重启Bot.", rsp.VerifyUrl) + return case client.OtherLoginError, client.UnknownLoginError: log.Fatalf("登录失败: %v", rsp.ErrorMessage) }