Sort stats
This commit is contained in:
parent
af1080fb6a
commit
49a142b076
@ -3,6 +3,7 @@ package commands
|
|||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
"nignoggobot/metrics"
|
"nignoggobot/metrics"
|
||||||
|
"sort"
|
||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
tgbotapi "github.com/go-telegram-bot-api/telegram-bot-api/v5"
|
tgbotapi "github.com/go-telegram-bot-api/telegram-bot-api/v5"
|
||||||
@ -29,18 +30,37 @@ func (StatsCommand) Execute(update tgbotapi.Update, bot *tgbotapi.BotAPI) {
|
|||||||
}
|
}
|
||||||
stats := metrics.GetStats()
|
stats := metrics.GetStats()
|
||||||
var sb strings.Builder
|
var sb strings.Builder
|
||||||
sb.WriteString("Command usage (all time):\n")
|
|
||||||
for name, stat := range stats.Commands {
|
type cmdStat struct {
|
||||||
sb.WriteString(fmt.Sprintf("/%s: %d\n", name, stat.AllTime))
|
Name string
|
||||||
|
AllTime int
|
||||||
|
Last30Sum int
|
||||||
}
|
}
|
||||||
sb.WriteString("\nCommand usage (last 30 days):\n")
|
var statsList []cmdStat
|
||||||
for name, stat := range stats.Commands {
|
for name, stat := range stats.Commands {
|
||||||
total := 0
|
sum := 0
|
||||||
for _, v := range stat.Last30 {
|
for _, v := range stat.Last30 {
|
||||||
total += v
|
sum += v
|
||||||
}
|
}
|
||||||
sb.WriteString(fmt.Sprintf("/%s: %d\n", name, total))
|
statsList = append(statsList, cmdStat{Name: name, AllTime: stat.AllTime, Last30Sum: sum})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
sort.Slice(statsList, func(i, j int) bool {
|
||||||
|
return statsList[i].AllTime > statsList[j].AllTime
|
||||||
|
})
|
||||||
|
sb.WriteString("Command usage (all time):\n")
|
||||||
|
for _, s := range statsList {
|
||||||
|
sb.WriteString(fmt.Sprintf("/%s: %d\n", s.Name, s.AllTime))
|
||||||
|
}
|
||||||
|
|
||||||
|
sort.Slice(statsList, func(i, j int) bool {
|
||||||
|
return statsList[i].Last30Sum > statsList[j].Last30Sum
|
||||||
|
})
|
||||||
|
sb.WriteString("\nCommand usage (last 30 days):\n")
|
||||||
|
for _, s := range statsList {
|
||||||
|
sb.WriteString(fmt.Sprintf("/%s: %d\n", s.Name, s.Last30Sum))
|
||||||
|
}
|
||||||
|
|
||||||
groups, privs, blocked := 0, 0, 0
|
groups, privs, blocked := 0, 0, 0
|
||||||
for _, chat := range stats.Chats {
|
for _, chat := range stats.Chats {
|
||||||
if chat.IsGroup {
|
if chat.IsGroup {
|
||||||
@ -61,7 +81,7 @@ type BroadcastCommand struct{}
|
|||||||
|
|
||||||
func (BroadcastCommand) Name() string { return "broadcast" }
|
func (BroadcastCommand) Name() string { return "broadcast" }
|
||||||
func (BroadcastCommand) Help() string {
|
func (BroadcastCommand) Help() string {
|
||||||
return "Broadcast a message to all chats (admin only). Usage: /broadcast <message>"
|
return "Broadcast a <message> to all chats (admin only)."
|
||||||
}
|
}
|
||||||
func (BroadcastCommand) Execute(update tgbotapi.Update, bot *tgbotapi.BotAPI) {
|
func (BroadcastCommand) Execute(update tgbotapi.Update, bot *tgbotapi.BotAPI) {
|
||||||
if !IsAdmin(update.Message.From.ID) {
|
if !IsAdmin(update.Message.From.ID) {
|
||||||
|
@ -1,9 +1,9 @@
|
|||||||
{
|
{
|
||||||
"commands": {
|
"commands": {
|
||||||
"bandname": {
|
"bandname": {
|
||||||
"all_time": 2,
|
"all_time": 3,
|
||||||
"last_30": [
|
"last_30": [
|
||||||
2,
|
3,
|
||||||
0,
|
0,
|
||||||
0,
|
0,
|
||||||
0,
|
0,
|
||||||
@ -145,9 +145,9 @@
|
|||||||
"last_30_day": 20236
|
"last_30_day": 20236
|
||||||
},
|
},
|
||||||
"stats": {
|
"stats": {
|
||||||
"all_time": 3,
|
"all_time": 4,
|
||||||
"last_30": [
|
"last_30": [
|
||||||
3,
|
4,
|
||||||
0,
|
0,
|
||||||
0,
|
0,
|
||||||
0,
|
0,
|
||||||
@ -184,7 +184,7 @@
|
|||||||
"chats": {
|
"chats": {
|
||||||
"-1001327903329": {
|
"-1001327903329": {
|
||||||
"is_group": true,
|
"is_group": true,
|
||||||
"last_active": 1748472713,
|
"last_active": 1748473223,
|
||||||
"blocked": false
|
"blocked": false
|
||||||
},
|
},
|
||||||
"126131628": {
|
"126131628": {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user