@@ -19,7 +19,8 @@ import (
1919)
2020
2121var (
22- WsServers = make (map [string ]* WsServer ) // TODO 线程安全?改用sync.map
22+ // RemoteServers key是botId,value是map(key是serverName,value是server)
23+ RemoteServers = make (map [int64 ]map [string ]* WsServer ) // TODO 线程安全?改用sync.map
2324)
2425
2526type WsServer struct {
@@ -30,6 +31,8 @@ type WsServer struct {
3031}
3132
3233func ConnectUniversal (cli * client.QQClient ) {
34+ botServers := map [string ]* WsServer {}
35+ RemoteServers [cli .Uin ] = botServers
3336 for _ , group := range config .Conf .ServerGroups {
3437 if group .Disabled || group .Urls == nil || len (group .Urls ) < 1 {
3538 continue
@@ -64,7 +67,7 @@ func ConnectUniversal(cli *client.QQClient) {
6467 }()
6568 closeChan <- 1
6669 })
67- WsServers [serverGroup .Name ] = & WsServer {
70+ botServers [serverGroup .Name ] = & WsServer {
6871 SafeWebSocket : safeWs ,
6972 ServerGroup : & serverGroup ,
7073 wsUrl : serverUrl ,
@@ -74,7 +77,7 @@ func ConnectUniversal(cli *client.QQClient) {
7477 if regex , err := regexp .Compile (serverGroup .RegexFilter ); err != nil {
7578 log .Errorf ("failed to compile [%s], regex_filter: %s" , serverGroup .Name , serverGroup .RegexFilter )
7679 } else {
77- WsServers [serverGroup .Name ].regexp = regex
80+ botServers [serverGroup .Name ].regexp = regex
7881 }
7982 }
8083 util .SafeGo (func () {
@@ -87,7 +90,7 @@ func ConnectUniversal(cli *client.QQClient) {
8790 })
8891 <- closeChan
8992 close (closeChan )
90- delete (WsServers , serverGroup .Name )
93+ delete (botServers , serverGroup .Name )
9194 log .Warnf ("Websocket 服务器 [%s](%s) 已断开,5秒后重连" , serverGroup .Name , serverUrl )
9295 time .Sleep (5 * time .Second )
9396 }
@@ -264,8 +267,7 @@ func HandleEventFrame(cli *client.QQClient, eventFrame *onebot.Frame) {
264267 return
265268 }
266269
267- for _ , ws := range WsServers {
268-
270+ for _ , ws := range RemoteServers [cli .Uin ] {
269271 if ws .EventFilter != nil && len (ws .EventFilter ) > 0 { // 有event filter
270272 if ! int32SliceContains (ws .EventFilter , int32 (eventFrame .FrameType )) {
271273 log .Debugf ("EventFilter 跳过 [%s](%s)" , ws .Name , ws .wsUrl )
0 commit comments