From ad8f65fec5c7e1e0ec0b3d4e992ffc67a0357661 Mon Sep 17 00:00:00 2001 From: Anhgelus Morhtuuzh Date: Thu, 11 Sep 2025 12:58:03 +0200 Subject: feat(db): remove xp when copaing leaves --- events.go | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) (limited to 'events.go') diff --git a/events.go b/events.go index 6f15fd8..abf9d03 100644 --- a/events.go +++ b/events.go @@ -8,6 +8,7 @@ import ( "git.anhgelus.world/anhgelus/les-copaings-bot/config" "git.anhgelus.world/anhgelus/les-copaings-bot/exp" "git.anhgelus.world/anhgelus/les-copaings-bot/user" + "github.com/anhgelus/gokord" "github.com/anhgelus/gokord/logger" discordgo "github.com/nyttikord/gokord" ) @@ -122,7 +123,18 @@ func OnLeave(_ *discordgo.Session, e *discordgo.GuildMemberRemove) { return } c := user.GetCopaing(e.User.ID, e.GuildID) - if err := c.Delete(); err != nil { + err := gokord.DB. + Where("copaing_id = ? and guild_id = ?", c.ID, e.GuildID). + Delete(&user.CopaingXP{}). + Error + if err != nil { + logger.Alert( + "events.go - deleting user xp from db", err.Error(), + "user_id", e.User.ID, + "guild_id", e.GuildID, + ) + } + if err = c.Delete(); err != nil { logger.Alert( "events.go - deleting user from db", err.Error(), "user_id", e.User.ID, -- cgit v1.2.3 From 8885566932c965926ee64fad6404e6f26bc13220 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?William=20Herg=C3=A8s?= Date: Sat, 13 Sep 2025 13:32:01 +0200 Subject: build(gokord): upgrade to latest version --- events.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'events.go') diff --git a/events.go b/events.go index abf9d03..cae0ef3 100644 --- a/events.go +++ b/events.go @@ -38,7 +38,7 @@ func OnMessage(s *discordgo.Session, m *discordgo.MessageCreate) { m.Member.GuildID = m.GuildID xp := min(exp.MessageXP(uint(len(trimmed)), exp.CalcDiversity(trimmed)), MaxXpPerMessage) c.AddXP(s, m.Member, xp, func(_ uint, _ uint) { - if err := s.MessageReactionAdd(m.ChannelID, m.Message.ID, "⬆"); err != nil { + if err := s.ChannelAPI().MessageReactionAdd(m.ChannelID, m.Message.ID, "⬆"); err != nil { logger.Alert( "events.go - add reaction for new level", err.Error(), "channel id", m.ChannelID, @@ -108,7 +108,7 @@ func onDisconnect(s *discordgo.Session, e *discordgo.VoiceStateUpdate) { if len(cfg.FallbackChannel) == 0 { return } - _, err := s.ChannelMessageSend(cfg.FallbackChannel, fmt.Sprintf( + _, err := s.ChannelAPI().MessageSend(cfg.FallbackChannel, fmt.Sprintf( "%s est maintenant niveau %d", e.Member.Mention(), newLevel, )) if err != nil { -- cgit v1.2.3 From 24519b76b48f521f1ef4c7e5e038574eaa66ebcd Mon Sep 17 00:00:00 2001 From: ascpial Date: Sat, 13 Sep 2025 21:40:24 +0200 Subject: feat(config): improve /config look and xp_role usability --- events.go | 43 ++++++++++++------------------------------- 1 file changed, 12 insertions(+), 31 deletions(-) (limited to 'events.go') diff --git a/events.go b/events.go index cae0ef3..9f247d3 100644 --- a/events.go +++ b/events.go @@ -9,7 +9,6 @@ import ( "git.anhgelus.world/anhgelus/les-copaings-bot/exp" "git.anhgelus.world/anhgelus/les-copaings-bot/user" "github.com/anhgelus/gokord" - "github.com/anhgelus/gokord/logger" discordgo "github.com/nyttikord/gokord" ) @@ -39,11 +38,7 @@ func OnMessage(s *discordgo.Session, m *discordgo.MessageCreate) { xp := min(exp.MessageXP(uint(len(trimmed)), exp.CalcDiversity(trimmed)), MaxXpPerMessage) c.AddXP(s, m.Member, xp, func(_ uint, _ uint) { if err := s.ChannelAPI().MessageReactionAdd(m.ChannelID, m.Message.ID, "⬆"); err != nil { - logger.Alert( - "events.go - add reaction for new level", err.Error(), - "channel id", m.ChannelID, - "message id", m.Message.ID, - ) + s.LogError(err, "add reaction for new level channel id %s, message id %s", m.ChannelID, m.Message.ID) } }) } @@ -70,8 +65,8 @@ func genMapKey(guildID string, userID string) string { return fmt.Sprintf("%s:%s", guildID, userID) } -func onConnection(_ *discordgo.Session, e *discordgo.VoiceStateUpdate) { - logger.Debug("User connected", "username", e.Member.DisplayName()) +func onConnection(s *discordgo.Session, e *discordgo.VoiceStateUpdate) { + s.LogDebug("User connected username %s", e.Member.DisplayName()) connectedSince[genMapKey(e.GuildID, e.UserID)] = time.Now().Unix() } @@ -81,25 +76,19 @@ func onDisconnect(s *discordgo.Session, e *discordgo.VoiceStateUpdate) { // check the validity of user con, ok := connectedSince[genMapKey(e.GuildID, e.UserID)] if !ok || con == NotConnected { - logger.Warn(fmt.Sprintf( - "User %s diconnect from a vocal but was registered as not connected", e.Member.DisplayName(), - )) + s.LogWarn("User %s disconnect from a vocal but was registered as not connected", e.Member.DisplayName()) return } timeInVocal := now - con - logger.Debug("User disconnected", "username", e.Member.DisplayName(), "time in vocal", timeInVocal) + s.LogDebug("User disconnected username %s, time in vocal %d", e.Member.DisplayName(), timeInVocal) connectedSince[genMapKey(e.GuildID, e.UserID)] = NotConnected // add exp if timeInVocal < 0 { - logger.Alert( - "events.go - Calculating time spent in vocal", "the time is negative", - "discord_id", e.UserID, - "guild_id", e.GuildID, - ) + s.LogWarn("Time spent in vocal negative discord_id %s, guild_id %s", e.UserID, e.GuildID) return } if timeInVocal > MaxTimeInVocal { - logger.Warn(fmt.Sprintf("User %s spent more than 6 hours in vocal", e.Member.DisplayName())) + s.LogWarn("User %s spent more than 6 hours in vocal", e.Member.DisplayName()) timeInVocal = MaxTimeInVocal } e.Member.GuildID = e.GuildID @@ -112,13 +101,13 @@ func onDisconnect(s *discordgo.Session, e *discordgo.VoiceStateUpdate) { "%s est maintenant niveau %d", e.Member.Mention(), newLevel, )) if err != nil { - logger.Alert("events.go - Sending new level in fallback channel", err.Error()) + s.LogError(err, "Sending new level in fallback channel") } }) } -func OnLeave(_ *discordgo.Session, e *discordgo.GuildMemberRemove) { - logger.Debug("Leave event", "user_id", e.User.ID) +func OnLeave(s *discordgo.Session, e *discordgo.GuildMemberRemove) { + s.LogDebug("Leave event user_id %s", e.User.ID) if e.User.Bot { return } @@ -128,17 +117,9 @@ func OnLeave(_ *discordgo.Session, e *discordgo.GuildMemberRemove) { Delete(&user.CopaingXP{}). Error if err != nil { - logger.Alert( - "events.go - deleting user xp from db", err.Error(), - "user_id", e.User.ID, - "guild_id", e.GuildID, - ) + s.LogError(err, "Deleting user xp from db user_id %s, guild_id %s", e.User.ID, e.GuildID) } if err = c.Delete(); err != nil { - logger.Alert( - "events.go - deleting user from db", err.Error(), - "user_id", e.User.ID, - "guild_id", e.GuildID, - ) + s.LogError(err, "Deleting user from DB user_id %s, guild_id %s", e.User.ID, e.GuildID) } } -- cgit v1.2.3 From 8a7189c3835a431b7fc16b189162f6f343e80b84 Mon Sep 17 00:00:00 2001 From: ascpial Date: Sat, 20 Sep 2025 23:33:29 +0200 Subject: feat(config): finish upgrading config --- events.go | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) (limited to 'events.go') diff --git a/events.go b/events.go index 9f247d3..38f259c 100644 --- a/events.go +++ b/events.go @@ -27,7 +27,7 @@ func OnMessage(s *discordgo.Session, m *discordgo.MessageCreate) { return } cfg := config.GetGuildConfig(m.GuildID) - if cfg.IsDisabled(m.ChannelID) { + if cfg.IsDisabled(s, m.ChannelID) { return } c := user.GetCopaing(m.Author.ID, m.GuildID) @@ -48,13 +48,13 @@ func OnVoiceUpdate(s *discordgo.Session, e *discordgo.VoiceStateUpdate) { return } cfg := config.GetGuildConfig(e.GuildID) - if (e.BeforeUpdate == nil || cfg.IsDisabled(e.BeforeUpdate.ChannelID)) && e.ChannelID != "" { - if cfg.IsDisabled(e.ChannelID) { + if (e.BeforeUpdate == nil || cfg.IsDisabled(s, e.BeforeUpdate.ChannelID)) && e.ChannelID != "" { + if cfg.IsDisabled(s, e.ChannelID) { return } onConnection(s, e) - } else if e.BeforeUpdate != nil && (e.ChannelID == "" || cfg.IsDisabled(e.ChannelID)) { - if cfg.IsDisabled(e.BeforeUpdate.ChannelID) { + } else if e.BeforeUpdate != nil && (e.ChannelID == "" || cfg.IsDisabled(s, e.ChannelID)) { + if cfg.IsDisabled(s, e.BeforeUpdate.ChannelID) { return } onDisconnect(s, e) -- cgit v1.2.3 From b61a834b608df3d5e617912eefb28924ef3a46df Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?William=20Herg=C3=A8s?= Date: Fri, 26 Sep 2025 18:30:57 +0200 Subject: build(gokord): bump to latest nightly --- events.go | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) (limited to 'events.go') diff --git a/events.go b/events.go index 38f259c..8de04b8 100644 --- a/events.go +++ b/events.go @@ -9,7 +9,8 @@ import ( "git.anhgelus.world/anhgelus/les-copaings-bot/exp" "git.anhgelus.world/anhgelus/les-copaings-bot/user" "github.com/anhgelus/gokord" - discordgo "github.com/nyttikord/gokord" + "github.com/nyttikord/gokord/bot" + "github.com/nyttikord/gokord/event" ) const ( @@ -22,7 +23,7 @@ var ( connectedSince = map[string]int64{} ) -func OnMessage(s *discordgo.Session, m *discordgo.MessageCreate) { +func OnMessage(s bot.Session, m *event.MessageCreate) { if m.Author.Bot { return } @@ -43,7 +44,7 @@ func OnMessage(s *discordgo.Session, m *discordgo.MessageCreate) { }) } -func OnVoiceUpdate(s *discordgo.Session, e *discordgo.VoiceStateUpdate) { +func OnVoiceUpdate(s bot.Session, e *event.VoiceStateUpdate) { if e.Member.User.Bot { return } @@ -65,12 +66,12 @@ func genMapKey(guildID string, userID string) string { return fmt.Sprintf("%s:%s", guildID, userID) } -func onConnection(s *discordgo.Session, e *discordgo.VoiceStateUpdate) { +func onConnection(s bot.Session, e *event.VoiceStateUpdate) { s.LogDebug("User connected username %s", e.Member.DisplayName()) connectedSince[genMapKey(e.GuildID, e.UserID)] = time.Now().Unix() } -func onDisconnect(s *discordgo.Session, e *discordgo.VoiceStateUpdate) { +func onDisconnect(s bot.Session, e *event.VoiceStateUpdate) { now := time.Now().Unix() c := user.GetCopaing(e.UserID, e.GuildID) // check the validity of user @@ -106,7 +107,7 @@ func onDisconnect(s *discordgo.Session, e *discordgo.VoiceStateUpdate) { }) } -func OnLeave(s *discordgo.Session, e *discordgo.GuildMemberRemove) { +func OnLeave(s bot.Session, e *event.GuildMemberRemove) { s.LogDebug("Leave event user_id %s", e.User.ID) if e.User.Bot { return -- cgit v1.2.3 From cfdba5f417bb31aac564d13becc09874f17d075d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?William=20Herg=C3=A8s?= Date: Sat, 27 Sep 2025 17:34:38 +0200 Subject: build(gokord): bump to latest nightly --- events.go | 31 ++++++++++++++++++------------- 1 file changed, 18 insertions(+), 13 deletions(-) (limited to 'events.go') diff --git a/events.go b/events.go index 8de04b8..9a3f508 100644 --- a/events.go +++ b/events.go @@ -39,7 +39,12 @@ func OnMessage(s bot.Session, m *event.MessageCreate) { xp := min(exp.MessageXP(uint(len(trimmed)), exp.CalcDiversity(trimmed)), MaxXpPerMessage) c.AddXP(s, m.Member, xp, func(_ uint, _ uint) { if err := s.ChannelAPI().MessageReactionAdd(m.ChannelID, m.Message.ID, "⬆"); err != nil { - s.LogError(err, "add reaction for new level channel id %s, message id %s", m.ChannelID, m.Message.ID) + s.Logger().Error( + "add reaction for new level", + "error", err, + "channel", m.ChannelID, + "message", m.Message.ID, + ) } }) } @@ -67,7 +72,7 @@ func genMapKey(guildID string, userID string) string { } func onConnection(s bot.Session, e *event.VoiceStateUpdate) { - s.LogDebug("User connected username %s", e.Member.DisplayName()) + s.Logger().Debug("user connected", "user", e.Member.DisplayName()) connectedSince[genMapKey(e.GuildID, e.UserID)] = time.Now().Unix() } @@ -77,21 +82,21 @@ func onDisconnect(s bot.Session, e *event.VoiceStateUpdate) { // check the validity of user con, ok := connectedSince[genMapKey(e.GuildID, e.UserID)] if !ok || con == NotConnected { - s.LogWarn("User %s disconnect from a vocal but was registered as not connected", e.Member.DisplayName()) + s.Logger().Warn( + "user disconnect from a vocal but was registered as not connected", + "user", e.Member.DisplayName(), + ) return } timeInVocal := now - con - s.LogDebug("User disconnected username %s, time in vocal %d", e.Member.DisplayName(), timeInVocal) + s.Logger().Debug("user disconnected", "user", e.Member.DisplayName(), "time in vocal", timeInVocal) connectedSince[genMapKey(e.GuildID, e.UserID)] = NotConnected // add exp if timeInVocal < 0 { - s.LogWarn("Time spent in vocal negative discord_id %s, guild_id %s", e.UserID, e.GuildID) + s.Logger().Warn("time spent in vocal is negative", "user", e.Member.DisplayName(), "guild", e.GuildID) return } - if timeInVocal > MaxTimeInVocal { - s.LogWarn("User %s spent more than 6 hours in vocal", e.Member.DisplayName()) - timeInVocal = MaxTimeInVocal - } + timeInVocal = min(timeInVocal, MaxTimeInVocal) e.Member.GuildID = e.GuildID c.AddXP(s, e.Member, exp.VocalXP(uint(timeInVocal)), func(_ uint, newLevel uint) { cfg := config.GetGuildConfig(e.GuildID) @@ -102,13 +107,13 @@ func onDisconnect(s bot.Session, e *event.VoiceStateUpdate) { "%s est maintenant niveau %d", e.Member.Mention(), newLevel, )) if err != nil { - s.LogError(err, "Sending new level in fallback channel") + s.Logger().Error("sending new level in fallback channel", "error", err) } }) } func OnLeave(s bot.Session, e *event.GuildMemberRemove) { - s.LogDebug("Leave event user_id %s", e.User.ID) + s.Logger().Debug("leave event", "user", e.User.Username) if e.User.Bot { return } @@ -118,9 +123,9 @@ func OnLeave(s bot.Session, e *event.GuildMemberRemove) { Delete(&user.CopaingXP{}). Error if err != nil { - s.LogError(err, "Deleting user xp from db user_id %s, guild_id %s", e.User.ID, e.GuildID) + s.Logger().Error("deleting user xp from DB", "user", e.User.Username, "guild", e.GuildID) } if err = c.Delete(); err != nil { - s.LogError(err, "Deleting user from DB user_id %s, guild_id %s", e.User.ID, e.GuildID) + s.Logger().Error("deleting user from DB", "user", e.User.Username, "guild", e.GuildID) } } -- cgit v1.2.3