mirror of
https://github.com/Mrs4s/go-cqhttp.git
synced 2025-06-30 11:53:25 +00:00
Compare commits
24 Commits
v0.9.29
...
v0.9.29-fi
Author | SHA1 | Date | |
---|---|---|---|
08b55473aa | |||
66d76aa1f1 | |||
151e44628c | |||
d32f427328 | |||
e911123a30 | |||
cc72332455 | |||
84b4889def | |||
6ad0d68978 | |||
1b63a15bbe | |||
ce0a5b0271 | |||
f96abc5e26 | |||
2cdb341db4 | |||
c2fd0f1bb2 | |||
8ab874ca2b | |||
8e61060ef0 | |||
508117d30b | |||
1c965ab9ac | |||
9db1dcc76a | |||
fffed72d44 | |||
dd5fdb0735 | |||
c35f46e033 | |||
98b9be575e | |||
b99986d112 | |||
2302cf6263 |
63
coolq/api.go
63
coolq/api.go
@ -384,29 +384,43 @@ func (bot *CQBot) CQProcessFriendRequest(flag string, approve bool) MSG {
|
|||||||
|
|
||||||
// https://cqhttp.cc/docs/4.15/#/API?id=set_group_add_request-%E5%A4%84%E7%90%86%E5%8A%A0%E7%BE%A4%E8%AF%B7%E6%B1%82%EF%BC%8F%E9%82%80%E8%AF%B7
|
// https://cqhttp.cc/docs/4.15/#/API?id=set_group_add_request-%E5%A4%84%E7%90%86%E5%8A%A0%E7%BE%A4%E8%AF%B7%E6%B1%82%EF%BC%8F%E9%82%80%E8%AF%B7
|
||||||
func (bot *CQBot) CQProcessGroupRequest(flag, subType, reason string, approve bool) MSG {
|
func (bot *CQBot) CQProcessGroupRequest(flag, subType, reason string, approve bool) MSG {
|
||||||
|
msgs, err := bot.Client.GetGroupSystemMessages()
|
||||||
|
if err != nil {
|
||||||
|
log.Errorf("获取群系统消息失败: %v", err)
|
||||||
|
return Failed(100)
|
||||||
|
}
|
||||||
if subType == "add" {
|
if subType == "add" {
|
||||||
req, ok := bot.joinReqCache.Load(flag)
|
for _, req := range msgs.JoinRequests {
|
||||||
if !ok {
|
if strconv.FormatInt(req.RequestId, 10) == flag {
|
||||||
return Failed(100)
|
if req.Checked {
|
||||||
|
log.Errorf("处理群系统消息失败: 无法操作已处理的消息.")
|
||||||
|
return Failed(100)
|
||||||
|
}
|
||||||
|
if approve {
|
||||||
|
req.Accept()
|
||||||
|
} else {
|
||||||
|
req.Reject(false, reason)
|
||||||
|
}
|
||||||
|
return OK(nil)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
bot.joinReqCache.Delete(flag)
|
} else {
|
||||||
if approve {
|
for _, req := range msgs.InvitedRequests {
|
||||||
req.(*client.UserJoinGroupRequest).Accept()
|
if strconv.FormatInt(req.RequestId, 10) == flag {
|
||||||
} else {
|
if req.Checked {
|
||||||
req.(*client.UserJoinGroupRequest).Reject(false, reason)
|
log.Errorf("处理群系统消息失败: 无法操作已处理的消息.")
|
||||||
|
return Failed(100)
|
||||||
|
}
|
||||||
|
if approve {
|
||||||
|
req.Accept()
|
||||||
|
} else {
|
||||||
|
req.Reject(false, reason)
|
||||||
|
}
|
||||||
|
return OK(nil)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return OK(nil)
|
|
||||||
}
|
|
||||||
req, ok := bot.invitedReqCache.Load(flag)
|
|
||||||
if ok {
|
|
||||||
bot.invitedReqCache.Delete(flag)
|
|
||||||
if approve {
|
|
||||||
req.(*client.GroupInvitedRequest).Accept()
|
|
||||||
} else {
|
|
||||||
req.(*client.GroupInvitedRequest).Reject(false, reason)
|
|
||||||
}
|
|
||||||
return OK(nil)
|
|
||||||
}
|
}
|
||||||
|
log.Errorf("处理群系统消息失败: 消息 %v 不存在.", flag)
|
||||||
return Failed(100)
|
return Failed(100)
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -662,10 +676,19 @@ func (bot *CQBot) CQGetMessage(messageId int32) MSG {
|
|||||||
"nickname": sender.Nickname,
|
"nickname": sender.Nickname,
|
||||||
},
|
},
|
||||||
"time": msg["time"],
|
"time": msg["time"],
|
||||||
"content": msg["message"],
|
"message": msg["message"],
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (bot *CQBot) CQGetGroupSystemMessages() MSG {
|
||||||
|
msg, err := bot.Client.GetGroupSystemMessages()
|
||||||
|
if err != nil {
|
||||||
|
log.Warnf("获取群系统消息失败: %v", err)
|
||||||
|
return Failed(100)
|
||||||
|
}
|
||||||
|
return OK(msg)
|
||||||
|
}
|
||||||
|
|
||||||
func (bot *CQBot) CQCanSendImage() MSG {
|
func (bot *CQBot) CQCanSendImage() MSG {
|
||||||
return OK(MSG{"yes": true})
|
return OK(MSG{"yes": true})
|
||||||
}
|
}
|
||||||
|
50
coolq/bot.go
50
coolq/bot.go
@ -23,13 +23,11 @@ import (
|
|||||||
type CQBot struct {
|
type CQBot struct {
|
||||||
Client *client.QQClient
|
Client *client.QQClient
|
||||||
|
|
||||||
events []func(MSG)
|
events []func(MSG)
|
||||||
db *leveldb.DB
|
db *leveldb.DB
|
||||||
friendReqCache sync.Map
|
friendReqCache sync.Map
|
||||||
invitedReqCache sync.Map
|
tempMsgCache sync.Map
|
||||||
joinReqCache sync.Map
|
oneWayMsgCache sync.Map
|
||||||
tempMsgCache sync.Map
|
|
||||||
oneWayMsgCache sync.Map
|
|
||||||
}
|
}
|
||||||
|
|
||||||
type MSG map[string]interface{}
|
type MSG map[string]interface{}
|
||||||
@ -190,8 +188,31 @@ func (bot *CQBot) SendGroupMessage(groupId int64, m *message.SendingMessage) int
|
|||||||
}
|
}
|
||||||
return bot.InsertGroupMessage(ret)
|
return bot.InsertGroupMessage(ret)
|
||||||
}
|
}
|
||||||
|
if i, ok := elem.(*MiguMusicElement); ok {
|
||||||
|
ret, err := bot.Client.SendGroupRichMessage(groupId, 1101053067, 1, 4, client.RichClientInfo{
|
||||||
|
Platform: 1,
|
||||||
|
SdkVersion: "0.0.0",
|
||||||
|
PackageName: "cmccwm.mobilemusic",
|
||||||
|
Signature: "6cdc72a439cef99a3418d2a78aa28c73",
|
||||||
|
}, &message.RichMessage{
|
||||||
|
Title: i.Title,
|
||||||
|
Summary: i.Summary,
|
||||||
|
Url: i.Url,
|
||||||
|
PictureUrl: i.PictureUrl,
|
||||||
|
MusicUrl: i.MusicUrl,
|
||||||
|
})
|
||||||
|
if err != nil {
|
||||||
|
log.Warnf("警告: 群 %v 富文本消息发送失败: %v", groupId, err)
|
||||||
|
return -1
|
||||||
|
}
|
||||||
|
return bot.InsertGroupMessage(ret)
|
||||||
|
}
|
||||||
newElem = append(newElem, elem)
|
newElem = append(newElem, elem)
|
||||||
}
|
}
|
||||||
|
if len(newElem) == 0 {
|
||||||
|
log.Warnf("群消息发送失败: 消息为空.")
|
||||||
|
return -1
|
||||||
|
}
|
||||||
m.Elements = newElem
|
m.Elements = newElem
|
||||||
ret := bot.Client.SendGroupMessage(groupId, m, ForceFragmented)
|
ret := bot.Client.SendGroupMessage(groupId, m, ForceFragmented)
|
||||||
if ret == nil || ret.Id == -1 {
|
if ret == nil || ret.Id == -1 {
|
||||||
@ -256,6 +277,21 @@ func (bot *CQBot) SendPrivateMessage(target int64, m *message.SendingMessage) in
|
|||||||
})
|
})
|
||||||
return 0
|
return 0
|
||||||
}
|
}
|
||||||
|
if i, ok := elem.(*MiguMusicElement); ok {
|
||||||
|
bot.Client.SendFriendRichMessage(target, 1101053067, 1, 4, client.RichClientInfo{
|
||||||
|
Platform: 1,
|
||||||
|
SdkVersion: "0.0.0",
|
||||||
|
PackageName: "cmccwm.mobilemusic",
|
||||||
|
Signature: "6cdc72a439cef99a3418d2a78aa28c73",
|
||||||
|
}, &message.RichMessage{
|
||||||
|
Title: i.Title,
|
||||||
|
Summary: i.Summary,
|
||||||
|
Url: i.Url,
|
||||||
|
PictureUrl: i.PictureUrl,
|
||||||
|
MusicUrl: i.MusicUrl,
|
||||||
|
})
|
||||||
|
return 0
|
||||||
|
}
|
||||||
newElem = append(newElem, elem)
|
newElem = append(newElem, elem)
|
||||||
}
|
}
|
||||||
m.Elements = newElem
|
m.Elements = newElem
|
||||||
|
@ -51,6 +51,10 @@ type CloudMusicElement struct {
|
|||||||
MusicElement
|
MusicElement
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type MiguMusicElement struct {
|
||||||
|
MusicElement
|
||||||
|
}
|
||||||
|
|
||||||
func (e *GiftElement) Type() message.ElementType {
|
func (e *GiftElement) Type() message.ElementType {
|
||||||
return message.At
|
return message.At
|
||||||
}
|
}
|
||||||
@ -320,7 +324,7 @@ func (bot *CQBot) ConvertObjectMessage(m gjson.Result, group bool) (r []message.
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
mid, err := strconv.Atoi(e.Get("data").Get("id").Str)
|
mid, err := strconv.Atoi(e.Get("data").Get("id").String())
|
||||||
if err == nil {
|
if err == nil {
|
||||||
org := bot.GetMessage(int32(mid))
|
org := bot.GetMessage(int32(mid))
|
||||||
if org != nil {
|
if org != nil {
|
||||||
@ -338,7 +342,7 @@ func (bot *CQBot) ConvertObjectMessage(m gjson.Result, group bool) (r []message.
|
|||||||
}
|
}
|
||||||
d := make(map[string]string)
|
d := make(map[string]string)
|
||||||
e.Get("data").ForEach(func(key, value gjson.Result) bool {
|
e.Get("data").ForEach(func(key, value gjson.Result) bool {
|
||||||
d[key.Str] = value.Str
|
d[key.Str] = value.String()
|
||||||
return true
|
return true
|
||||||
})
|
})
|
||||||
elem, err := bot.ToElement(t, d, group)
|
elem, err := bot.ToElement(t, d, group)
|
||||||
@ -536,6 +540,15 @@ func (bot *CQBot) ToElement(t string, d map[string]string, group bool) (m messag
|
|||||||
MusicUrl: d["purl"],
|
MusicUrl: d["purl"],
|
||||||
}}, nil
|
}}, nil
|
||||||
}
|
}
|
||||||
|
if d["subtype"] == "migu" {
|
||||||
|
return &MiguMusicElement{MusicElement{
|
||||||
|
Title: d["title"],
|
||||||
|
Summary: d["content"],
|
||||||
|
Url: d["url"],
|
||||||
|
PictureUrl: d["image"],
|
||||||
|
MusicUrl: d["purl"],
|
||||||
|
}}, nil
|
||||||
|
}
|
||||||
xml := fmt.Sprintf(`<?xml version='1.0' encoding='UTF-8' standalone='yes' ?><msg serviceID="2" templateID="1" action="web" brief="[分享] %s" sourceMsgId="0" url="%s" flag="0" adverSign="0" multiMsgFlag="0"><item layout="2"><audio cover="%s" src="%s"/><title>%s</title><summary>%s</summary></item><source name="音乐" icon="https://i.gtimg.cn/open/app_icon/01/07/98/56/1101079856_100_m.png" url="http://web.p.qq.com/qqmpmobile/aio/app.html?id=1101079856" action="app" a_actionData="com.tencent.qqmusic" i_actionData="tencent1101079856://" appid="1101079856" /></msg>`,
|
xml := fmt.Sprintf(`<?xml version='1.0' encoding='UTF-8' standalone='yes' ?><msg serviceID="2" templateID="1" action="web" brief="[分享] %s" sourceMsgId="0" url="%s" flag="0" adverSign="0" multiMsgFlag="0"><item layout="2"><audio cover="%s" src="%s"/><title>%s</title><summary>%s</summary></item><source name="音乐" icon="https://i.gtimg.cn/open/app_icon/01/07/98/56/1101079856_100_m.png" url="http://web.p.qq.com/qqmpmobile/aio/app.html?id=1101079856" action="app" a_actionData="com.tencent.qqmusic" i_actionData="tencent1101079856://" appid="1101079856" /></msg>`,
|
||||||
d["title"], d["url"], d["image"], d["audio"], d["title"], d["content"])
|
d["title"], d["url"], d["image"], d["audio"], d["title"], d["content"])
|
||||||
return &message.ServiceElement{
|
return &message.ServiceElement{
|
||||||
|
@ -271,12 +271,16 @@ func (bot *CQBot) groupNotifyEvent(c *client.QQClient, e client.IGroupNotifyEven
|
|||||||
func (bot *CQBot) friendRecallEvent(c *client.QQClient, e *client.FriendMessageRecalledEvent) {
|
func (bot *CQBot) friendRecallEvent(c *client.QQClient, e *client.FriendMessageRecalledEvent) {
|
||||||
f := c.FindFriend(e.FriendUin)
|
f := c.FindFriend(e.FriendUin)
|
||||||
gid := ToGlobalId(e.FriendUin, e.MessageId)
|
gid := ToGlobalId(e.FriendUin, e.MessageId)
|
||||||
log.Infof("好友 %v(%v) 撤回了消息: %v", f.Nickname, f.Uin, gid)
|
if f != nil {
|
||||||
|
log.Infof("好友 %v(%v) 撤回了消息: %v", f.Nickname, f.Uin, gid)
|
||||||
|
} else {
|
||||||
|
log.Infof("好友 %v 撤回了消息: %v", e.FriendUin, gid)
|
||||||
|
}
|
||||||
bot.dispatchEventMessage(MSG{
|
bot.dispatchEventMessage(MSG{
|
||||||
"post_type": "notice",
|
"post_type": "notice",
|
||||||
"notice_type": "friend_recall",
|
"notice_type": "friend_recall",
|
||||||
"self_id": c.Uin,
|
"self_id": c.Uin,
|
||||||
"user_id": f.Uin,
|
"user_id": e.FriendUin,
|
||||||
"time": e.Time,
|
"time": e.Time,
|
||||||
"message_id": gid,
|
"message_id": gid,
|
||||||
})
|
})
|
||||||
@ -392,7 +396,6 @@ func (bot *CQBot) friendAddedEvent(c *client.QQClient, e *client.NewFriendEvent)
|
|||||||
func (bot *CQBot) groupInvitedEvent(c *client.QQClient, e *client.GroupInvitedRequest) {
|
func (bot *CQBot) groupInvitedEvent(c *client.QQClient, e *client.GroupInvitedRequest) {
|
||||||
log.Infof("收到来自群 %v(%v) 内用户 %v(%v) 的加群邀请.", e.GroupName, e.GroupCode, e.InvitorNick, e.InvitorUin)
|
log.Infof("收到来自群 %v(%v) 内用户 %v(%v) 的加群邀请.", e.GroupName, e.GroupCode, e.InvitorNick, e.InvitorUin)
|
||||||
flag := strconv.FormatInt(e.RequestId, 10)
|
flag := strconv.FormatInt(e.RequestId, 10)
|
||||||
bot.invitedReqCache.Store(flag, e)
|
|
||||||
bot.dispatchEventMessage(MSG{
|
bot.dispatchEventMessage(MSG{
|
||||||
"post_type": "request",
|
"post_type": "request",
|
||||||
"request_type": "group",
|
"request_type": "group",
|
||||||
@ -409,7 +412,6 @@ func (bot *CQBot) groupInvitedEvent(c *client.QQClient, e *client.GroupInvitedRe
|
|||||||
func (bot *CQBot) groupJoinReqEvent(c *client.QQClient, e *client.UserJoinGroupRequest) {
|
func (bot *CQBot) groupJoinReqEvent(c *client.QQClient, e *client.UserJoinGroupRequest) {
|
||||||
log.Infof("群 %v(%v) 收到来自用户 %v(%v) 的加群请求.", e.GroupName, e.GroupCode, e.RequesterNick, e.RequesterUin)
|
log.Infof("群 %v(%v) 收到来自用户 %v(%v) 的加群请求.", e.GroupName, e.GroupCode, e.RequesterNick, e.RequesterUin)
|
||||||
flag := strconv.FormatInt(e.RequestId, 10)
|
flag := strconv.FormatInt(e.RequestId, 10)
|
||||||
bot.joinReqCache.Store(flag, e)
|
|
||||||
bot.dispatchEventMessage(MSG{
|
bot.dispatchEventMessage(MSG{
|
||||||
"post_type": "request",
|
"post_type": "request",
|
||||||
"request_type": "group",
|
"request_type": "group",
|
||||||
|
@ -380,9 +380,9 @@ Type: `tts`
|
|||||||
| `filename` | string | 图片文件原名 |
|
| `filename` | string | 图片文件原名 |
|
||||||
| `url` | string | 图片下载地址 |
|
| `url` | string | 图片下载地址 |
|
||||||
|
|
||||||
### 获取群消息
|
### 获取消息
|
||||||
|
|
||||||
终结点: `/get_group_msg`
|
终结点: `/get_msg`
|
||||||
|
|
||||||
参数
|
参数
|
||||||
|
|
||||||
@ -398,7 +398,7 @@ Type: `tts`
|
|||||||
| `real_id` | int32 | 消息真实id |
|
| `real_id` | int32 | 消息真实id |
|
||||||
| `sender` | object | 发送者 |
|
| `sender` | object | 发送者 |
|
||||||
| `time` | int32 | 发送时间 |
|
| `time` | int32 | 发送时间 |
|
||||||
| `content` | message | 消息内容 |
|
| `message` | message | 消息内容 |
|
||||||
|
|
||||||
### 获取合并转发内容
|
### 获取合并转发内容
|
||||||
|
|
||||||
@ -472,6 +472,74 @@ Type: `tts`
|
|||||||
| ---------- | ----------------- | -------- |
|
| ---------- | ----------------- | -------- |
|
||||||
| `slices` | string[] | 词组 |
|
| `slices` | string[] | 词组 |
|
||||||
|
|
||||||
|
### 图片OCR
|
||||||
|
|
||||||
|
> 注意: 目前图片OCR接口仅支持接受的图片
|
||||||
|
|
||||||
|
终结点: `/.ocr_image`
|
||||||
|
|
||||||
|
**参数**
|
||||||
|
|
||||||
|
| 字段 | 类型 | 说明 |
|
||||||
|
| ------------ | ------ | ------ |
|
||||||
|
| `image` | string | 图片ID |
|
||||||
|
|
||||||
|
**响应数据**
|
||||||
|
|
||||||
|
| 字段 | 类型 | 说明 |
|
||||||
|
| ---------- | ----------------- | -------- |
|
||||||
|
| `texts` | TextDetection[] | OCR结果 |
|
||||||
|
| `language` | string | 语言 |
|
||||||
|
|
||||||
|
**TextDetection**
|
||||||
|
|
||||||
|
| 字段 | 类型 | 说明 |
|
||||||
|
| ---------- | ----------------- | -------- |
|
||||||
|
| `text` | string | 文本 |
|
||||||
|
| `confidence`| int32 | 置信度 |
|
||||||
|
| `coordinates` | vector2 | 坐标 |
|
||||||
|
|
||||||
|
|
||||||
|
### 获取群系统消息
|
||||||
|
|
||||||
|
终结点: `/get_group_system_msg`
|
||||||
|
|
||||||
|
**响应数据**
|
||||||
|
|
||||||
|
| 字段 | 类型 | 说明 |
|
||||||
|
| ---------- | ----------------- | -------- |
|
||||||
|
| `invited_requests` | InvitedRequest[] | 邀请消息列表 |
|
||||||
|
| `join_requests` | JoinRequest[] | 进群消息列表 |
|
||||||
|
|
||||||
|
> 注意: 如果列表不存在任何消息, 将返回 `null`
|
||||||
|
|
||||||
|
**InvitedRequest**
|
||||||
|
|
||||||
|
| 字段 | 类型 | 说明 |
|
||||||
|
| ---------- | ----------------- | -------- |
|
||||||
|
| `request_id` | int64 | 请求ID |
|
||||||
|
| `invitor_uin` | int64 | 邀请者 |
|
||||||
|
| `invitor_nick` | string | 邀请者昵称 |
|
||||||
|
| `group_id` | int64 | 群号 |
|
||||||
|
| `group_name` | string | 群名 |
|
||||||
|
| `checked` | bool | 是否已被处理|
|
||||||
|
| `actor` | int64 | 处理者, 未处理为0 |
|
||||||
|
|
||||||
|
**JoinRequest**
|
||||||
|
|
||||||
|
| 字段 | 类型 | 说明 |
|
||||||
|
| ---------- | ----------------- | -------- |
|
||||||
|
| `request_id` | int64 | 请求ID |
|
||||||
|
| `requester_uin` | int64 | 请求者ID |
|
||||||
|
| `requester_nick` | string | 请求者昵称 |
|
||||||
|
| `message` | string | 验证消息 |
|
||||||
|
| `group_id` | int64 | 群号 |
|
||||||
|
| `group_name` | string | 群名 |
|
||||||
|
| `checked` | bool | 是否已被处理|
|
||||||
|
| `actor` | int64 | 处理者, 未处理为0 |
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
## 事件
|
## 事件
|
||||||
|
|
||||||
#### 群消息撤回
|
#### 群消息撤回
|
||||||
|
@ -8,15 +8,20 @@ import (
|
|||||||
"io/ioutil"
|
"io/ioutil"
|
||||||
"net/http"
|
"net/http"
|
||||||
"strings"
|
"strings"
|
||||||
|
"time"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
var client = &http.Client{
|
||||||
|
Timeout: time.Second * 15,
|
||||||
|
}
|
||||||
|
|
||||||
func GetBytes(url string) ([]byte, error) {
|
func GetBytes(url string) ([]byte, error) {
|
||||||
req, err := http.NewRequest("GET", url, nil)
|
req, err := http.NewRequest("GET", url, nil)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
req.Header["User-Agent"] = []string{"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.116 Safari/537.36 Edg/83.0.478.61"}
|
req.Header["User-Agent"] = []string{"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.116 Safari/537.36 Edg/83.0.478.61"}
|
||||||
resp, err := http.DefaultClient.Do(req)
|
resp, err := client.Do(req)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
4
go.mod
4
go.mod
@ -3,10 +3,10 @@ module github.com/Mrs4s/go-cqhttp
|
|||||||
go 1.14
|
go 1.14
|
||||||
|
|
||||||
require (
|
require (
|
||||||
github.com/Mrs4s/MiraiGo v0.0.0-20201017083749-517ddcd50b8d
|
github.com/Mrs4s/MiraiGo v0.0.0-20201027102621-5fa25a7f7434
|
||||||
github.com/gin-gonic/gin v1.6.3
|
github.com/gin-gonic/gin v1.6.3
|
||||||
github.com/gorilla/websocket v1.4.2
|
github.com/gorilla/websocket v1.4.2
|
||||||
github.com/guonaihong/gout v0.1.2
|
github.com/guonaihong/gout v0.1.3
|
||||||
github.com/lestrrat-go/file-rotatelogs v2.4.0+incompatible
|
github.com/lestrrat-go/file-rotatelogs v2.4.0+incompatible
|
||||||
github.com/lestrrat-go/strftime v1.0.3 // indirect
|
github.com/lestrrat-go/strftime v1.0.3 // indirect
|
||||||
github.com/pkg/errors v0.9.1 // indirect
|
github.com/pkg/errors v0.9.1 // indirect
|
||||||
|
24
go.sum
24
go.sum
@ -1,13 +1,9 @@
|
|||||||
cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw=
|
cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw=
|
||||||
github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU=
|
github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU=
|
||||||
github.com/Mrs4s/MiraiGo v0.0.0-20201013050256-7b392cacdb79 h1:t9PK37mnl5tbilG+FMUY1hZujoDjFr8iO8upwYHww5c=
|
github.com/Mrs4s/MiraiGo v0.0.0-20201025234014-8ece3a9dd803 h1:tRXLslHbNt4bd2wV+MIU2sqQME6UJfMYolYufhSRdg0=
|
||||||
github.com/Mrs4s/MiraiGo v0.0.0-20201013050256-7b392cacdb79/go.mod h1:cwYPI2uq6nxNbx0nA6YuAKF1V5szSs6FPlGVLQvRUlo=
|
github.com/Mrs4s/MiraiGo v0.0.0-20201025234014-8ece3a9dd803/go.mod h1:cwYPI2uq6nxNbx0nA6YuAKF1V5szSs6FPlGVLQvRUlo=
|
||||||
github.com/Mrs4s/MiraiGo v0.0.0-20201016033322-0922b058ff56 h1:vcXOLG+W/c56EWOwA8btrHMEGBMwFgLUZli0Jh1axzg=
|
github.com/Mrs4s/MiraiGo v0.0.0-20201027102621-5fa25a7f7434 h1:wb5EoWBj/ulZ30fBQA2KJ0IwVXcesu9aynCFdpRwS8M=
|
||||||
github.com/Mrs4s/MiraiGo v0.0.0-20201016033322-0922b058ff56/go.mod h1:cwYPI2uq6nxNbx0nA6YuAKF1V5szSs6FPlGVLQvRUlo=
|
github.com/Mrs4s/MiraiGo v0.0.0-20201027102621-5fa25a7f7434/go.mod h1:cwYPI2uq6nxNbx0nA6YuAKF1V5szSs6FPlGVLQvRUlo=
|
||||||
github.com/Mrs4s/MiraiGo v0.0.0-20201017083749-517ddcd50b8d h1:f59SuqT0RVy6T9nAg6zTNfnzkvdgLdGqkNKu/AfiPU4=
|
|
||||||
github.com/Mrs4s/MiraiGo v0.0.0-20201017083749-517ddcd50b8d/go.mod h1:cwYPI2uq6nxNbx0nA6YuAKF1V5szSs6FPlGVLQvRUlo=
|
|
||||||
github.com/bwmarrin/snowflake v0.3.0 h1:xm67bEhkKh6ij1790JB83OujPR5CzNe8QuQqAgISZN0=
|
|
||||||
github.com/bwmarrin/snowflake v0.3.0/go.mod h1:NdZxfVWX+oR6y2K0o6qAYv6gIOP9rjG0/E9WsDpxqwE=
|
|
||||||
github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU=
|
github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU=
|
||||||
github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw=
|
github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw=
|
||||||
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
|
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
|
||||||
@ -53,8 +49,8 @@ github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/
|
|||||||
github.com/google/uuid v1.1.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
|
github.com/google/uuid v1.1.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
|
||||||
github.com/gorilla/websocket v1.4.2 h1:+/TMaTYc4QFitKJxsQ7Yye35DkWvkdLcvGKqM+x0Ufc=
|
github.com/gorilla/websocket v1.4.2 h1:+/TMaTYc4QFitKJxsQ7Yye35DkWvkdLcvGKqM+x0Ufc=
|
||||||
github.com/gorilla/websocket v1.4.2/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE=
|
github.com/gorilla/websocket v1.4.2/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE=
|
||||||
github.com/guonaihong/gout v0.1.2 h1:TR2XCRopGgJdj231IayEoeavgbznFXzzzcZVdT/hG10=
|
github.com/guonaihong/gout v0.1.3 h1:BIiV6nnsA+R6dIB1P33uhCM8+TVAG3zHrXGZad7hDc8=
|
||||||
github.com/guonaihong/gout v0.1.2/go.mod h1:vXvv5Kxr70eM5wrp4F0+t9lnLWmq+YPW2GByll2f/EA=
|
github.com/guonaihong/gout v0.1.3/go.mod h1:vXvv5Kxr70eM5wrp4F0+t9lnLWmq+YPW2GByll2f/EA=
|
||||||
github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU=
|
github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU=
|
||||||
github.com/json-iterator/go v1.1.7/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4=
|
github.com/json-iterator/go v1.1.7/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4=
|
||||||
github.com/json-iterator/go v1.1.9/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4=
|
github.com/json-iterator/go v1.1.9/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4=
|
||||||
@ -108,13 +104,6 @@ github.com/ugorji/go/codec v1.1.7 h1:2SvQaVZ1ouYrrKKwoSk2pzd4A9evlKJb9oTL+OaLUSs
|
|||||||
github.com/ugorji/go/codec v1.1.7/go.mod h1:Ax+UKWsSmolVDwsd+7N3ZtXu+yMGCf907BLYF3GoBXY=
|
github.com/ugorji/go/codec v1.1.7/go.mod h1:Ax+UKWsSmolVDwsd+7N3ZtXu+yMGCf907BLYF3GoBXY=
|
||||||
github.com/wdvxdr1123/go-silk v0.0.0-20201007123416-b982fd3d91d6 h1:lX18MCdNzT2zIi7K02x4C5cPkDXpL+wCb1YTAMXjLWQ=
|
github.com/wdvxdr1123/go-silk v0.0.0-20201007123416-b982fd3d91d6 h1:lX18MCdNzT2zIi7K02x4C5cPkDXpL+wCb1YTAMXjLWQ=
|
||||||
github.com/wdvxdr1123/go-silk v0.0.0-20201007123416-b982fd3d91d6/go.mod h1:5q9LFlBr+yX/J8Jd/9wHdXwkkjFkNyQIS7kX2Lgx/Zs=
|
github.com/wdvxdr1123/go-silk v0.0.0-20201007123416-b982fd3d91d6/go.mod h1:5q9LFlBr+yX/J8Jd/9wHdXwkkjFkNyQIS7kX2Lgx/Zs=
|
||||||
github.com/xujiajun/gorouter v1.2.0/go.mod h1:yJrIta+bTNpBM/2UT8hLOaEAFckO+m/qmR3luMIQygM=
|
|
||||||
github.com/xujiajun/mmap-go v1.0.1 h1:7Se7ss1fLPPRW+ePgqGpCkfGIZzJV6JPq9Wq9iv/WHc=
|
|
||||||
github.com/xujiajun/mmap-go v1.0.1/go.mod h1:CNN6Sw4SL69Sui00p0zEzcZKbt+5HtEnYUsc6BKKRMg=
|
|
||||||
github.com/xujiajun/nutsdb v0.5.0 h1:j/jM3Zw7Chg8WK7bAcKR0Xr7Mal47U1oJAMgySfDn9E=
|
|
||||||
github.com/xujiajun/nutsdb v0.5.0/go.mod h1:owdwN0tW084RxEodABLbO7h4Z2s9WiAjZGZFhRh0/1Q=
|
|
||||||
github.com/xujiajun/utils v0.0.0-20190123093513-8bf096c4f53b h1:jKG9OiL4T4xQN3IUrhUpc1tG+HfDXppkgVcrAiiaI/0=
|
|
||||||
github.com/xujiajun/utils v0.0.0-20190123093513-8bf096c4f53b/go.mod h1:AZd87GYJlUzl82Yab2kTjx1EyXSQCAfZDhpTo1SQC4k=
|
|
||||||
github.com/yinghau76/go-ascii-art v0.0.0-20190517192627-e7f465a30189 h1:4UJw9if55Fu3HOwbfcaQlJ27p3oeJU2JZqoeT3ITJQk=
|
github.com/yinghau76/go-ascii-art v0.0.0-20190517192627-e7f465a30189 h1:4UJw9if55Fu3HOwbfcaQlJ27p3oeJU2JZqoeT3ITJQk=
|
||||||
github.com/yinghau76/go-ascii-art v0.0.0-20190517192627-e7f465a30189/go.mod h1:rIrm5geMiBhPQkdfUm8gDFi/WiHneOp1i9KjmJqc+9I=
|
github.com/yinghau76/go-ascii-art v0.0.0-20190517192627-e7f465a30189/go.mod h1:rIrm5geMiBhPQkdfUm8gDFi/WiHneOp1i9KjmJqc+9I=
|
||||||
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
|
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
|
||||||
@ -135,7 +124,6 @@ golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJ
|
|||||||
golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||||
golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
|
golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
|
||||||
golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
|
golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
|
||||||
golang.org/x/sys v0.0.0-20181221143128-b4a75ba826a6/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
|
|
||||||
golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
|
golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
|
||||||
golang.org/x/sys v0.0.0-20190422165155-953cdadca894/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
golang.org/x/sys v0.0.0-20190422165155-953cdadca894/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||||
golang.org/x/sys v0.0.0-20190813064441-fde4db37ae7a/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
golang.org/x/sys v0.0.0-20190813064441-fde4db37ae7a/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||||
|
@ -137,6 +137,7 @@ func (c *httpClient) onBotPushEvent(m coolq.MSG) {
|
|||||||
log.Warnf("上报Event数据 %v 到 %v 失败: %v", m.ToJson(), c.addr, err)
|
log.Warnf("上报Event数据 %v 到 %v 失败: %v", m.ToJson(), c.addr, err)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
log.Debugf("上报Event数据 %v 到 %v", m.ToJson(), c.addr)
|
||||||
if gjson.Valid(res) {
|
if gjson.Valid(res) {
|
||||||
c.bot.CQHandleQuickOperation(gjson.Parse(m.ToJson()), gjson.Parse(res))
|
c.bot.CQHandleQuickOperation(gjson.Parse(m.ToJson()), gjson.Parse(res))
|
||||||
}
|
}
|
||||||
@ -317,6 +318,10 @@ func (s *httpServer) GetForwardMessage(c *gin.Context) {
|
|||||||
c.JSON(200, s.bot.CQGetForwardMessage(resId))
|
c.JSON(200, s.bot.CQGetForwardMessage(resId))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (s *httpServer) GetGroupSystemMessage(c *gin.Context) {
|
||||||
|
c.JSON(200, s.bot.CQGetGroupSystemMessages())
|
||||||
|
}
|
||||||
|
|
||||||
func (s *httpServer) DeleteMessage(c *gin.Context) {
|
func (s *httpServer) DeleteMessage(c *gin.Context) {
|
||||||
mid, _ := strconv.ParseInt(getParam(c, "message_id"), 10, 32)
|
mid, _ := strconv.ParseInt(getParam(c, "message_id"), 10, 32)
|
||||||
c.JSON(200, s.bot.CQDeleteMessage(int32(mid)))
|
c.JSON(200, s.bot.CQDeleteMessage(int32(mid)))
|
||||||
@ -504,6 +509,9 @@ var httpApi = map[string]func(s *httpServer, c *gin.Context){
|
|||||||
"get_msg": func(s *httpServer, c *gin.Context) {
|
"get_msg": func(s *httpServer, c *gin.Context) {
|
||||||
s.GetMessage(c)
|
s.GetMessage(c)
|
||||||
},
|
},
|
||||||
|
"get_group_system_msg": func(s *httpServer, c *gin.Context) {
|
||||||
|
s.GetGroupSystemMessage(c)
|
||||||
|
},
|
||||||
"get_group_honor_info": func(s *httpServer, c *gin.Context) {
|
"get_group_honor_info": func(s *httpServer, c *gin.Context) {
|
||||||
s.GetGroupHonorInfo(c)
|
s.GetGroupHonorInfo(c)
|
||||||
},
|
},
|
||||||
|
@ -495,6 +495,9 @@ var wsApi = map[string]func(*coolq.CQBot, gjson.Result) coolq.MSG{
|
|||||||
"get_version_info": func(bot *coolq.CQBot, p gjson.Result) coolq.MSG {
|
"get_version_info": func(bot *coolq.CQBot, p gjson.Result) coolq.MSG {
|
||||||
return bot.CQGetVersionInfo()
|
return bot.CQGetVersionInfo()
|
||||||
},
|
},
|
||||||
|
"get_group_system_msg": func(bot *coolq.CQBot, p gjson.Result) coolq.MSG {
|
||||||
|
return bot.CQGetGroupSystemMessages()
|
||||||
|
},
|
||||||
"_get_vip_info": func(bot *coolq.CQBot, p gjson.Result) coolq.MSG {
|
"_get_vip_info": func(bot *coolq.CQBot, p gjson.Result) coolq.MSG {
|
||||||
return bot.CQGetVipInfo(p.Get("user_id").Int())
|
return bot.CQGetVipInfo(p.Get("user_id").Int())
|
||||||
},
|
},
|
||||||
|
Reference in New Issue
Block a user