Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Sign in / Register
Toggle navigation
G
go-cqhttp
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Locked Files
Issues
0
Issues
0
List
Boards
Labels
Service Desk
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Security & Compliance
Security & Compliance
Dependency List
License Compliance
Packages
Packages
List
Container Registry
Analytics
Analytics
CI / CD
Code Review
Insights
Issues
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
nanahira
go-cqhttp
Commits
a12dcfa2
Commit
a12dcfa2
authored
Jul 30, 2020
by
Mrs4s
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
add: group_upload event support.
add: simple debug.
parent
86422c5a
Changes
6
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
33 additions
and
3 deletions
+33
-3
coolq/event.go
coolq/event.go
+20
-0
global/config.go
global/config.go
+1
-0
go.mod
go.mod
+1
-1
go.sum
go.sum
+2
-0
main.go
main.go
+4
-0
server/websocket.go
server/websocket.go
+5
-2
No files found.
coolq/event.go
View file @
a12dcfa2
...
@@ -40,6 +40,26 @@ func (bot *CQBot) privateMessageEvent(c *client.QQClient, m *message.PrivateMess
...
@@ -40,6 +40,26 @@ func (bot *CQBot) privateMessageEvent(c *client.QQClient, m *message.PrivateMess
func
(
bot
*
CQBot
)
groupMessageEvent
(
c
*
client
.
QQClient
,
m
*
message
.
GroupMessage
)
{
func
(
bot
*
CQBot
)
groupMessageEvent
(
c
*
client
.
QQClient
,
m
*
message
.
GroupMessage
)
{
checkImage
(
m
.
Elements
)
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
)
cqm
:=
ToStringMessage
(
m
.
Elements
,
m
.
GroupCode
,
true
)
id
:=
m
.
Id
id
:=
m
.
Id
if
bot
.
db
!=
nil
{
if
bot
.
db
!=
nil
{
...
...
global/config.go
View file @
a12dcfa2
...
@@ -16,6 +16,7 @@ type JsonConfig struct {
...
@@ -16,6 +16,7 @@ type JsonConfig struct {
WSConfig
*
GoCQWebsocketConfig
`json:"ws_config"`
WSConfig
*
GoCQWebsocketConfig
`json:"ws_config"`
ReverseServers
[]
*
GoCQReverseWebsocketConfig
`json:"ws_reverse_servers"`
ReverseServers
[]
*
GoCQReverseWebsocketConfig
`json:"ws_reverse_servers"`
Proxy
string
`json:"proxy"`
Proxy
string
`json:"proxy"`
Debug
bool
`json:"debug"`
}
}
type
CQHttpApiConfig
struct
{
type
CQHttpApiConfig
struct
{
...
...
go.mod
View file @
a12dcfa2
...
@@ -3,7 +3,7 @@ module github.com/Mrs4s/go-cqhttp
...
@@ -3,7 +3,7 @@ module github.com/Mrs4s/go-cqhttp
go 1.14
go 1.14
require (
require (
github.com/Mrs4s/MiraiGo v0.0.0-202007
29044443-98a77a6cf354
github.com/Mrs4s/MiraiGo v0.0.0-202007
30004425-ca4383f56abe
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.1
github.com/guonaihong/gout v0.1.1
...
...
go.sum
View file @
a12dcfa2
...
@@ -6,6 +6,8 @@ github.com/Mrs4s/MiraiGo v0.0.0-20200728112613-91aa75e8270d h1:Pv8lvODPBb+By7CU1
...
@@ -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-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 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-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 h1:xm67bEhkKh6ij1790JB83OujPR5CzNe8QuQqAgISZN0=
github.com/bwmarrin/snowflake v0.3.0/go.mod h1:NdZxfVWX+oR6y2K0o6qAYv6gIOP9rjG0/E9WsDpxqwE=
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=
...
...
main.go
View file @
a12dcfa2
...
@@ -85,6 +85,10 @@ func main() {
...
@@ -85,6 +85,10 @@ func main() {
if
conf
.
Uin
==
0
||
conf
.
Password
==
""
{
if
conf
.
Uin
==
0
||
conf
.
Password
==
""
{
log
.
Fatal
(
"请修改 config.json 以添加账号密码."
)
log
.
Fatal
(
"请修改 config.json 以添加账号密码."
)
}
}
if
conf
.
Debug
{
log
.
SetLevel
(
log
.
DebugLevel
)
log
.
Warnf
(
"已开启Debug模式."
)
}
if
!
global
.
PathExists
(
"device.json"
)
{
if
!
global
.
PathExists
(
"device.json"
)
{
log
.
Warn
(
"虚拟设备信息不存在, 将自动生成随机设备,按 Enter 继续."
)
log
.
Warn
(
"虚拟设备信息不存在, 将自动生成随机设备,按 Enter 继续."
)
_
,
_
=
console
.
ReadString
(
'\n'
)
_
,
_
=
console
.
ReadString
(
'\n'
)
...
...
server/websocket.go
View file @
a12dcfa2
...
@@ -164,7 +164,7 @@ func (c *websocketClient) listenApi(conn *wsc.Conn, u bool) {
...
@@ -164,7 +164,7 @@ func (c *websocketClient) listenApi(conn *wsc.Conn, u bool) {
}
}
j
:=
gjson
.
ParseBytes
(
buf
[
:
l
])
j
:=
gjson
.
ParseBytes
(
buf
[
:
l
])
t
:=
strings
.
ReplaceAll
(
j
.
Get
(
"action"
)
.
Str
,
"_async"
,
""
)
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
{
if
f
,
ok
:=
wsApi
[
t
];
ok
{
ret
:=
f
(
c
.
bot
,
j
.
Get
(
"params"
))
ret
:=
f
(
c
.
bot
,
j
.
Get
(
"params"
))
if
j
.
Get
(
"echo"
)
.
Exists
()
{
if
j
.
Get
(
"echo"
)
.
Exists
()
{
...
@@ -187,6 +187,7 @@ func (c *websocketClient) onBotPushEvent(m coolq.MSG) {
...
@@ -187,6 +187,7 @@ func (c *websocketClient) onBotPushEvent(m coolq.MSG) {
c
.
pushLock
.
Lock
()
c
.
pushLock
.
Lock
()
defer
c
.
pushLock
.
Unlock
()
defer
c
.
pushLock
.
Unlock
()
if
c
.
eventConn
!=
nil
{
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
{
if
_
,
err
:=
c
.
eventConn
.
Write
([]
byte
(
m
.
ToJson
()));
err
!=
nil
{
_
=
c
.
eventConn
.
Close
()
_
=
c
.
eventConn
.
Close
()
if
c
.
conf
.
ReverseReconnectInterval
!=
0
{
if
c
.
conf
.
ReverseReconnectInterval
!=
0
{
...
@@ -196,6 +197,7 @@ func (c *websocketClient) onBotPushEvent(m coolq.MSG) {
...
@@ -196,6 +197,7 @@ func (c *websocketClient) onBotPushEvent(m coolq.MSG) {
}
}
}
}
if
c
.
universalConn
!=
nil
{
if
c
.
universalConn
!=
nil
{
log
.
Debugf
(
"向WS服务器 %v 推送Event: %v"
,
c
.
universalConn
.
RemoteAddr
()
.
String
(),
m
.
ToJson
())
_
,
_
=
c
.
universalConn
.
Write
([]
byte
(
m
.
ToJson
()))
_
,
_
=
c
.
universalConn
.
Write
([]
byte
(
m
.
ToJson
()))
}
}
}
}
...
@@ -268,7 +270,7 @@ func (s *websocketServer) listenApi(c *websocket.Conn) {
...
@@ -268,7 +270,7 @@ func (s *websocketServer) listenApi(c *websocket.Conn) {
if
t
==
websocket
.
TextMessage
{
if
t
==
websocket
.
TextMessage
{
j
:=
gjson
.
ParseBytes
(
payload
)
j
:=
gjson
.
ParseBytes
(
payload
)
t
:=
strings
.
ReplaceAll
(
j
.
Get
(
"action"
)
.
Str
,
"_async"
,
""
)
//TODO: async support
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
{
if
f
,
ok
:=
wsApi
[
t
];
ok
{
ret
:=
f
(
s
.
bot
,
j
.
Get
(
"params"
))
ret
:=
f
(
s
.
bot
,
j
.
Get
(
"params"
))
if
j
.
Get
(
"echo"
)
.
Exists
()
{
if
j
.
Get
(
"echo"
)
.
Exists
()
{
...
@@ -285,6 +287,7 @@ func (s *websocketServer) onBotPushEvent(m coolq.MSG) {
...
@@ -285,6 +287,7 @@ func (s *websocketServer) onBotPushEvent(m coolq.MSG) {
defer
s
.
pushLock
.
Unlock
()
defer
s
.
pushLock
.
Unlock
()
pos
:=
0
pos
:=
0
for
_
,
conn
:=
range
s
.
eventConn
{
for
_
,
conn
:=
range
s
.
eventConn
{
log
.
Debugf
(
"向WS客户端 %v 推送Event: %v"
,
conn
.
RemoteAddr
()
.
String
(),
m
.
ToJson
())
err
:=
conn
.
WriteMessage
(
websocket
.
TextMessage
,
[]
byte
(
m
.
ToJson
()))
err
:=
conn
.
WriteMessage
(
websocket
.
TextMessage
,
[]
byte
(
m
.
ToJson
()))
if
err
!=
nil
{
if
err
!=
nil
{
_
=
conn
.
Close
()
_
=
conn
.
Close
()
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment