// NewBot initializes a number of things for proper operation. It will set appropriate flags // for rlog and then creates a Nimbus config to pass to the internal nimbus IRC client. This // client is embedded into an instance of Bot and returned. It has its fields initialized. func NewBot(version string, rconf *Config) *Bot { rlog.SetFlags(rlog.Linfo | rlog.Lwarn | rlog.Lerror | rlog.Ldebug) rlog.SetLogFlags(0) nconf := GetNimbusConfig(rconf) bot := &Bot{ /* Client */ nimbus.NewClient(rconf.Server.Host, rconf.Server.Port, rconf.User.Nick, *nconf), /* Version */ version, /* Modules */ make(map[string]*Module), /* Channels */ make(map[string]*Channel), /* ToJoinChs */ make(map[string]string), /* Parser */ parser.NewParser(rconf.Command.Prefix), /* Handler */ NewHandler(), /* Inlim */ rate.NewLimiter(3/5, 3), /* Outlim */ rate.NewLimiter(rate.Every(time.Millisecond*750), 1), /* Config */ rconf, /* ListenPort */ "0", /* Quit Chan */ make(chan string), /* Mutex */ sync.Mutex{}, } return bot }
func NewCLIBot(conf *rbot.Config) *rbot.Bot { rlog.SetFlags(rlog.Linfo | rlog.Lwarn | rlog.Lerror | rlog.Ldebug) rlog.SetLogFlags(0) cli := &CliClient{ MsgMode, conf.Command.Prefix + ":", make(map[string][]nimbus.Listener), conf, make(chan error), } bot := rbot.NewBot("CLI", conf) bot.Client = cli // Oh what? I can do this? return bot }