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 }}
- {{ $k }} | {{ $v }} |
- {{ end }}
+ {{ .TemplateData.Error }}
+
+
+
+
+
+ Statistics |
+
+
+
+
+ Total Channel Messages |
+ {{ .TemplateData.TotalChannelMessages }} |
+
+