// Run executes the bot and connects to Telegram using the provided token. Use the debug flag if you wish to see all trafic logged func Run(token string, debug bool) { var err error tg, err = tgbotapi.NewBotAPI(token) if err != nil { log.Fatal(err) } tg.Debug = debug log.Printf("Authorized on account %s", tg.Self.UserName) u := tgbotapi.NewUpdate(0) u.Timeout = 60 updates, err := tg.GetUpdatesChan(u) if err != nil { log.Fatal(err) } b := bot.New(&bot.Handlers{ Response: responseHandler, }) b.Disable([]string{"url"}) for update := range updates { target := strconv.FormatInt(update.Message.Chat.ID, 10) sender := strconv.Itoa(update.Message.From.ID) b.MessageReceived(target, update.Message.Text, &bot.User{Nick: sender}) } }
// Run connects to slack RTM API using the provided token func Run(token string) { api = slack.New(token) rtm = api.NewRTM() b := bot.New(&bot.Handlers{ Response: responseHandler, }) b.Disable([]string{"url"}) go rtm.ManageConnection() Loop: for { select { case msg := <-rtm.IncomingEvents: switch ev := msg.Data.(type) { case *slack.MessageEvent: b.MessageReceived(ev.Channel, ev.Text, extractUser(ev.User)) case *slack.RTMError: fmt.Printf("Error: %s\n", ev.Error()) case *slack.InvalidAuthEvent: fmt.Printf("Invalid credentials") break Loop } } } }
// Run reads the Config, connect to the specified IRC server and starts the bot. // The bot will automatically join all the channels specified in the configuration func Run(c *Config) { config = c ircConn = ircevent.IRC(c.User, c.Nick) ircConn.Password = c.Password ircConn.UseTLS = c.UseTLS ircConn.TLSConfig = &tls.Config{ ServerName: getServerName(c.Server), } ircConn.VerboseCallbackHandler = c.Debug b = bot.New(&bot.Handlers{ Response: responseHandler, }) ircConn.AddCallback("001", onWelcome) ircConn.AddCallback("PRIVMSG", onPRIVMSG) err := ircConn.Connect(c.Server) if err != nil { log.Fatal(err) } ircConn.Loop() }