mirror of
https://github.com/Mrs4s/go-cqhttp.git
synced 2025-05-05 03:23:49 +08:00
object message supported.
This commit is contained in:
parent
d076f174bb
commit
a215028ac0
@ -19,6 +19,7 @@
|
|||||||
- [x] 消息撤回事件
|
- [x] 消息撤回事件
|
||||||
- [x] 解析/发送 回复消息
|
- [x] 解析/发送 回复消息
|
||||||
- [x] 解析 合并转发
|
- [x] 解析 合并转发
|
||||||
|
- [x] 使用代理请求网络图片
|
||||||
|
|
||||||
#### 实现
|
#### 实现
|
||||||
<details>
|
<details>
|
||||||
|
@ -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)
|
||||||
|
@ -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
|
||||||
}
|
}
|
||||||
|
|
||||||
|
7
main.go
7
main.go
@ -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)
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user