aboutsummaryrefslogtreecommitdiff
path: root/events.go
diff options
context:
space:
mode:
authorWilliam Hergès <william@herges.fr>2026-01-17 16:31:25 +0100
committerWilliam Hergès <william@herges.fr>2026-01-17 16:31:25 +0100
commitfebb77607e81fbb182dd456733ea5adafda44ed4 (patch)
tree3ff850a34d716df8315d3b9839768e6a4ff60a4c /events.go
parent55befa3a53ab56bac31026b1b6099b2d31fd6d91 (diff)
perf(member): use stat for load
Diffstat (limited to 'events.go')
-rw-r--r--events.go22
1 files changed, 11 insertions, 11 deletions
diff --git a/events.go b/events.go
index 5191120..bdf8c77 100644
--- a/events.go
+++ b/events.go
@@ -24,7 +24,7 @@ var (
connectedSince = map[string]int64{}
)
-func OnMessage(_ context.Context, s bot.Session, m *event.MessageCreate) {
+func OnMessage(ctx context.Context, s bot.Session, m *event.MessageCreate) {
if m.Author.Bot {
return
}
@@ -32,13 +32,13 @@ func OnMessage(_ context.Context, s bot.Session, m *event.MessageCreate) {
if cfg.IsDisabled(s, m.ChannelID) {
return
}
- c := user.GetCopaing(m.Author.ID, m.GuildID)
+ cc := user.GetCopaing(ctx, m.Author.ID, m.GuildID)
// add exp
trimmed := exp.TrimMessage(strings.ToLower(m.Content))
m.Member.User = m.Author
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) {
+ cc.AddXP(ctx, s, m.Member, xp, func(_ uint, _ uint) {
if err := s.ChannelAPI().MessageReactionAdd(m.ChannelID, m.Message.ID, "⬆"); err != nil {
s.Logger().Error(
"add reaction for new level",
@@ -50,7 +50,7 @@ func OnMessage(_ context.Context, s bot.Session, m *event.MessageCreate) {
})
}
-func OnVoiceUpdate(_ context.Context, s bot.Session, e *event.VoiceStateUpdate) {
+func OnVoiceUpdate(ctx context.Context, s bot.Session, e *event.VoiceStateUpdate) {
if e.Member.User.Bot {
return
}
@@ -64,7 +64,7 @@ func OnVoiceUpdate(_ context.Context, s bot.Session, e *event.VoiceStateUpdate)
if cfg.IsDisabled(s, e.BeforeUpdate.ChannelID) {
return
}
- onDisconnect(s, e)
+ onDisconnect(ctx, s, e)
}
}
@@ -77,9 +77,9 @@ func onConnection(s bot.Session, e *event.VoiceStateUpdate) {
connectedSince[genMapKey(e.GuildID, e.UserID)] = time.Now().Unix()
}
-func onDisconnect(s bot.Session, e *event.VoiceStateUpdate) {
+func onDisconnect(ctx context.Context, s bot.Session, e *event.VoiceStateUpdate) {
now := time.Now().Unix()
- c := user.GetCopaing(e.UserID, e.GuildID)
+ cc := user.GetCopaing(ctx, e.UserID, e.GuildID)
// check the validity of user
con, ok := connectedSince[genMapKey(e.GuildID, e.UserID)]
if !ok || con == NotConnected {
@@ -99,7 +99,7 @@ func onDisconnect(s bot.Session, e *event.VoiceStateUpdate) {
}
timeInVocal = min(timeInVocal, MaxTimeInVocal)
e.Member.GuildID = e.GuildID
- c.AddXP(s, e.Member, exp.VocalXP(uint(timeInVocal)), func(_ uint, newLevel uint) {
+ cc.AddXP(ctx, s, e.Member, exp.VocalXP(uint(timeInVocal)), func(_ uint, newLevel uint) {
cfg := config.GetGuildConfig(e.GuildID)
if len(cfg.FallbackChannel) == 0 {
return
@@ -113,12 +113,12 @@ func onDisconnect(s bot.Session, e *event.VoiceStateUpdate) {
})
}
-func OnLeave(_ context.Context, s bot.Session, e *event.GuildMemberRemove) {
+func OnLeave(ctx context.Context, s bot.Session, e *event.GuildMemberRemove) {
s.Logger().Debug("leave event", "user", e.User.Username)
if e.User.Bot {
return
}
- c := user.GetCopaing(e.User.ID, e.GuildID)
+ c := user.GetCopaing(ctx, e.User.ID, e.GuildID).Copaing(ctx)
err := gokord.DB.
Where("copaing_id = ? and guild_id = ?", c.ID, e.GuildID).
Delete(&user.CopaingXP{}).
@@ -126,7 +126,7 @@ func OnLeave(_ context.Context, s bot.Session, e *event.GuildMemberRemove) {
if err != nil {
s.Logger().Error("deleting user xp from DB", "user", e.User.Username, "guild", e.GuildID)
}
- if err = c.Delete(); err != nil {
+ if err = c.Delete(ctx); err != nil {
s.Logger().Error("deleting user from DB", "user", e.User.Username, "guild", e.GuildID)
}
}