func main() { api := slack.New("YOUR_TOKEN_HERE") user, err := api.GetUserInfo("U023BECGF") if err != nil { fmt.Printf("%s\n", err) return } fmt.Printf("ID: %s, Fullname: %s, Email: %s\n", user.ID, user.Profile.RealName, user.Profile.Email) }
func main() { api := slack.New("YOUR TOKEN HERE") api.SetDebug(true) rtm := api.NewRTM() go rtm.ManageConnection() Loop: for { select { case msg := <-rtm.IncomingEvents: fmt.Print("Event Received: ") switch ev := msg.Data.(type) { case *slack.HelloEvent: // Ignore hello case *slack.ConnectedEvent: fmt.Println("Infos:", ev.Info) fmt.Println("Connection counter:", ev.ConnectionCount) // Replace #general with your Channel ID rtm.SendMessage(rtm.NewOutgoingMessage("Hello world", "#general")) case *slack.MessageEvent: fmt.Printf("Message: %v\n", ev) case *slack.PresenceChangeEvent: fmt.Printf("Presence Change: %v\n", ev) case *slack.LatencyReport: fmt.Printf("Current latency: %v\n", ev.Value) case *slack.RTMError: fmt.Printf("Error: %s\n", ev.Error()) case *slack.InvalidAuthEvent: fmt.Printf("Invalid credentials") break Loop default: // Ignore other events.. // fmt.Printf("Unexpected: %v\n", msg.Data) } } } }
func main() { api := slack.New("YOUR_TOKEN_HERE") params := slack.FileUploadParameters{ Title: "Batman Example", //Filetype: "txt", File: "example.txt", //Content: "Nan Nan Nan Nan Nan Nan Nan Nan Batman", } file, err := api.UploadFile(params) if err != nil { fmt.Printf("%s\n", err) return } fmt.Printf("Name: %s, URL: %s\n", file.Name, file.URL) err = api.DeleteFile(file.ID) if err != nil { fmt.Printf("%s\n", err) return } fmt.Printf("File %s deleted successfully.\n", file.Name) }
func main() { if err := envconfig.Init(&conf); err != nil { log.Fatal(err) } api = slack.New(conf.Token) rtm = api.NewRTM() go rtm.ManageConnection() for { select { case msg := <-rtm.IncomingEvents: switch ev := msg.Data.(type) { case *slack.StarAddedEvent: notify(newStar(ev.User, true, ev.Item)) case *slack.StarRemovedEvent: notify(newStar(ev.User, false, ev.Item)) case *slack.DisconnectedEvent: log.Println("Disconnection.") return case *slack.ConnectingEvent: log.Println("Connecting....") case *slack.ConnectedEvent: log.Println("Connected.") slackInfo = rtm.GetInfo() case *slack.MessageEvent: if strings.HasPrefix(ev.Channel, "D") { resp := gotDM(ev.Channel, ev.User, ev.Text) if resp != "" { api.PostMessage(ev.Channel, resp, slackParams) } } default: // skip } } } }
func main() { var ( apiToken string debug bool ) flag.StringVar(&apiToken, "token", "YOUR_TOKEN_HERE", "Your Slack API Token") flag.BoolVar(&debug, "debug", false, "Show JSON output") flag.Parse() api := slack.New(apiToken) if debug { api.SetDebug(true) } // Get all stars for the usr. params := slack.NewStarsParameters() starredItems, _, err := api.GetStarred(params) if err != nil { fmt.Printf("Error getting stars: %s\n", err) return } for _, s := range starredItems { var desc string switch s.Type { case slack.TYPE_MESSAGE: desc = s.Message.Text case slack.TYPE_FILE: desc = s.File.Name case slack.TYPE_FILE_COMMENT: desc = s.File.Name + " - " + s.Comment.Comment case slack.TYPE_CHANNEL, slack.TYPE_IM, slack.TYPE_GROUP: desc = s.Channel } fmt.Printf("Starred %s: %s\n", s.Type, desc) } }
func main() { api := slack.New("YOUR_TOKEN_HERE") params := slack.PostMessageParameters{} attachment := slack.Attachment{ Pretext: "some pretext", Text: "some text", // Uncomment the following part to send a field too /* Fields: []slack.AttachmentField{ slack.AttachmentField{ Title: "a", Value: "no", }, }, */ } params.Attachments = []slack.Attachment{attachment} channelID, timestamp, err := api.PostMessage("CHANNEL_ID", "Some text", params) if err != nil { fmt.Printf("%s\n", err) return } fmt.Printf("Message successfully sent to channel %s at %s", channelID, timestamp) }
func main() { var ( apiToken string debug bool ) flag.StringVar(&apiToken, "token", "YOUR_TOKEN_HERE", "Your Slack API Token") flag.BoolVar(&debug, "debug", false, "Show JSON output") flag.Parse() api := slack.New(apiToken) if debug { api.SetDebug(true) } var ( postAsUserName string postAsUserID string postToUserName string postToUserID string postToChannelID string ) // Find the user to post as. authTest, err := api.AuthTest() if err != nil { fmt.Printf("Error getting channels: %s\n", err) return } // Post as the authenticated user. postAsUserName = authTest.User postAsUserID = authTest.UserID // Posting to DM with self causes a conversation with slackbot. postToUserName = authTest.User postToUserID = authTest.UserID // Find the channel. _, _, chanID, err := api.OpenIMChannel(postToUserID) if err != nil { fmt.Printf("Error opening IM: %s\n", err) return } postToChannelID = chanID fmt.Printf("Posting as %s (%s) in DM with %s (%s), channel %s\n", postAsUserName, postAsUserID, postToUserName, postToUserID, postToChannelID) // Post a message. postParams := slack.PostMessageParameters{} channelID, timestamp, err := api.PostMessage(postToChannelID, "Is this any good?", postParams) if err != nil { fmt.Printf("Error posting message: %s\n", err) return } // Grab a reference to the message. msgRef := slack.NewRefToMessage(channelID, timestamp) // React with :+1: if err := api.AddReaction("+1", msgRef); err != nil { fmt.Printf("Error adding reaction: %s\n", err) return } // React with :-1: if err := api.AddReaction("cry", msgRef); err != nil { fmt.Printf("Error adding reaction: %s\n", err) return } // Get all reactions on the message. msgReactions, err := api.GetReactions(msgRef, slack.NewGetReactionsParameters()) if err != nil { fmt.Printf("Error getting reactions: %s\n", err) return } fmt.Printf("\n") fmt.Printf("%d reactions to message...\n", len(msgReactions)) for _, r := range msgReactions { fmt.Printf(" %d users say %s\n", r.Count, r.Name) } // List all of the users reactions. listReactions, _, err := api.ListReactions(slack.NewListReactionsParameters()) if err != nil { fmt.Printf("Error listing reactions: %s\n", err) return } fmt.Printf("\n") fmt.Printf("All reactions by %s...\n", authTest.User) for _, item := range listReactions { fmt.Printf("%d on a %s...\n", len(item.Reactions), item.Type) for _, r := range item.Reactions { fmt.Printf(" %s (along with %d others)\n", r.Name, r.Count-1) } } // Remove the :cry: reaction. err = api.RemoveReaction("cry", msgRef) if err != nil { fmt.Printf("Error remove reaction: %s\n", err) return } // Get all reactions on the message. msgReactions, err = api.GetReactions(msgRef, slack.NewGetReactionsParameters()) if err != nil { fmt.Printf("Error getting reactions: %s\n", err) return } fmt.Printf("\n") fmt.Printf("%d reactions to message after removing cry...\n", len(msgReactions)) for _, r := range msgReactions { fmt.Printf(" %d users say %s\n", r.Count, r.Name) } }