Skip to content

Instantly share code, notes, and snippets.

@ahmetabdi
Created November 27, 2018 13:58
Show Gist options
  • Save ahmetabdi/2b3e19a95c58810cafd0c8a1a76a15f0 to your computer and use it in GitHub Desktop.
Save ahmetabdi/2b3e19a95c58810cafd0c8a1a76a15f0 to your computer and use it in GitHub Desktop.
package main
import (
"fmt"
"sort"
"github.com/nlopes/slack"
)
func rankByWordCount(wordFrequencies map[string]int) PairList {
pl := make(PairList, len(wordFrequencies))
i := 0
for k, v := range wordFrequencies {
pl[i] = Pair{k, v}
i++
}
sort.Sort(sort.Reverse(pl))
return pl
}
type Pair struct {
Key string
Value int
}
type PairList []Pair
func (p PairList) Len() int { return len(p) }
func (p PairList) Less(i, j int) bool { return p[i].Value < p[j].Value }
func (p PairList) Swap(i, j int) { p[i], p[j] = p[j], p[i] }
func main() {
api := slack.New("xoxp-API_KEY_HERE", slack.OptionDebug(false))
var reactions = map[string]int{}
// users, err := api.GetUsers()
// if err != nil {
// fmt.Printf("Error listing users: %s\n", err)
// return
// }
// List all of the users reactions. user.ID
// for _, user := range users {
// fmt.Printf("%s %s\n", user.ID, user.RealName)
// }
page := 1
listReactions, paging, err := api.ListReactions(slack.ListReactionsParameters{User: "U0HLJHWJW", Count: 500, Page: page, Full: false})
if err != nil {
fmt.Printf("Error listing reactions: %s\n", err)
return
}
fmt.Printf("Count %d, Total: %d, Page: %d, Pages: %d\n", paging.Count, paging.Total, paging.Page, paging.Pages)
for _, item := range listReactions {
for _, r := range item.Reactions {
reactions[r.Name]++
}
}
for page < paging.Pages {
page++
listReactions, subPaging, err := api.ListReactions(slack.ListReactionsParameters{User: "U0HLJHWJW", Count: 500, Page: page, Full: false})
if err != nil {
fmt.Printf("Error listing reactions: %s\n", err)
return
}
fmt.Printf("Count %d, Total: %d, Page: %d, Pages: %d\n", subPaging.Count, subPaging.Total, subPaging.Page, subPaging.Pages)
for _, item := range listReactions {
for _, r := range item.Reactions {
reactions[r.Name]++
}
}
}
for _, kv := range rankByWordCount(reactions) {
fmt.Printf(":%s: %d\n", kv.Key, kv.Value)
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment