// init registers SlackAdapter to the victor chat framework. func init() { chat.Register(AdapterName, func(r chat.Robot) chat.Adapter { config, configSet := r.AdapterConfig() if !configSet { log.Println("A configuration struct implementing the SlackConfig interface must be set.") os.Exit(1) } sConfig, ok := config.(Config) if !ok { log.Println("The bot's config must implement the SlackConfig interface.") os.Exit(1) } return &SlackAdapter{ robot: r, chReceiver: make(chan slack.SlackEvent), token: sConfig.Token(), channelInfo: make(map[string]channelGroupInfo), directMessageID: make(map[string]string), userInfo: make(map[string]slack.User), mutex: &sync.RWMutex{}, botUser: &chat.BaseUser{ UserName: "******", // We don't know our username until the adapter is started UserIsBot: true, }, } }) }
// init Registers the mockAdapter with the victor framework under the chat // adapter name "mockAdapter". func init() { chat.Register("mockAdapter", func(r chat.Robot) chat.Adapter { nextIDMutex.Lock() id := strconv.Itoa(nextID) nextID++ nextIDMutex.Unlock() return &MockChatAdapter{ robot: r, id: id, Sent: make([]MockMessagePair, 0, 10), SentPublic: make([]MockMessagePair, 0, 10), SentDirect: make([]MockMessagePair, 0, 10), IsPotentialUserRet: true, IsPotentialChannelRet: true, UserRet: defaultUserRet, ChannelRet: defaultChannelRet, GeneralChannelRet: defaultChannelRet, AllUsersRet: []chat.User{defaultUserRet}, PublicChannelsRet: []chat.Channel{defaultChannelRet}, NameRet: "Mock Adapter", MaxLengthRet: -1, BotUserRet: &chat.BaseUser{ UserID: id, UserName: r.Name(), UserIsBot: true, }, } }) }
func init() { chat.Register("shell", func(r chat.Robot) chat.Adapter { nextIDMutex.Lock() id := strconv.Itoa(nextID) nextID++ nextIDMutex.Unlock() return &Adapter{ robot: r, stop: make(chan bool), id: id, lines: make(chan string), botUser: &chat.BaseUser{ UserID: id, UserName: r.Name(), UserIsBot: true, }, } }) }