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  }