From 7fe68106bec7133981ac91026156977e0c7b4ca1 Mon Sep 17 00:00:00 2001 From: Anhgelus Morhtuuzh Date: Tue, 16 Apr 2024 15:24:25 +0200 Subject: feat(reducer): periodic reducer updating xp --- xp/level.go | 44 +++++++++++++++++++++++--------------------- 1 file changed, 23 insertions(+), 21 deletions(-) (limited to 'xp') diff --git a/xp/level.go b/xp/level.go index 12e5a28..bbe11a4 100644 --- a/xp/level.go +++ b/xp/level.go @@ -5,6 +5,8 @@ import ( "github.com/anhgelus/les-copaings-bot/config" "github.com/bwmarrin/discordgo" "slices" + "sync" + "time" ) func onNewLevel(s *discordgo.Session, m *discordgo.Member, level uint) { @@ -116,24 +118,24 @@ func XPUpdate(s *discordgo.Session, c *Copaing) { } } -//func PeriodicReducer(s *discordgo.Session) { -// var wg sync.WaitGroup -// for _, g := range s.State.Guilds { -// for _, m := range utils.FetchGuildUser(s, g.ID) { -// if m.User.Bot { -// continue -// } -// wg.Add(1) -// go func() { -// utils.SendDebug("Async reducer", "user", m.DisplayName(), "guild", g.Name) -// c := GetCopaing(m.User.ID, g.ID) -// XPUpdate(s, c) -// wg.Done() -// }() -// } -// wg.Wait() // finish the entire guild before starting another -// utils.SendDebug("Guild finished", "guild", g.Name) -// time.Sleep(10 * time.Second) // sleep prevents from spamming the Discord API -// } -// utils.SendDebug("Periodic reduce finished", "len(guilds)", len(s.State.Guilds)) -//} +func PeriodicReducer(s *discordgo.Session) { + var wg sync.WaitGroup + for _, g := range s.State.Guilds { + for _, m := range utils.FetchGuildUser(s, g.ID) { + if m.User.Bot { + continue + } + wg.Add(1) + go func() { + utils.SendDebug("Async reducer", "user", m.DisplayName(), "guild", g.Name) + c := GetCopaing(m.User.ID, g.ID) + XPUpdate(s, c) + wg.Done() + }() + } + wg.Wait() // finish the entire guild before starting another + utils.SendDebug("Guild finished", "guild", g.Name) + time.Sleep(10 * time.Second) // sleep prevents from spamming the Discord API + } + utils.SendDebug("Periodic reduce finished", "len(guilds)", len(s.State.Guilds)) +} -- cgit v1.2.3