1
0
mirror of https://github.com/Mrs4s/go-cqhttp.git synced 2025-05-04 19:17:37 +08:00

object message supported.

This commit is contained in:
Mrs4s 2020-07-28 22:37:20 +08:00
parent d076f174bb
commit a215028ac0
4 changed files with 20 additions and 14 deletions

View File

@ -19,6 +19,7 @@
- [x] 消息撤回事件 - [x] 消息撤回事件
- [x] 解析/发送 回复消息 - [x] 解析/发送 回复消息
- [x] 解析 合并转发 - [x] 解析 合并转发
- [x] 使用代理请求网络图片
#### 实现 #### 实现
<details> <details>

View File

@ -108,8 +108,8 @@ func (bot *CQBot) CQSendGroupMessage(groupId int64, m gjson.Result) MSG {
} }
return OK(MSG{"message_id": mid}) return OK(MSG{"message_id": mid})
} }
if m.IsArray() { if m.Type == gjson.JSON {
elem := bot.ConvertArrayMessage(m, true) elem := bot.ConvertObjectMessage(m, true)
mid := bot.SendGroupMessage(groupId, &message.SendingMessage{Elements: elem}) mid := bot.SendGroupMessage(groupId, &message.SendingMessage{Elements: elem})
if mid == -1 { if mid == -1 {
return Failed(100) return Failed(100)
@ -130,8 +130,8 @@ func (bot *CQBot) CQSendPrivateMessage(userId int64, m gjson.Result) MSG {
} }
return OK(MSG{"message_id": mid}) return OK(MSG{"message_id": mid})
} }
if m.IsArray() { if m.Type == gjson.JSON {
elem := bot.ConvertArrayMessage(m, true) elem := bot.ConvertObjectMessage(m, true)
mid := bot.SendPrivateMessage(userId, &message.SendingMessage{Elements: elem}) mid := bot.SendPrivateMessage(userId, &message.SendingMessage{Elements: elem})
if mid == -1 { if mid == -1 {
return Failed(100) return Failed(100)

View File

@ -104,14 +104,14 @@ func (bot *CQBot) ConvertStringMessage(m string, group bool) (r []message.IMessa
return return
} }
func (bot *CQBot) ConvertArrayMessage(m gjson.Result, group bool) (r []message.IMessageElement) { func (bot *CQBot) ConvertObjectMessage(m gjson.Result, group bool) (r []message.IMessageElement) {
for _, e := range m.Array() { convertElem := func(e gjson.Result) {
t := e.Get("type").Str t := e.Get("type").Str
if t == "reply" && group { if t == "reply" && group {
if len(r) > 0 { if len(r) > 0 {
if _, ok := r[0].(*message.ReplyElement); ok { if _, ok := r[0].(*message.ReplyElement); ok {
log.Warnf("警告: 一条信息只能包含一个 Reply 元素.") log.Warnf("警告: 一条信息只能包含一个 Reply 元素.")
continue return
} }
} }
mid, err := strconv.Atoi(e.Get("data").Get("id").Str) 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), Elements: bot.ConvertStringMessage(org["message"].(string), group),
}, },
}, r...) }, 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) elem, err := bot.ToElement(t, d, group)
if err != nil { if err != nil {
log.Warnf("转换CQ码到MiraiGo Element时出现错误: %v 将忽略本段CQ码.", err) log.Warnf("转换CQ码到MiraiGo Element时出现错误: %v 将忽略本段CQ码.", err)
continue return
} }
r = append(r, elem) r = append(r, elem)
} }
if m.IsArray() {
for _, e := range m.Array() {
convertElem(e)
}
}
if m.IsObject() {
convertElem(m)
}
return return
} }

View File

@ -115,11 +115,8 @@ func main() {
rsp, err = cli.SubmitCaptcha(strings.ReplaceAll(text, "\n", ""), rsp.CaptchaSign) rsp, err = cli.SubmitCaptcha(strings.ReplaceAll(text, "\n", ""), rsp.CaptchaSign)
continue continue
case client.UnsafeDeviceError: case client.UnsafeDeviceError:
log.Warnf("账号已开启设备锁,请前往 -> %v <- 验证.", rsp.VerifyUrl) log.Warnf("账号已开启设备锁,请前往 -> %v <- 验证并重启Bot.", rsp.VerifyUrl)
log.Info("按 Enter 继续") return
_, _ = console.ReadString('\n')
rsp, err = cli.Login()
continue
case client.OtherLoginError, client.UnknownLoginError: case client.OtherLoginError, client.UnknownLoginError:
log.Fatalf("登录失败: %v", rsp.ErrorMessage) log.Fatalf("登录失败: %v", rsp.ErrorMessage)
} }