diff --git a/statbot.go b/statbot.go index 492a5a2..de8648d 100644 --- a/statbot.go +++ b/statbot.go @@ -105,12 +105,10 @@ func processMessage(slack *Slack, m *Message) { } for _, stats := range statProcessors { - if err == nil { - if usr.IsBot { - stats.ProcessBotMessage(m) - } else { - stats.ProcessMessage(m) - } + if usr.IsBot { + stats.ProcessBotMessage(m) + } else { + stats.ProcessMessage(m) } } for _, proc := range messageProcessors { diff --git a/statbot_model.go b/statbot_model.go index a4347b2..1fca673 100644 --- a/statbot_model.go +++ b/statbot_model.go @@ -717,8 +717,8 @@ func decrementUserStat(user string, key string) error { return addUserStat(user, key, -1) } -func getAllUserStats(user string) map[string]int { - var ret map[string]int +func getAllUserStats(user string) (map[string]int, error) { + ret := make(map[string]int) openDatabase() err := db.Update(func(tx *bolt.Tx) error { var b, uB, uSB *bolt.Bucket @@ -726,9 +726,12 @@ func getAllUserStats(user string) map[string]int { b = tx.Bucket([]byte("users")) if uB, err = b.CreateBucketIfNotExists([]byte(user)); err == nil { if uSB, err = uB.CreateBucketIfNotExists([]byte("stats")); err == nil { + var st int + var key string uSB.ForEach(func(k, v []byte) error { - if st, err = bktGetInt(uSB, k); err == nil { - ret[k] = ret[k] + st + key = string(k) + if st, err = bktGetInt(uSB, key); err == nil { + ret[key] = ret[key] + st return nil } return err @@ -738,11 +741,11 @@ func getAllUserStats(user string) map[string]int { return err }) closeDatabase() - return ret + return ret, err } func getAllUsersStats() (map[string]int, error) { - var ret map[string]int + ret := make(map[string]int) openDatabase() err := db.Update(func(tx *bolt.Tx) error { var b, uB, uSB *bolt.Bucket @@ -753,9 +756,12 @@ func getAllUsersStats() (map[string]int, error) { // Bucket if uB, err = b.CreateBucketIfNotExists([]byte(k)); err == nil { if uSB, err = uB.CreateBucketIfNotExists([]byte("stats")); err == nil { + var st int + var key string uSB.ForEach(func(k, v []byte) error { - if st, err = bktGetInt(uSB, k); err == nil { - ret[k] = ret[k] + st + key = string(k) + if st, err = bktGetInt(uSB, key); err == nil { + ret[key] = ret[key] + st return nil } return err @@ -763,6 +769,7 @@ func getAllUsersStats() (map[string]int, error) { } } } + return err }) return err }) diff --git a/statbotweb.go b/statbotweb.go index 7a41cef..e7991e9 100644 --- a/statbotweb.go +++ b/statbotweb.go @@ -83,14 +83,20 @@ func initRequest(w http.ResponseWriter, req *http.Request) { func handleStats(w http.ResponseWriter, req *http.Request) { initRequest(w, req) - + type StatData struct { - Stats map[string]int + TotalChannelMessages int + Error string } // Get the global stats - stats := getAllUsersStats() - s := StatData{Stats: stats} + var s StatData + if stats, err := getAllUsersStats(); err == nil { + s = StatData{TotalChannelMessages: stats["channel-message"], Error: ""} + } else { + s = StatData{TotalChannelMessages: -1, Error: fmt.Sprintf("%s", err)} + } + site.TemplateData = s setMenuItemActive("Stats") showPage("stats.html", site, w) diff --git a/templates/stats.html b/templates/stats.html index e9f03ca..d279adb 100644 --- a/templates/stats.html +++ b/templates/stats.html @@ -1,10 +1,21 @@
- devICT Slack Statistics! + devICT Slack!
- - {{ for $k, $v := range .TemplateData.Stats }} - - {{ end }} + {{ .TemplateData.Error }} + +
+
{{ $k }}{{ $v }}
+ + + + + + + + + + +
Statistics
Total Channel Messages{{ .TemplateData.TotalChannelMessages }}