github.com/Mrs4s/go-cqhttp@v1.2.0/modules/servers/servers.go (about) 1 // Package servers provide servers register 2 package servers 3 4 import ( 5 "gopkg.in/yaml.v3" 6 7 "github.com/Mrs4s/go-cqhttp/coolq" 8 "github.com/Mrs4s/go-cqhttp/internal/base" 9 ) 10 11 var ( 12 svr = make(map[string]func(*coolq.CQBot, yaml.Node)) 13 nocfgsvr = make(map[string]func(*coolq.CQBot)) 14 ) 15 16 // Register 注册 Server 17 func Register(name string, proc func(*coolq.CQBot, yaml.Node)) { 18 _, ok := svr[name] 19 if ok { 20 panic(name + " server has existed") 21 } 22 svr[name] = proc 23 } 24 25 // RegisterCustom 注册无需 config 的自定义 Server 26 func RegisterCustom(name string, proc func(*coolq.CQBot)) { 27 _, ok := nocfgsvr[name] 28 if ok { 29 panic(name + " server has existed") 30 } 31 nocfgsvr[name] = proc 32 } 33 34 // Run 运行所有svr 35 func Run(bot *coolq.CQBot) { 36 for _, l := range base.Servers { 37 for name, conf := range l { 38 if fn, ok := svr[name]; ok { 39 go fn(bot, conf) 40 } 41 } 42 } 43 for _, fn := range nocfgsvr { 44 go fn(bot) 45 } 46 base.Servers = nil 47 }