diff options
| -rw-r--r-- | commands/config.go | 27 | ||||
| -rw-r--r-- | commands/credits.go | 5 | ||||
| -rw-r--r-- | commands/rank.go | 5 | ||||
| -rw-r--r-- | commands/reset.go | 7 | ||||
| -rw-r--r-- | commands/stats.go | 13 | ||||
| -rw-r--r-- | commands/top.go | 5 | ||||
| -rw-r--r-- | config/channel.go | 7 | ||||
| -rw-r--r-- | config/guild.go | 15 | ||||
| -rw-r--r-- | config/xp_reduce.go | 7 | ||||
| -rw-r--r-- | config/xp_role.go | 35 | ||||
| -rw-r--r-- | events.go | 13 | ||||
| -rw-r--r-- | go.mod | 4 | ||||
| -rw-r--r-- | go.sum | 4 | ||||
| -rw-r--r-- | main.go | 50 | ||||
| -rw-r--r-- | user/level.go | 9 | ||||
| -rw-r--r-- | user/xp.go | 4 |
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, ) { @@ -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 @@ -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 @@ -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= @@ -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) } @@ -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) |
