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] 使用代理请求网络图片
#### 实现
<details>

View File

@ -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)

View File

@ -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
}

View File

@ -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)
}