diff --git a/coolq/event.go b/coolq/event.go index dc46a16..1eaf838 100644 --- a/coolq/event.go +++ b/coolq/event.go @@ -40,6 +40,26 @@ func (bot *CQBot) privateMessageEvent(c *client.QQClient, m *message.PrivateMess func (bot *CQBot) groupMessageEvent(c *client.QQClient, m *message.GroupMessage) { checkImage(m.Elements) + for _, elem := range m.Elements { + if file, ok := elem.(*message.GroupFileElement); ok { + log.Infof("群 %v(%v) 内 %v(%v) 上传了文件: %v", m.GroupName, m.GroupCode, m.Sender.DisplayName(), m.Sender.Uin, file.Name) + bot.dispatchEventMessage(MSG{ + "post_type": "notice", + "notice_type": "group_upload", + "group_id": m.GroupCode, + "user_id": m.Sender.Uin, + "file": MSG{ + "id": file.Path, + "name": file.Name, + "size": file.Size, + "busid": file.Busid, + }, + "self_id": c.Uin, + "time": time.Now().Unix(), + }) + return + } + } cqm := ToStringMessage(m.Elements, m.GroupCode, true) id := m.Id if bot.db != nil { diff --git a/global/config.go b/global/config.go index 852d2e5..db16345 100644 --- a/global/config.go +++ b/global/config.go @@ -16,6 +16,7 @@ type JsonConfig struct { WSConfig *GoCQWebsocketConfig `json:"ws_config"` ReverseServers []*GoCQReverseWebsocketConfig `json:"ws_reverse_servers"` Proxy string `json:"proxy"` + Debug bool `json:"debug"` } type CQHttpApiConfig struct { diff --git a/go.mod b/go.mod index e7d69de..405945f 100644 --- a/go.mod +++ b/go.mod @@ -3,7 +3,7 @@ module github.com/Mrs4s/go-cqhttp go 1.14 require ( - github.com/Mrs4s/MiraiGo v0.0.0-20200729044443-98a77a6cf354 + github.com/Mrs4s/MiraiGo v0.0.0-20200730004425-ca4383f56abe github.com/gin-gonic/gin v1.6.3 github.com/gorilla/websocket v1.4.2 github.com/guonaihong/gout v0.1.1 diff --git a/go.sum b/go.sum index 694dca8..3f00f01 100644 --- a/go.sum +++ b/go.sum @@ -6,6 +6,8 @@ github.com/Mrs4s/MiraiGo v0.0.0-20200728112613-91aa75e8270d h1:Pv8lvODPBb+By7CU1 github.com/Mrs4s/MiraiGo v0.0.0-20200728112613-91aa75e8270d/go.mod h1:M9wh1hjd0rie3+wm27tjPZkYMbD+MBV76CGqp2G7WSU= github.com/Mrs4s/MiraiGo v0.0.0-20200729044443-98a77a6cf354 h1:f2Cv15Nir9tcefrvwD0+imVx1RQAw2TQI7LFipPUzrI= github.com/Mrs4s/MiraiGo v0.0.0-20200729044443-98a77a6cf354/go.mod h1:M9wh1hjd0rie3+wm27tjPZkYMbD+MBV76CGqp2G7WSU= +github.com/Mrs4s/MiraiGo v0.0.0-20200730004425-ca4383f56abe h1:6R4osGgsPzDt2TcRAcy/dk2lAcv4iDgMYBfEvrSxTtU= +github.com/Mrs4s/MiraiGo v0.0.0-20200730004425-ca4383f56abe/go.mod h1:M9wh1hjd0rie3+wm27tjPZkYMbD+MBV76CGqp2G7WSU= 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= diff --git a/main.go b/main.go index 8d68c76..adc2357 100644 --- a/main.go +++ b/main.go @@ -85,6 +85,10 @@ func main() { if conf.Uin == 0 || conf.Password == "" { log.Fatal("请修改 config.json 以添加账号密码.") } + if conf.Debug { + log.SetLevel(log.DebugLevel) + log.Warnf("已开启Debug模式.") + } if !global.PathExists("device.json") { log.Warn("虚拟设备信息不存在, 将自动生成随机设备,按 Enter 继续.") _, _ = console.ReadString('\n') diff --git a/server/websocket.go b/server/websocket.go index 13874ea..1f236f2 100644 --- a/server/websocket.go +++ b/server/websocket.go @@ -164,7 +164,7 @@ func (c *websocketClient) listenApi(conn *wsc.Conn, u bool) { } j := gjson.ParseBytes(buf[:l]) t := strings.ReplaceAll(j.Get("action").Str, "_async", "") - //log.Infof("调用API: %v p: %v", t, j.Get("params").Raw) + log.Debugf("反向WS接收到API调用: %v 参数: %v", t, j.Get("params").Raw) if f, ok := wsApi[t]; ok { ret := f(c.bot, j.Get("params")) if j.Get("echo").Exists() { @@ -187,6 +187,7 @@ func (c *websocketClient) onBotPushEvent(m coolq.MSG) { c.pushLock.Lock() defer c.pushLock.Unlock() if c.eventConn != nil { + log.Debugf("向WS服务器 %v 推送Event: %v", c.eventConn.RemoteAddr().String(), m.ToJson()) if _, err := c.eventConn.Write([]byte(m.ToJson())); err != nil { _ = c.eventConn.Close() if c.conf.ReverseReconnectInterval != 0 { @@ -196,6 +197,7 @@ func (c *websocketClient) onBotPushEvent(m coolq.MSG) { } } if c.universalConn != nil { + log.Debugf("向WS服务器 %v 推送Event: %v", c.universalConn.RemoteAddr().String(), m.ToJson()) _, _ = c.universalConn.Write([]byte(m.ToJson())) } } @@ -268,7 +270,7 @@ func (s *websocketServer) listenApi(c *websocket.Conn) { if t == websocket.TextMessage { j := gjson.ParseBytes(payload) t := strings.ReplaceAll(j.Get("action").Str, "_async", "") //TODO: async support - //log.Infof("API调用: %v", j.Get("action").Str) + log.Debugf("WS接收到API调用: %v 参数: %v", t, j.Get("params").Raw) if f, ok := wsApi[t]; ok { ret := f(s.bot, j.Get("params")) if j.Get("echo").Exists() { @@ -285,6 +287,7 @@ func (s *websocketServer) onBotPushEvent(m coolq.MSG) { defer s.pushLock.Unlock() pos := 0 for _, conn := range s.eventConn { + log.Debugf("向WS客户端 %v 推送Event: %v", conn.RemoteAddr().String(), m.ToJson()) err := conn.WriteMessage(websocket.TextMessage, []byte(m.ToJson())) if err != nil { _ = conn.Close()