aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--commands/config.go27
-rw-r--r--commands/credits.go5
-rw-r--r--commands/rank.go5
-rw-r--r--commands/reset.go7
-rw-r--r--commands/stats.go13
-rw-r--r--commands/top.go5
-rw-r--r--config/channel.go7
-rw-r--r--config/guild.go15
-rw-r--r--config/xp_reduce.go7
-rw-r--r--config/xp_role.go35
-rw-r--r--events.go13
-rw-r--r--go.mod4
-rw-r--r--go.sum4
-rw-r--r--main.go50
-rw-r--r--user/level.go9
-rw-r--r--user/xp.go4
16 files changed, 116 insertions, 94 deletions
diff --git a/commands/config.go b/commands/config.go
index fc15a5c..7ffd4af 100644
--- a/commands/config.go
+++ b/commands/config.go
@@ -8,10 +8,11 @@ import (
"git.anhgelus.world/anhgelus/les-copaings-bot/config"
"git.anhgelus.world/anhgelus/les-copaings-bot/exp"
"github.com/anhgelus/gokord/cmd"
- discordgo "github.com/nyttikord/gokord"
+ "github.com/nyttikord/gokord/bot"
"github.com/nyttikord/gokord/channel"
"github.com/nyttikord/gokord/component"
"github.com/nyttikord/gokord/discord/types"
+ "github.com/nyttikord/gokord/event"
"github.com/nyttikord/gokord/interaction"
)
@@ -20,7 +21,7 @@ const (
OpenConfig = "config"
)
-func ConfigResponse(i *discordgo.InteractionCreate) *interaction.Response {
+func ConfigResponse(i *event.InteractionCreate) *interaction.Response {
cfg := config.GetGuildConfig(i.GuildID)
roles := ""
l := len(cfg.XpRoles) - 1
@@ -38,7 +39,7 @@ func ConfigResponse(i *discordgo.InteractionCreate) *interaction.Response {
roles = "Aucun rôle configuré"
}
disChans := strings.Split(cfg.DisabledChannels, ";")
- disChansDefault := []component.SelectMenuDefaultValue{}
+ var disChansDefault []component.SelectMenuDefaultValue
for _, c := range disChans {
if c != "" {
disChansDefault = append(disChansDefault, component.SelectMenuDefaultValue{
@@ -47,7 +48,7 @@ func ConfigResponse(i *discordgo.InteractionCreate) *interaction.Response {
})
}
}
- defaultChan := []component.SelectMenuDefaultValue{}
+ var defaultChan []component.SelectMenuDefaultValue
if len(cfg.FallbackChannel) > 0 {
defaultChan = append(defaultChan, component.SelectMenuDefaultValue{
ID: cfg.FallbackChannel,
@@ -121,21 +122,21 @@ func ConfigResponse(i *discordgo.InteractionCreate) *interaction.Response {
}
func ConfigCommand(
- session *discordgo.Session,
- i *discordgo.InteractionCreate,
+ s bot.Session,
+ i *event.InteractionCreate,
_ cmd.OptionMap,
resp *cmd.ResponseBuilder,
) {
- err := session.InteractionAPI().Respond(i.Interaction, ConfigResponse(i))
+ err := s.InteractionAPI().Respond(i.Interaction, ConfigResponse(i))
if err != nil {
- session.LogError(err, "config/guild.go - Sending config")
+ s.LogError(err, "config/guild.go - Sending config")
}
}
func ConfigMessageComponent(
- s *discordgo.Session,
- i *discordgo.InteractionCreate,
+ s bot.Session,
+ i *event.InteractionCreate,
_ *interaction.MessageComponentData,
_ *cmd.ResponseBuilder,
) {
@@ -149,10 +150,10 @@ func ConfigMessageComponent(
}
func ConfigModal(
- s *discordgo.Session,
- i *discordgo.InteractionCreate,
+ s bot.Session,
+ i *event.InteractionCreate,
_ *interaction.ModalSubmitData,
- resp *cmd.ResponseBuilder,
+ _ *cmd.ResponseBuilder,
) {
response := ConfigResponse(i)
response.Type = types.InteractionResponseUpdateMessage
diff --git a/commands/credits.go b/commands/credits.go
index e5fd711..b303834 100644
--- a/commands/credits.go
+++ b/commands/credits.go
@@ -3,10 +3,11 @@ package commands
import (
"github.com/anhgelus/gokord"
"github.com/anhgelus/gokord/cmd"
- discordgo "github.com/nyttikord/gokord"
+ "github.com/nyttikord/gokord/bot"
+ "github.com/nyttikord/gokord/event"
)
-func Credits(s *discordgo.Session, i *discordgo.InteractionCreate, _ cmd.OptionMap, resp *cmd.ResponseBuilder) {
+func Credits(s bot.Session, _ *event.InteractionCreate, _ cmd.OptionMap, resp *cmd.ResponseBuilder) {
msg := "**Les Copaings**, le bot gérant les serveurs privés de [anhgelus](<https://anhgelus.world/>).\n"
msg += "Code source : <https://git.anhgelus.world/anhgelus/les-copaings-bot>\n\n"
msg += "Host du bot : " + gokord.BaseCfg.GetAuthor() + ".\n\n"
diff --git a/commands/rank.go b/commands/rank.go
index d3a9f70..8f3090f 100644
--- a/commands/rank.go
+++ b/commands/rank.go
@@ -6,10 +6,11 @@ import (
"git.anhgelus.world/anhgelus/les-copaings-bot/exp"
"git.anhgelus.world/anhgelus/les-copaings-bot/user"
"github.com/anhgelus/gokord/cmd"
- discordgo "github.com/nyttikord/gokord"
+ "github.com/nyttikord/gokord/bot"
+ "github.com/nyttikord/gokord/event"
)
-func Rank(s *discordgo.Session, i *discordgo.InteractionCreate, optMap cmd.OptionMap, resp *cmd.ResponseBuilder) {
+func Rank(s bot.Session, i *event.InteractionCreate, optMap cmd.OptionMap, resp *cmd.ResponseBuilder) {
c := user.GetCopaing(i.Member.User.ID, i.GuildID) // current user = member who used /rank
msg := "Votre niveau"
m := i.Member
diff --git a/commands/reset.go b/commands/reset.go
index 77561c1..7caa238 100644
--- a/commands/reset.go
+++ b/commands/reset.go
@@ -4,10 +4,11 @@ import (
"git.anhgelus.world/anhgelus/les-copaings-bot/user"
"github.com/anhgelus/gokord"
"github.com/anhgelus/gokord/cmd"
- discordgo "github.com/nyttikord/gokord"
+ "github.com/nyttikord/gokord/bot"
+ "github.com/nyttikord/gokord/event"
)
-func Reset(s *discordgo.Session, i *discordgo.InteractionCreate, _ cmd.OptionMap, resp *cmd.ResponseBuilder) {
+func Reset(s bot.Session, i *event.InteractionCreate, _ cmd.OptionMap, resp *cmd.ResponseBuilder) {
var copaings []*user.Copaing
gokord.DB.Where("guild_id = ?", i.GuildID).Delete(&copaings)
if err := resp.IsEphemeral().SetMessage("L'XP a été reset.").Send(); err != nil {
@@ -15,7 +16,7 @@ func Reset(s *discordgo.Session, i *discordgo.InteractionCreate, _ cmd.OptionMap
}
}
-func ResetUser(s *discordgo.Session, i *discordgo.InteractionCreate, optMap cmd.OptionMap, resp *cmd.ResponseBuilder) {
+func ResetUser(s bot.Session, i *event.InteractionCreate, optMap cmd.OptionMap, resp *cmd.ResponseBuilder) {
resp.IsEphemeral()
v, ok := optMap["user"]
if !ok {
diff --git a/commands/stats.go b/commands/stats.go
index fcb0c29..2c22f0d 100644
--- a/commands/stats.go
+++ b/commands/stats.go
@@ -16,8 +16,9 @@ import (
"github.com/anhgelus/gokord"
"github.com/anhgelus/gokord/cmd"
"github.com/jackc/pgx/v5/pgtype"
- discordgo "github.com/nyttikord/gokord"
+ "github.com/nyttikord/gokord/bot"
"github.com/nyttikord/gokord/channel"
+ "github.com/nyttikord/gokord/event"
"gonum.org/v1/plot"
"gonum.org/v1/plot/plotter"
"gonum.org/v1/plot/vg"
@@ -45,7 +46,7 @@ var colors = []color.RGBA{
{193, 18, 31, 255},
}
-func Stats(s *discordgo.Session, i *discordgo.InteractionCreate, opt cmd.OptionMap, resp *cmd.ResponseBuilder) {
+func Stats(s bot.Session, i *event.InteractionCreate, opt cmd.OptionMap, resp *cmd.ResponseBuilder) {
cfg := config.GetGuildConfig(i.GuildID)
days := 15
if gokord.Debug {
@@ -97,13 +98,13 @@ func Stats(s *discordgo.Session, i *discordgo.InteractionCreate, opt cmd.OptionM
}()
}
-func statsAll(s *discordgo.Session, i *discordgo.InteractionCreate, days int) (io.WriterTo, error) {
+func statsAll(s bot.Session, i *event.InteractionCreate, days int) (io.WriterTo, error) {
return stats(s, i, days, func(before, after string) *gorm.DB {
return gokord.DB.Raw(before+"WHERE guild_id = ? and created_at > ?"+after, i.GuildID, exp.TimeStampNDaysBefore(uint(days)))
})
}
-func statsMember(s *discordgo.Session, i *discordgo.InteractionCreate, days int, discordID string) (io.WriterTo, error) {
+func statsMember(s bot.Session, i *event.InteractionCreate, days int, discordID string) (io.WriterTo, error) {
_, err := s.GuildAPI().Member(i.GuildID, discordID)
if err != nil {
return nil, err
@@ -116,7 +117,7 @@ func statsMember(s *discordgo.Session, i *discordgo.InteractionCreate, days int,
})
}
-func stats(s *discordgo.Session, i *discordgo.InteractionCreate, days int, execSql func(before, after string) *gorm.DB) (io.WriterTo, error) {
+func stats(s bot.Session, i *event.InteractionCreate, days int, execSql func(before, after string) *gorm.DB) (io.WriterTo, error) {
var rawData []*data
if gokord.Debug {
var rawCopaingData []*user.CopaingXP
@@ -193,7 +194,7 @@ func stats(s *discordgo.Session, i *discordgo.InteractionCreate, days int, execS
return generatePlot(s, i, copaings, stats)
}
-func generatePlot(s *discordgo.Session, i *discordgo.InteractionCreate, copaings map[int]*user.Copaing, stats map[int][]plotter.XY) (io.WriterTo, error) {
+func generatePlot(s bot.Session, i *event.InteractionCreate, copaings map[int]*user.Copaing, stats map[int][]plotter.XY) (io.WriterTo, error) {
p := plot.New()
fontSizeTitle := vg.Length(16)
fontSize := vg.Length(12)
diff --git a/commands/top.go b/commands/top.go
index 195ee9b..751f7fa 100644
--- a/commands/top.go
+++ b/commands/top.go
@@ -8,11 +8,12 @@ import (
"git.anhgelus.world/anhgelus/les-copaings-bot/exp"
"git.anhgelus.world/anhgelus/les-copaings-bot/user"
"github.com/anhgelus/gokord/cmd"
- discordgo "github.com/nyttikord/gokord"
+ "github.com/nyttikord/gokord/bot"
"github.com/nyttikord/gokord/channel"
+ "github.com/nyttikord/gokord/event"
)
-func Top(s *discordgo.Session, i *discordgo.InteractionCreate, _ cmd.OptionMap, resp *cmd.ResponseBuilder) {
+func Top(s bot.Session, i *event.InteractionCreate, _ cmd.OptionMap, resp *cmd.ResponseBuilder) {
err := resp.IsDeferred().Send()
if err != nil {
s.LogError(err, "sending deferred")
diff --git a/config/channel.go b/config/channel.go
index 723ec38..1ee6974 100644
--- a/config/channel.go
+++ b/config/channel.go
@@ -4,7 +4,8 @@ import (
"strings"
"github.com/anhgelus/gokord/cmd"
- discordgo "github.com/nyttikord/gokord"
+ "github.com/nyttikord/gokord/bot"
+ "github.com/nyttikord/gokord/event"
"github.com/nyttikord/gokord/interaction"
)
@@ -19,7 +20,7 @@ const (
DisChannelDelSet = "disabled_channel_del_set"
)
-func HandleModifyFallbackChannel(s *discordgo.Session, i *discordgo.InteractionCreate, data *interaction.MessageComponentData, resp *cmd.ResponseBuilder) bool {
+func HandleModifyFallbackChannel(s bot.Session, i *event.InteractionCreate, data *interaction.MessageComponentData, _ *cmd.ResponseBuilder) bool {
cfg := GetGuildConfig(i.GuildID)
var channelID string
if len(data.Values) > 0 {
@@ -34,7 +35,7 @@ func HandleModifyFallbackChannel(s *discordgo.Session, i *discordgo.InteractionC
return true
}
-func HandleModifyDisChannel(s *discordgo.Session, i *discordgo.InteractionCreate, data *interaction.MessageComponentData, resp *cmd.ResponseBuilder) bool {
+func HandleModifyDisChannel(s bot.Session, i *event.InteractionCreate, data *interaction.MessageComponentData, _ *cmd.ResponseBuilder) bool {
cfg := GetGuildConfig(i.GuildID)
cfg.DisabledChannels = strings.Join(data.Values, ";")
err := cfg.Save()
diff --git a/config/guild.go b/config/guild.go
index 9cdb7e4..10c64fd 100644
--- a/config/guild.go
+++ b/config/guild.go
@@ -4,7 +4,7 @@ import (
"strings"
"github.com/anhgelus/gokord"
- discordgo "github.com/nyttikord/gokord"
+ "github.com/nyttikord/gokord/bot"
)
type GuildConfig struct {
@@ -32,18 +32,21 @@ func (cfg *GuildConfig) Save() error {
return gokord.DB.Save(cfg).Error
}
-func (cfg *GuildConfig) IsDisabled(s *discordgo.Session, channelID string) bool {
+func (cfg *GuildConfig) IsDisabled(s bot.Session, channelID string) bool {
ok := true
for channelID != "" && ok {
ok = !strings.Contains(cfg.DisabledChannels, channelID)
- c, err := s.State.Channel(channelID)
+ c, err := s.ChannelAPI().State.Channel(channelID)
if err != nil {
- s.LogError(err, "Unable to find channel %s in state", c)
+ s.LogError(err, "unable to find channel %s in state", c)
c, err = s.ChannelAPI().Channel(channelID)
if err == nil {
- s.State.ChannelAdd(c)
+ err = s.ChannelAPI().State.ChannelAdd(c)
+ if err != nil {
+ s.LogError(err, "unable to add channel %s to state", c)
+ }
} else {
- s.LogError(err, "Unable to fetch channel %s", s)
+ s.LogError(err, "unable to fetch channel %s", s)
return false
}
}
diff --git a/config/xp_reduce.go b/config/xp_reduce.go
index bf04bf0..c3a3e10 100644
--- a/config/xp_reduce.go
+++ b/config/xp_reduce.go
@@ -5,9 +5,10 @@ import (
"strconv"
"github.com/anhgelus/gokord/cmd"
- discordgo "github.com/nyttikord/gokord"
+ "github.com/nyttikord/gokord/bot"
"github.com/nyttikord/gokord/component"
"github.com/nyttikord/gokord/discord/types"
+ "github.com/nyttikord/gokord/event"
"github.com/nyttikord/gokord/interaction"
)
@@ -16,7 +17,7 @@ const (
TimeReduceSet = "time_reduce_set"
)
-func HandleModifyPeriodicReduceCommand(s *discordgo.Session, i *discordgo.InteractionCreate, _ *interaction.MessageComponentData, resp *cmd.ResponseBuilder) {
+func HandleModifyPeriodicReduceCommand(s bot.Session, i *event.InteractionCreate, _ *interaction.MessageComponentData, _ *cmd.ResponseBuilder) {
cfg := GetGuildConfig(i.GuildID)
response := interaction.Response{
Type: types.InteractionResponseModal,
@@ -48,7 +49,7 @@ func HandleModifyPeriodicReduceCommand(s *discordgo.Session, i *discordgo.Intera
}
}
-func HandleTimeReduceSet(s *discordgo.Session, i *discordgo.InteractionCreate, data *interaction.ModalSubmitData, resp *cmd.ResponseBuilder) bool {
+func HandleTimeReduceSet(s bot.Session, i *event.InteractionCreate, data *interaction.ModalSubmitData, resp *cmd.ResponseBuilder) bool {
v := data.Components[0].(*component.Label).Component.(*component.TextInput).Value
days, err := strconv.Atoi(v)
if err != nil {
diff --git a/config/xp_role.go b/config/xp_role.go
index d55e6d3..42fe9f4 100644
--- a/config/xp_role.go
+++ b/config/xp_role.go
@@ -8,10 +8,11 @@ import (
"git.anhgelus.world/anhgelus/les-copaings-bot/exp"
"github.com/anhgelus/gokord"
"github.com/anhgelus/gokord/cmd"
- discordgo "github.com/nyttikord/gokord"
+ "github.com/nyttikord/gokord/bot"
"github.com/nyttikord/gokord/channel"
"github.com/nyttikord/gokord/component"
"github.com/nyttikord/gokord/discord/types"
+ "github.com/nyttikord/gokord/event"
"github.com/nyttikord/gokord/interaction"
)
@@ -34,8 +35,8 @@ const (
)
func HandleXpRole(
- s *discordgo.Session,
- i *discordgo.InteractionCreate,
+ s bot.Session,
+ i *event.InteractionCreate,
_ *interaction.MessageComponentData,
_ *cmd.ResponseBuilder,
) {
@@ -96,8 +97,8 @@ func HandleXpRole(
}
func HandleXpRoleNew(
- s *discordgo.Session,
- i *discordgo.InteractionCreate,
+ s bot.Session,
+ i *event.InteractionCreate,
_ *interaction.MessageComponentData,
_ *cmd.ResponseBuilder,
) {
@@ -138,8 +139,8 @@ func HandleXpRoleNew(
}
func HandleXpRoleEdit(
- s *discordgo.Session,
- i *discordgo.InteractionCreate,
+ s bot.Session,
+ i *event.InteractionCreate,
_ *interaction.MessageComponentData,
parameters []string, resp *cmd.ResponseBuilder,
) {
@@ -203,8 +204,8 @@ func HandleXpRoleEdit(
}
func HandleXpRoleEditRole(
- s *discordgo.Session,
- i *discordgo.InteractionCreate,
+ s bot.Session,
+ i *event.InteractionCreate,
data *interaction.MessageComponentData,
parameters []string, resp *cmd.ResponseBuilder,
) {
@@ -238,8 +239,8 @@ func HandleXpRoleEditRole(
}
func HandleXpRoleEditLevelStart(
- s *discordgo.Session,
- i *discordgo.InteractionCreate,
+ s bot.Session,
+ i *event.InteractionCreate,
_ *interaction.MessageComponentData,
parameters []string,
_ *cmd.ResponseBuilder,
@@ -292,8 +293,8 @@ func HandleXpRoleEditLevelStart(
}
func HandleXpRoleEditLevel(
- s *discordgo.Session,
- i *discordgo.InteractionCreate,
+ s bot.Session,
+ i *event.InteractionCreate,
data *interaction.ModalSubmitData,
parameters []string,
resp *cmd.ResponseBuilder,
@@ -344,8 +345,8 @@ func HandleXpRoleEditLevel(
}
func HandleXpRoleDel(
- s *discordgo.Session,
- i *discordgo.InteractionCreate,
+ s bot.Session,
+ i *event.InteractionCreate,
_ *interaction.MessageComponentData,
dynamicValues []string,
resp *cmd.ResponseBuilder,
@@ -379,8 +380,8 @@ func HandleXpRoleDel(
}
func HandleXpRoleAdd(
- s *discordgo.Session,
- i *discordgo.InteractionCreate,
+ s bot.Session,
+ i *event.InteractionCreate,
data *interaction.ModalSubmitData,
resp *cmd.ResponseBuilder,
) {
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
diff --git a/go.mod b/go.mod
index b59127f..5d74727 100644
--- a/go.mod
+++ b/go.mod
@@ -5,10 +5,10 @@ go 1.24.0
toolchain go1.24.6
require (
- github.com/anhgelus/gokord v0.12.0
+ github.com/anhgelus/gokord v0.12.1-0.20250926161635-21b1b138fd90
github.com/jackc/pgx/v5 v5.7.5
github.com/joho/godotenv v1.5.1
- github.com/nyttikord/gokord v0.31.0
+ github.com/nyttikord/gokord v0.31.1-0.20250926154959-93603cbc1df5
github.com/pelletier/go-toml/v2 v2.2.4
golang.org/x/image v0.30.0
gonum.org/v1/plot v0.16.0
diff --git a/go.sum b/go.sum
index 0ba1236..1f11bf6 100644
--- a/go.sum
+++ b/go.sum
@@ -19,6 +19,8 @@ github.com/ajstarks/svgo v0.0.0-20211024235047-1546f124cd8b h1:slYM766cy2nI3BwyR
github.com/ajstarks/svgo v0.0.0-20211024235047-1546f124cd8b/go.mod h1:1KcenG0jGWcpt8ov532z81sp/kMMUG485J2InIOyADM=
github.com/anhgelus/gokord v0.12.0 h1:6315krG631amMYRBXkp0Uz7voBtbgEHJZKsNgulu+18=
github.com/anhgelus/gokord v0.12.0/go.mod h1:AUguJsHtnNOozqQY8SCRDfXfoFX6c+LWL7lXNoeIRCk=
+github.com/anhgelus/gokord v0.12.1-0.20250926161635-21b1b138fd90 h1:SNWUcYRXE5lgs9ujd+sLxpZKQFw6X2AfkievuyfzpAg=
+github.com/anhgelus/gokord v0.12.1-0.20250926161635-21b1b138fd90/go.mod h1:pcu6meTQQZRpDPhWuaJuDqa2NJ7iUPuVRD7+ffPmcmg=
github.com/bsm/ginkgo/v2 v2.12.0 h1:Ny8MWAHyOepLGlLKYmXG4IEkioBysk6GpaRTLC8zwWs=
github.com/bsm/ginkgo/v2 v2.12.0/go.mod h1:SwYbGRRDovPVboqFv0tPTcG1sN61LM1Z4ARdbAV9g4c=
github.com/bsm/gomega v1.27.10 h1:yeMWxP2pV2fG3FgAODIY8EiRE3dy0aeFYt4l7wh6yKA=
@@ -53,6 +55,8 @@ github.com/joho/godotenv v1.5.1/go.mod h1:f4LDr5Voq0i2e/R5DDNOoa2zzDfwtkZa6DnEwA
github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck=
github.com/nyttikord/gokord v0.31.0 h1:64DeVCTQpSWj8/RtBm0GtHeh0Gqo3arJGtrSIn5/U0I=
github.com/nyttikord/gokord v0.31.0/go.mod h1:Oi0y5sfiYa+hVuV5ZSJ9UMWAGkcaLOhM7xB1TiCdX3U=
+github.com/nyttikord/gokord v0.31.1-0.20250926154959-93603cbc1df5 h1:cXvcOHc7C57EFK8fLK5XWb+JJN2k/akpRklDqHsP0zg=
+github.com/nyttikord/gokord v0.31.1-0.20250926154959-93603cbc1df5/go.mod h1:Oi0y5sfiYa+hVuV5ZSJ9UMWAGkcaLOhM7xB1TiCdX3U=
github.com/pelletier/go-toml/v2 v2.2.4 h1:mye9XuhQ6gvn5h28+VilKrrPoQVanw5PMw/TB0t5Ec4=
github.com/pelletier/go-toml/v2 v2.2.4/go.mod h1:2gIqNv+qfxSVS7cM2xJQKtLSTLUE9V8t9Stt+h56mCY=
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
diff --git a/main.go b/main.go
index 3b7495a..f1555f0 100644
--- a/main.go
+++ b/main.go
@@ -17,8 +17,10 @@ import (
"github.com/anhgelus/gokord/cmd"
"github.com/joho/godotenv"
discordgo "github.com/nyttikord/gokord"
+ "github.com/nyttikord/gokord/bot"
"github.com/nyttikord/gokord/discord"
"github.com/nyttikord/gokord/discord/types"
+ "github.com/nyttikord/gokord/event"
"github.com/nyttikord/gokord/interaction"
"github.com/nyttikord/gokord/logger"
"golang.org/x/image/font/opentype"
@@ -69,15 +71,15 @@ func init() {
func handleDynamicMessageComponent(
b *gokord.Bot,
handler func(
- *discordgo.Session,
- *discordgo.InteractionCreate,
+ bot.Session,
+ *event.InteractionCreate,
*interaction.MessageComponentData,
[]string, *cmd.ResponseBuilder,
),
pattern string,
) {
compiledPattern := regexp.MustCompile(pattern)
- b.AddHandler(func(s *discordgo.Session, i *discordgo.InteractionCreate) {
+ b.AddHandler(func(s bot.Session, i *event.InteractionCreate) {
if i.Type != types.InteractionMessageComponent {
return
}
@@ -95,8 +97,8 @@ func handleDynamicMessageComponent(
func handleDynamicModalComponent(
b *gokord.Bot,
handler func(
- *discordgo.Session,
- *discordgo.InteractionCreate,
+ bot.Session,
+ *event.InteractionCreate,
*interaction.ModalSubmitData,
[]string,
*cmd.ResponseBuilder,
@@ -104,7 +106,7 @@ func handleDynamicModalComponent(
pattern string,
) {
compiledPattern := regexp.MustCompile(pattern)
- b.AddHandler(func(s *discordgo.Session, i *discordgo.InteractionCreate) {
+ b.AddHandler(func(s bot.Session, i *event.InteractionCreate) {
if i.Type != types.InteractionModalSubmit {
return
}
@@ -185,7 +187,7 @@ func main() {
panic(err)
}
- bot := gokord.Bot{
+ b := gokord.Bot{
Token: token,
Status: []*gokord.Status{
{
@@ -235,41 +237,41 @@ func main() {
}
// interaction: /config
- bot.HandleMessageComponent(commands.ConfigMessageComponent, commands.OpenConfig)
+ b.HandleMessageComponent(commands.ConfigMessageComponent, commands.OpenConfig)
// xp role related
- bot.HandleMessageComponent(config.HandleXpRole, config.ModifyXpRole)
- bot.HandleMessageComponent(config.HandleXpRoleNew, config.XpRoleNew)
- bot.HandleModal(config.HandleXpRoleAdd, config.XpRoleAdd)
- handleDynamicMessageComponent(&bot, config.HandleXpRoleEdit, config.XpRoleEditPattern)
- handleDynamicMessageComponent(&bot, config.HandleXpRoleEditRole, config.XpRoleEditRolePattern)
- handleDynamicMessageComponent(&bot, config.HandleXpRoleEditLevelStart, config.XpRoleEditLevelStartPattern)
- handleDynamicModalComponent(&bot, config.HandleXpRoleEditLevel, config.XpRoleEditLevelPattern)
- handleDynamicMessageComponent(&bot, config.HandleXpRoleDel, config.XpRoleDel)
+ b.HandleMessageComponent(config.HandleXpRole, config.ModifyXpRole)
+ b.HandleMessageComponent(config.HandleXpRoleNew, config.XpRoleNew)
+ b.HandleModal(config.HandleXpRoleAdd, config.XpRoleAdd)
+ handleDynamicMessageComponent(&b, config.HandleXpRoleEdit, config.XpRoleEditPattern)
+ handleDynamicMessageComponent(&b, config.HandleXpRoleEditRole, config.XpRoleEditRolePattern)
+ handleDynamicMessageComponent(&b, config.HandleXpRoleEditLevelStart, config.XpRoleEditLevelStartPattern)
+ handleDynamicModalComponent(&b, config.HandleXpRoleEditLevel, config.XpRoleEditLevelPattern)
+ handleDynamicMessageComponent(&b, config.HandleXpRoleDel, config.XpRoleDel)
// channel related
- bot.HandleMessageComponent(func(s *discordgo.Session, i *discordgo.InteractionCreate, data *interaction.MessageComponentData, resp *cmd.ResponseBuilder) {
+ b.HandleMessageComponent(func(s bot.Session, i *event.InteractionCreate, data *interaction.MessageComponentData, resp *cmd.ResponseBuilder) {
if config.HandleModifyFallbackChannel(s, i, data, resp) {
commands.ConfigMessageComponent(s, i, data, resp)
}
}, config.ModifyFallbackChannel)
- bot.HandleMessageComponent(func(s *discordgo.Session, i *discordgo.InteractionCreate, data *interaction.MessageComponentData, resp *cmd.ResponseBuilder) {
+ b.HandleMessageComponent(func(s bot.Session, i *event.InteractionCreate, data *interaction.MessageComponentData, resp *cmd.ResponseBuilder) {
if config.HandleModifyDisChannel(s, i, data, resp) {
commands.ConfigMessageComponent(s, i, data, resp)
}
}, config.ModifyDisChannel)
// reduce related
- bot.HandleMessageComponent(config.HandleModifyPeriodicReduceCommand, config.ModifyTimeReduce)
- bot.HandleModal(func(s *discordgo.Session, i *discordgo.InteractionCreate, data *interaction.ModalSubmitData, resp *cmd.ResponseBuilder) {
+ b.HandleMessageComponent(config.HandleModifyPeriodicReduceCommand, config.ModifyTimeReduce)
+ b.HandleModal(func(s bot.Session, i *event.InteractionCreate, data *interaction.ModalSubmitData, resp *cmd.ResponseBuilder) {
if config.HandleTimeReduceSet(s, i, data, resp) {
commands.ConfigModal(s, i, data, resp)
}
}, config.TimeReduceSet)
// xp handlers
- bot.AddHandler(OnMessage)
- bot.AddHandler(OnVoiceUpdate)
- bot.AddHandler(OnLeave)
+ b.AddHandler(OnMessage)
+ b.AddHandler(OnVoiceUpdate)
+ b.AddHandler(OnLeave)
- bot.Start()
+ b.Start()
if stopPeriodicReducer != nil {
stopPeriodicReducer <- true
diff --git a/user/level.go b/user/level.go
index e11ac03..88971e6 100644
--- a/user/level.go
+++ b/user/level.go
@@ -9,10 +9,11 @@ import (
"git.anhgelus.world/anhgelus/les-copaings-bot/exp"
"github.com/anhgelus/gokord"
discordgo "github.com/nyttikord/gokord"
+ "github.com/nyttikord/gokord/bot"
"github.com/nyttikord/gokord/user"
)
-func onNewLevel(s *discordgo.Session, m *user.Member, level uint) {
+func onNewLevel(s bot.Session, m *user.Member, level uint) {
cfg := config.GetGuildConfig(m.GuildID)
xpForLevel := exp.LevelXP(level)
for _, role := range cfg.XpRoles {
@@ -68,7 +69,9 @@ func PeriodicReducer(s *discordgo.Session) {
}()
}
wg.Wait()
- for _, g := range s.State.Guilds {
+ i := 0
+ for g := range s.GuildAPI().State.Guilds() {
+ i++
wg.Add(1)
go func() {
defer wg.Done()
@@ -99,5 +102,5 @@ func PeriodicReducer(s *discordgo.Session) {
c.OnNewLevel(s, exp.Level(xp))
}
}
- s.LogDebug("Periodic reduce finished for %d guilds", len(s.State.Guilds))
+ s.LogDebug("Periodic reduce finished for %d guilds", i)
}
diff --git a/user/xp.go b/user/xp.go
index 96a8a27..16ba0ad 100644
--- a/user/xp.go
+++ b/user/xp.go
@@ -7,7 +7,7 @@ import (
"git.anhgelus.world/anhgelus/les-copaings-bot/config"
"git.anhgelus.world/anhgelus/les-copaings-bot/exp"
"github.com/anhgelus/gokord"
- discordgo "github.com/nyttikord/gokord"
+ "github.com/nyttikord/gokord/bot"
"github.com/nyttikord/gokord/logger"
"github.com/nyttikord/gokord/user"
)
@@ -25,7 +25,7 @@ func (c *cXP) GetXP() uint {
return c.Cxp
}
-func (c *Copaing) AddXP(s *discordgo.Session, m *user.Member, xp uint, fn func(uint, uint)) {
+func (c *Copaing) AddXP(s bot.Session, m *user.Member, xp uint, fn func(uint, uint)) {
old, err := c.GetXP()
if err != nil {
s.LogError(err, "getting xp for %s in %s", m.DisplayName(), c.GuildID)