build(gokord): upgrade to latest version

This commit is contained in:
Anhgelus Morhtuuzh 2025-08-06 02:22:06 +02:00
parent d72004ae14
commit 5a8da1eaeb
Signed by: anhgelus
GPG key ID: CAD341EFA92DDDE5
13 changed files with 136 additions and 146 deletions

View file

@ -3,7 +3,8 @@ package commands
import (
"fmt"
"github.com/anhgelus/gokord"
"github.com/anhgelus/gokord/utils"
"github.com/anhgelus/gokord/cmd"
"github.com/anhgelus/gokord/logger"
"github.com/anhgelus/les-copaings-bot/config"
"github.com/anhgelus/les-copaings-bot/exp"
"github.com/bwmarrin/discordgo"
@ -33,7 +34,7 @@ var (
configModifyMap = map[string]uint{}
)
func Config(s *discordgo.Session, i *discordgo.InteractionCreate, optMap utils.OptionMap, resp *utils.ResponseBuilder) {
func Config(s *discordgo.Session, i *discordgo.InteractionCreate, _ cmd.OptionMap, resp *cmd.ResponseBuilder) {
cfg := config.GetGuildConfig(i.GuildID)
roles := ""
l := len(cfg.XpRoles) - 1
@ -69,7 +70,7 @@ func Config(s *discordgo.Session, i *discordgo.InteractionCreate, optMap utils.O
err := resp.AddEmbed(&discordgo.MessageEmbed{
Type: discordgo.EmbedTypeRich,
Title: "Config",
Color: utils.Success,
Color: 0x10E6AD,
Fields: []*discordgo.MessageEmbedField{
{
Name: "Salon par défaut",
@ -127,7 +128,7 @@ func Config(s *discordgo.Session, i *discordgo.InteractionCreate, optMap utils.O
},
}}).IsEphemeral().Send()
if err != nil {
utils.SendAlert("config/guild.go - Sending config", err.Error())
logger.Alert("config/guild.go - Sending config", err.Error())
}
}
@ -138,7 +139,7 @@ func ConfigXP(s *discordgo.Session, i *discordgo.InteractionCreate) {
cfg := config.GetGuildConfig(i.GuildID)
resp := utils.NewResponseBuilder(s, i)
resp := cmd.NewResponseBuilder(s, i)
msgData := i.MessageComponentData()
switch msgData.CustomID {
@ -173,7 +174,7 @@ func ConfigXP(s *discordgo.Session, i *discordgo.InteractionCreate) {
},
}}).Send()
if err != nil {
utils.SendAlert("config/guild.go - Sending config", err.Error())
logger.Alert("config/guild.go - Sending config", err.Error())
}
case XpRoleAdd, XpRoleEdit:
cID := XpRoleAddLevel
@ -195,7 +196,7 @@ func ConfigXP(s *discordgo.Session, i *discordgo.InteractionCreate) {
}}).
Send()
if err != nil {
utils.SendAlert("config/guild.go - Sending modal to add", err.Error())
logger.Alert("config/guild.go - Sending modal to add", err.Error())
}
case XpRoleAddRole:
roleId := msgData.Values[0]
@ -203,7 +204,7 @@ func ConfigXP(s *discordgo.Session, i *discordgo.InteractionCreate) {
if r.RoleID == roleId {
err := resp.SetMessage("Le rôle est déjà présent dans la config").Send()
if err != nil {
utils.SendAlert("commands/config.go - Role already in config", err.Error())
logger.Alert("commands/config.go - Role already in config", err.Error())
}
return
}
@ -214,7 +215,7 @@ func ConfigXP(s *discordgo.Session, i *discordgo.InteractionCreate) {
})
err := cfg.Save()
if err != nil {
utils.SendAlert(
logger.Alert(
"commands/config.go - Saving config",
err.Error(),
"guild_id", i.GuildID,
@ -223,7 +224,7 @@ func ConfigXP(s *discordgo.Session, i *discordgo.InteractionCreate) {
)
}
if err = resp.IsEphemeral().SetMessage("Rôle ajouté.").Send(); err != nil {
utils.SendAlert("commands/config.go - Sending success", err.Error())
logger.Alert("commands/config.go - Sending success", err.Error())
}
case XpRoleEditRole:
roleId := msgData.Values[0]
@ -231,14 +232,14 @@ func ConfigXP(s *discordgo.Session, i *discordgo.InteractionCreate) {
if r == nil {
err := resp.SetMessage("Le rôle n'a pas été trouvé dans la config.").Send()
if err != nil {
utils.SendAlert("commands/config.go - Role not found (edit)", err.Error())
logger.Alert("commands/config.go - Role not found (edit)", err.Error())
}
return
}
r.XP = configModifyMap[getKeyConfigRole(i)]
err := gokord.DB.Save(r).Error
if err != nil {
utils.SendAlert(
logger.Alert(
"commands/config.go - Saving config",
err.Error(),
"guild_id", i.GuildID,
@ -247,7 +248,7 @@ func ConfigXP(s *discordgo.Session, i *discordgo.InteractionCreate) {
)
}
if err = resp.IsEphemeral().SetMessage("Rôle modifié.").Send(); err != nil {
utils.SendAlert("commands/config.go - Sending success", err.Error())
logger.Alert("commands/config.go - Sending success", err.Error())
}
case XpRoleDel:
err := resp.IsEphemeral().
@ -258,7 +259,7 @@ func ConfigXP(s *discordgo.Session, i *discordgo.InteractionCreate) {
}}}).
Send()
if err != nil {
utils.SendAlert("config/guild.go - Sending response to del", err.Error())
logger.Alert("config/guild.go - Sending response to del", err.Error())
}
case XpRoleDelRole:
roleId := msgData.Values[0]
@ -266,13 +267,13 @@ func ConfigXP(s *discordgo.Session, i *discordgo.InteractionCreate) {
if r == nil {
err := resp.SetMessage("Le rôle n'a pas été trouvé dans la config.").Send()
if err != nil {
utils.SendAlert("commands/config.go - Role not found (del)", err.Error())
logger.Alert("commands/config.go - Role not found (del)", err.Error())
}
return
}
err := gokord.DB.Delete(r).Error
if err != nil {
utils.SendAlert(
logger.Alert(
"commands/config.go - Deleting entry",
err.Error(),
"guild_id", i.GuildID,
@ -281,12 +282,12 @@ func ConfigXP(s *discordgo.Session, i *discordgo.InteractionCreate) {
)
}
if err = resp.IsEphemeral().SetMessage("Rôle supprimé.").Send(); err != nil {
utils.SendAlert("commands/config.go - Sending success", err.Error())
logger.Alert("commands/config.go - Sending success", err.Error())
}
default:
err := resp.SetMessage("Le type d'action n'est pas valide.").Send()
if err != nil {
utils.SendAlert("commands/config.go - Invalid action type", err.Error())
logger.Alert("commands/config.go - Invalid action type", err.Error())
}
return
}
@ -296,7 +297,7 @@ func ConfigXPModal(s *discordgo.Session, i *discordgo.InteractionCreate) {
if i.Type != discordgo.InteractionModalSubmit {
return
}
resp := utils.NewResponseBuilder(s, i)
resp := cmd.NewResponseBuilder(s, i)
modalData := i.ModalSubmitData()
@ -312,7 +313,7 @@ func ConfigXPModal(s *discordgo.Session, i *discordgo.InteractionCreate) {
if err = resp.IsEphemeral().
SetMessage("Impossible de lire le nombre. Il doit s'agit d'un nombre entier positif.").
Send(); err != nil {
utils.SendAlert("command/config.go - Sending bad number", err.Error())
logger.Alert("command/config.go - Sending bad number", err.Error())
}
return
}
@ -337,7 +338,7 @@ func ConfigXPModal(s *discordgo.Session, i *discordgo.InteractionCreate) {
}}}).
Send()
if err != nil {
utils.SendAlert("config/guild.go - Sending response to add/edit", err.Error())
logger.Alert("config/guild.go - Sending response to add/edit", err.Error())
}
}
@ -345,14 +346,14 @@ func getKeyConfigRole(i *discordgo.InteractionCreate) string {
return fmt.Sprintf("r:%s:%s", i.GuildID, i.User.ID)
}
func ConfigChannel(s *discordgo.Session, i *discordgo.InteractionCreate, optMap utils.OptionMap, resp *utils.ResponseBuilder) {
func ConfigChannel(s *discordgo.Session, i *discordgo.InteractionCreate, optMap cmd.OptionMap, resp *cmd.ResponseBuilder) {
resp.IsEphemeral()
// verify every args
t, ok := optMap["type"]
if !ok {
err := resp.SetMessage("Le type d'action n'a pas été renseigné.").Send()
if err != nil {
utils.SendAlert("commands/config.go - Action type not set", err.Error())
logger.Alert("commands/config.go - Action type not set", err.Error())
}
return
}
@ -361,7 +362,7 @@ func ConfigChannel(s *discordgo.Session, i *discordgo.InteractionCreate, optMap
if !ok {
err := resp.SetMessage("Le salon n'a pas été renseigné.").Send()
if err != nil {
utils.SendAlert("commands/config.go - Channel not set (disabled)", err.Error())
logger.Alert("commands/config.go - Channel not set (disabled)", err.Error())
}
return
}
@ -372,7 +373,7 @@ func ConfigChannel(s *discordgo.Session, i *discordgo.InteractionCreate, optMap
if strings.Contains(cfg.DisabledChannels, channel.ID) {
err := resp.SetMessage("Le salon est déjà dans la liste des salons désactivés").Send()
if err != nil {
utils.SendAlert("commands/config.go - Channel already disabled", err.Error())
logger.Alert("commands/config.go - Channel already disabled", err.Error())
}
return
}
@ -381,7 +382,7 @@ func ConfigChannel(s *discordgo.Session, i *discordgo.InteractionCreate, optMap
if !strings.Contains(cfg.DisabledChannels, channel.ID) {
err := resp.SetMessage("Le salon n'est pas désactivé").Send()
if err != nil {
utils.SendAlert("commands/config.go - Channel not disabled", err.Error())
logger.Alert("commands/config.go - Channel not disabled", err.Error())
}
return
}
@ -389,14 +390,14 @@ func ConfigChannel(s *discordgo.Session, i *discordgo.InteractionCreate, optMap
default:
err := resp.SetMessage("Le type d'action n'est pas valide.").Send()
if err != nil {
utils.SendAlert("commands/config.go - Invalid action type", err.Error())
logger.Alert("commands/config.go - Invalid action type", err.Error())
}
return
}
// save
err := cfg.Save()
if err != nil {
utils.SendAlert(
logger.Alert(
"commands/config.go - Saving config",
err.Error(),
"guild_id",
@ -411,18 +412,18 @@ func ConfigChannel(s *discordgo.Session, i *discordgo.InteractionCreate, optMap
err = resp.SetMessage("Modification sauvegardé.").Send()
}
if err != nil {
utils.SendAlert("commands/config.go - Modification saved message", err.Error())
logger.Alert("commands/config.go - Modification saved message", err.Error())
}
}
func ConfigFallbackChannel(s *discordgo.Session, i *discordgo.InteractionCreate, optMap utils.OptionMap, resp *utils.ResponseBuilder) {
func ConfigFallbackChannel(s *discordgo.Session, i *discordgo.InteractionCreate, optMap cmd.OptionMap, resp *cmd.ResponseBuilder) {
resp.IsEphemeral()
// verify every args
salon, ok := optMap["channel"]
if !ok {
err := resp.SetMessage("Le salon n'a pas été renseigné.").Send()
if err != nil {
utils.SendAlert("commands/config.go - Channel not set (fallback)", err.Error())
logger.Alert("commands/config.go - Channel not set (fallback)", err.Error())
}
return
}
@ -430,7 +431,7 @@ func ConfigFallbackChannel(s *discordgo.Session, i *discordgo.InteractionCreate,
if channel.Type != discordgo.ChannelTypeGuildText {
err := resp.SetMessage("Le salon n'est pas un salon textuel.").Send()
if err != nil {
utils.SendAlert("commands/config.go - Invalid channel type", err.Error())
logger.Alert("commands/config.go - Invalid channel type", err.Error())
}
return
}
@ -439,7 +440,7 @@ func ConfigFallbackChannel(s *discordgo.Session, i *discordgo.InteractionCreate,
// save
err := cfg.Save()
if err != nil {
utils.SendAlert(
logger.Alert(
"commands/config.go - Saving config",
err.Error(),
"guild_id",
@ -452,18 +453,18 @@ func ConfigFallbackChannel(s *discordgo.Session, i *discordgo.InteractionCreate,
err = resp.SetMessage("Salon enregistré.").Send()
}
if err != nil {
utils.SendAlert("commands/config.go - Channel saved message", err.Error())
logger.Alert("commands/config.go - Channel saved message", err.Error())
}
}
func ConfigPeriodBeforeReduce(s *discordgo.Session, i *discordgo.InteractionCreate, optMap utils.OptionMap, resp *utils.ResponseBuilder) {
func ConfigPeriodBeforeReduce(s *discordgo.Session, i *discordgo.InteractionCreate, optMap cmd.OptionMap, resp *cmd.ResponseBuilder) {
resp.IsEphemeral()
// verify every args
days, ok := optMap["days"]
if !ok {
err := resp.SetMessage("Le nombre de jours n'a pas été renseigné.").Send()
if err != nil {
utils.SendAlert("commands/config.go - Days not set (fallback)", err.Error())
logger.Alert("commands/config.go - Days not set (fallback)", err.Error())
}
return
}
@ -471,7 +472,7 @@ func ConfigPeriodBeforeReduce(s *discordgo.Session, i *discordgo.InteractionCrea
if d < 30 {
err := resp.SetMessage("Le nombre de jours est inférieur à 30.").Send()
if err != nil {
utils.SendAlert("commands/config.go - Days < 30 (fallback)", err.Error())
logger.Alert("commands/config.go - Days < 30 (fallback)", err.Error())
}
return
}
@ -480,7 +481,7 @@ func ConfigPeriodBeforeReduce(s *discordgo.Session, i *discordgo.InteractionCrea
cfg.DaysXPRemains = uint(d)
err := cfg.Save()
if err != nil {
utils.SendAlert(
logger.Alert(
"commands/config.go - Saving config",
err.Error(),
"guild_id",
@ -493,6 +494,6 @@ func ConfigPeriodBeforeReduce(s *discordgo.Session, i *discordgo.InteractionCrea
err = resp.SetMessage("Nombre de jours enregistré.").Send()
}
if err != nil {
utils.SendAlert("commands/config.go - Days saved message", err.Error())
logger.Alert("commands/config.go - Days saved message", err.Error())
}
}

View file

@ -1,17 +1,18 @@
package commands
import (
"github.com/anhgelus/gokord/utils"
"github.com/anhgelus/gokord/cmd"
"github.com/anhgelus/gokord/logger"
"github.com/bwmarrin/discordgo"
)
func Credits(s *discordgo.Session, i *discordgo.InteractionCreate, optMap utils.OptionMap, resp *utils.ResponseBuilder) {
func Credits(_ *discordgo.Session, i *discordgo.InteractionCreate, _ cmd.OptionMap, resp *cmd.ResponseBuilder) {
err := resp.AddEmbed(&discordgo.MessageEmbed{
Type: discordgo.EmbedTypeRich,
Title: "Crédits",
Description: "Auteur du bot : @anhgelus (https://github.com/anhgelus)\nLangage : Go 1.24\nLicence : AGPLv3",
Color: utils.Success,
Color: 0x10E6AD,
Fields: []*discordgo.MessageEmbedField{
{
Name: "anhgelus/gokord",
@ -31,6 +32,6 @@ func Credits(s *discordgo.Session, i *discordgo.InteractionCreate, optMap utils.
},
}).Send()
if err != nil {
utils.SendAlert("commands/credits.go - Sending credits", err.Error(), "guild_id", i.GuildID)
logger.Alert("commands/credits.go - Sending credits", err.Error(), "guild_id", i.GuildID)
}
}

View file

@ -2,13 +2,14 @@ package commands
import (
"fmt"
"github.com/anhgelus/gokord/utils"
"github.com/anhgelus/gokord/cmd"
"github.com/anhgelus/gokord/logger"
"github.com/anhgelus/les-copaings-bot/exp"
"github.com/anhgelus/les-copaings-bot/user"
"github.com/bwmarrin/discordgo"
)
func Rank(s *discordgo.Session, i *discordgo.InteractionCreate, optMap utils.OptionMap, resp *utils.ResponseBuilder) {
func Rank(s *discordgo.Session, i *discordgo.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
@ -18,12 +19,12 @@ func Rank(s *discordgo.Session, i *discordgo.InteractionCreate, optMap utils.Opt
if u.Bot {
err = resp.SetMessage("Imagine si les bots avaient un niveau :rolling_eyes:").IsEphemeral().Send()
if err != nil {
utils.SendAlert("commands/rank.go - Reply error user is a bot", err.Error())
logger.Alert("commands/rank.go - Reply error user is a bot", err.Error())
}
}
m, err = s.GuildMember(i.GuildID, u.ID)
if err != nil {
utils.SendAlert(
logger.Alert(
"commands/rank.go - Fetching guild member",
err.Error(),
"discord_id",
@ -33,7 +34,7 @@ func Rank(s *discordgo.Session, i *discordgo.InteractionCreate, optMap utils.Opt
)
err = resp.SetMessage("Erreur : impossible de récupérer le membre").IsEphemeral().Send()
if err != nil {
utils.SendAlert("commands/rank.go - Reply error fetching guild member", err.Error())
logger.Alert("commands/rank.go - Reply error fetching guild member", err.Error())
}
return
}
@ -42,7 +43,7 @@ func Rank(s *discordgo.Session, i *discordgo.InteractionCreate, optMap utils.Opt
}
xp, err := c.GetXP()
if err != nil {
utils.SendAlert(
logger.Alert(
"commands/rank.go - Fetching xp",
err.Error(),
"discord_id",
@ -52,7 +53,7 @@ func Rank(s *discordgo.Session, i *discordgo.InteractionCreate, optMap utils.Opt
)
err = resp.SetMessage("Erreur : impossible de récupérer l'XP").IsEphemeral().Send()
if err != nil {
utils.SendAlert("commands/rank.go - Reply error fetching xp", err.Error())
logger.Alert("commands/rank.go - Reply error fetching xp", err.Error())
}
return
}
@ -66,6 +67,6 @@ func Rank(s *discordgo.Session, i *discordgo.InteractionCreate, optMap utils.Opt
nxtLvlXP-xp,
)).Send()
if err != nil {
utils.SendAlert("commands/rank.go - Sending rank", err.Error())
logger.Alert("commands/rank.go - Sending rank", err.Error())
}
}

View file

@ -2,44 +2,45 @@ package commands
import (
"github.com/anhgelus/gokord"
"github.com/anhgelus/gokord/utils"
"github.com/anhgelus/gokord/cmd"
"github.com/anhgelus/gokord/logger"
"github.com/anhgelus/les-copaings-bot/user"
"github.com/bwmarrin/discordgo"
)
func Reset(s *discordgo.Session, i *discordgo.InteractionCreate, optMap utils.OptionMap, resp *utils.ResponseBuilder) {
func Reset(_ *discordgo.Session, i *discordgo.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 {
utils.SendAlert("commands/reset.go - Sending success (all)", err.Error())
logger.Alert("commands/reset.go - Sending success (all)", err.Error())
}
}
func ResetUser(s *discordgo.Session, i *discordgo.InteractionCreate, optMap utils.OptionMap, resp *utils.ResponseBuilder) {
func ResetUser(s *discordgo.Session, i *discordgo.InteractionCreate, optMap cmd.OptionMap, resp *cmd.ResponseBuilder) {
resp.IsEphemeral()
v, ok := optMap["user"]
if !ok {
if err := resp.SetMessage("Le user n'a pas été renseigné.").Send(); err != nil {
utils.SendAlert("commands/reset.go - Copaing not set", err.Error())
logger.Alert("commands/reset.go - Copaing not set", err.Error())
}
return
}
m := v.UserValue(s)
if m.Bot {
if err := resp.SetMessage("Les bots n'ont pas de niveau :upside_down:").Send(); err != nil {
utils.SendAlert("commands/reset.go - Copaing not set", err.Error())
logger.Alert("commands/reset.go - Copaing not set", err.Error())
}
return
}
err := user.GetCopaing(m.ID, i.GuildID).Delete()
if err != nil {
utils.SendAlert("commands/reset.go - Copaing not deleted", err.Error(), "discord_id", m.ID, "guild_id", i.GuildID)
logger.Alert("commands/reset.go - Copaing not deleted", err.Error(), "discord_id", m.ID, "guild_id", i.GuildID)
err = resp.SetMessage("Erreur : impossible de reset l'utilisateur").Send()
if err != nil {
utils.SendAlert("commands/reset.go - Error deleting", err.Error())
logger.Alert("commands/reset.go - Error deleting", err.Error())
}
}
if err = resp.SetMessage("Le user bien été reset.").Send(); err != nil {
utils.SendAlert("commands/reset.go - Sending success (user)", err.Error())
logger.Alert("commands/reset.go - Sending success (user)", err.Error())
}
}

View file

@ -2,7 +2,8 @@ package commands
import (
"fmt"
"github.com/anhgelus/gokord/utils"
"github.com/anhgelus/gokord/cmd"
"github.com/anhgelus/gokord/logger"
"github.com/anhgelus/les-copaings-bot/config"
"github.com/anhgelus/les-copaings-bot/exp"
"github.com/anhgelus/les-copaings-bot/user"
@ -10,10 +11,10 @@ import (
"sync"
)
func Top(s *discordgo.Session, i *discordgo.InteractionCreate, optMap utils.OptionMap, resp *utils.ResponseBuilder) {
func Top(_ *discordgo.Session, i *discordgo.InteractionCreate, _ cmd.OptionMap, resp *cmd.ResponseBuilder) {
err := resp.IsDeferred().Send()
if err != nil {
utils.SendAlert("commands/top.go - Sending deferred", err.Error())
logger.Alert("commands/top.go - Sending deferred", err.Error())
return
}
embeds := make([]*discordgo.MessageEmbed, 3)
@ -23,18 +24,18 @@ func Top(s *discordgo.Session, i *discordgo.InteractionCreate, optMap utils.Opti
defer wg.Done()
tops, err := user.GetBestXP(i.GuildID, n, d)
if err != nil {
utils.SendAlert("commands/top.go - Fetching best xp", err.Error(), "n", n, "d", d, "id", id, "guild_id", i.GuildID)
logger.Alert("commands/top.go - Fetching best xp", err.Error(), "n", n, "d", d, "id", id, "guild_id", i.GuildID)
embeds[id] = &discordgo.MessageEmbed{
Title: s,
Description: "Erreur : impossible de récupérer la liste",
Color: utils.Error,
Color: 0x831010,
}
return
}
embeds[id] = &discordgo.MessageEmbed{
Title: s,
Description: genTopsMessage(tops),
Color: utils.Success,
Color: 0x10E6AD,
}
}
cfg := config.GetGuildConfig(i.GuildID)
@ -57,7 +58,7 @@ func Top(s *discordgo.Session, i *discordgo.InteractionCreate, optMap utils.Opti
}
err = resp.Send()
if err != nil {
utils.SendAlert("commands/top.go - Sending response top", err.Error())
logger.Alert("commands/top.go - Sending response top", err.Error())
}
}()
}

View file

@ -2,7 +2,7 @@ package config
import (
"github.com/anhgelus/gokord"
"github.com/anhgelus/gokord/utils"
"github.com/anhgelus/gokord/logger"
"strings"
)
@ -25,7 +25,7 @@ type XpRole struct {
func GetGuildConfig(guildID string) *GuildConfig {
cfg := GuildConfig{GuildID: guildID}
if err := cfg.Load(); err != nil {
utils.SendAlert("config/guild.go - Loading guild config", err.Error(), "guild_id", guildID)
logger.Alert("config/guild.go - Loading guild config", err.Error(), "guild_id", guildID)
return nil
}
return &cfg

View file

@ -2,7 +2,7 @@ package main
import (
"fmt"
"github.com/anhgelus/gokord/utils"
"github.com/anhgelus/gokord/logger"
"github.com/anhgelus/les-copaings-bot/config"
"github.com/anhgelus/les-copaings-bot/exp"
"github.com/anhgelus/les-copaings-bot/user"
@ -37,7 +37,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.MessageReactionAdd(m.ChannelID, m.Message.ID, "⬆"); err != nil {
utils.SendAlert(
logger.Alert(
"events.go - add reaction for new level", err.Error(),
"channel id", m.ChannelID,
"message id", m.Message.ID,
@ -69,7 +69,7 @@ func genMapKey(guildID string, userID string) string {
}
func onConnection(_ *discordgo.Session, e *discordgo.VoiceStateUpdate) {
utils.SendDebug("User connected", "username", e.Member.DisplayName())
logger.Debug("User connected", "username", e.Member.DisplayName())
connectedSince[genMapKey(e.GuildID, e.UserID)] = time.Now().Unix()
}
@ -79,17 +79,17 @@ 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 {
utils.SendWarn(fmt.Sprintf(
logger.Warn(fmt.Sprintf(
"User %s diconnect from a vocal but was registered as not connected", e.Member.DisplayName(),
))
return
}
timeInVocal := now - con
utils.SendDebug("User disconnected", "username", e.Member.DisplayName(), "time in vocal", timeInVocal)
logger.Debug("User disconnected", "username", e.Member.DisplayName(), "time in vocal", timeInVocal)
connectedSince[genMapKey(e.GuildID, e.UserID)] = NotConnected
// add exp
if timeInVocal < 0 {
utils.SendAlert(
logger.Alert(
"events.go - Calculating time spent in vocal", "the time is negative",
"discord_id", e.UserID,
"guild_id", e.GuildID,
@ -97,7 +97,7 @@ func onDisconnect(s *discordgo.Session, e *discordgo.VoiceStateUpdate) {
return
}
if timeInVocal > MaxTimeInVocal {
utils.SendWarn(fmt.Sprintf("User %s spent more than 6 hours in vocal", e.Member.DisplayName()))
logger.Warn(fmt.Sprintf("User %s spent more than 6 hours in vocal", e.Member.DisplayName()))
timeInVocal = MaxTimeInVocal
}
e.Member.GuildID = e.GuildID
@ -110,19 +110,19 @@ func onDisconnect(s *discordgo.Session, e *discordgo.VoiceStateUpdate) {
"%s est maintenant niveau %d", e.Member.Mention(), newLevel,
))
if err != nil {
utils.SendAlert("events.go - Sending new level in fallback channel", err.Error())
logger.Alert("events.go - Sending new level in fallback channel", err.Error())
}
})
}
func OnLeave(_ *discordgo.Session, e *discordgo.GuildMemberRemove) {
utils.SendDebug("Leave event", "user_id", e.User.ID)
logger.Debug("Leave event", "user_id", e.User.ID)
if e.User.Bot {
return
}
c := user.GetCopaing(e.User.ID, e.GuildID)
if err := c.Delete(); err != nil {
utils.SendAlert(
logger.Alert(
"events.go - deleting user from db", err.Error(),
"user_id", e.User.ID,
"guild_id", e.GuildID,

12
go.mod
View file

@ -3,7 +3,7 @@ module github.com/anhgelus/les-copaings-bot
go 1.24
require (
github.com/anhgelus/gokord v0.10.3
github.com/anhgelus/gokord v0.11.1-0.20250806000243-ddfebe2ca6f1
github.com/bwmarrin/discordgo v0.29.0
github.com/joho/godotenv v1.5.1
github.com/pelletier/go-toml/v2 v2.2.4
@ -21,9 +21,9 @@ require (
github.com/jackc/puddle/v2 v2.2.2 // indirect
github.com/jinzhu/inflection v1.0.0 // indirect
github.com/jinzhu/now v1.1.5 // indirect
github.com/redis/go-redis/v9 v9.9.0 // indirect
golang.org/x/crypto v0.38.0 // indirect
golang.org/x/sync v0.14.0 // indirect
golang.org/x/sys v0.33.0 // indirect
golang.org/x/text v0.25.0 // indirect
github.com/redis/go-redis/v9 v9.12.0 // indirect
golang.org/x/crypto v0.40.0 // indirect
golang.org/x/sync v0.16.0 // indirect
golang.org/x/sys v0.34.0 // indirect
golang.org/x/text v0.27.0 // indirect
)

40
go.sum
View file

@ -1,17 +1,9 @@
github.com/anhgelus/gokord v0.7.0 h1:G9GrxD3/xEreXsiz3etKxbeHsNHrwT5I/VEKSWpyrj4=
github.com/anhgelus/gokord v0.7.0/go.mod h1:SfGKyMMGjNS9F9ehiEb5Cc58P+uoDdLDGGYqXSiMCus=
github.com/anhgelus/gokord v0.9.0 h1:vz7jHZ6papdt/xehe+nx4DxOLquPO6QukW8UzH81bGY=
github.com/anhgelus/gokord v0.9.0/go.mod h1:NSepHjTV61LUnuyGgHxEhZNMnWREErGFyOtRYPgdx/E=
github.com/anhgelus/gokord v0.10.0 h1:FaaMWntaezmSCvarcSMjfWr5OXVVwwzlDMnNX8gXaWE=
github.com/anhgelus/gokord v0.10.0/go.mod h1:NSepHjTV61LUnuyGgHxEhZNMnWREErGFyOtRYPgdx/E=
github.com/anhgelus/gokord v0.10.3 h1:4uKHRXFsRg1wRJQ3Sikz1MpL68cUZxyseRD+5hVe7tE=
github.com/anhgelus/gokord v0.10.3/go.mod h1:NSepHjTV61LUnuyGgHxEhZNMnWREErGFyOtRYPgdx/E=
github.com/anhgelus/gokord v0.11.1-0.20250806000243-ddfebe2ca6f1 h1:irHDC/xUm65yLFx5HnVeCbM0qQRpm0i1vQHsyLXeEbo=
github.com/anhgelus/gokord v0.11.1-0.20250806000243-ddfebe2ca6f1/go.mod h1:4xpwLzIG34/XG9QZiPsnYScQhckiCpQMAI0CjP0Nc2k=
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=
github.com/bsm/gomega v1.27.10/go.mod h1:JyEr/xRbxbtgWNi8tIEVPUYZ5Dzef52k01W3YH0H+O0=
github.com/bwmarrin/discordgo v0.28.1 h1:gXsuo2GBO7NbR6uqmrrBDplPUx2T3nzu775q/Rd1aG4=
github.com/bwmarrin/discordgo v0.28.1/go.mod h1:NJZpH+1AfhIcyQsPeuBKsUtYrRnjkyu0kIVMCHkZtRY=
github.com/bwmarrin/discordgo v0.29.0 h1:FmWeXFaKUwrcL3Cx65c20bTRW+vOb6k8AnaP+EgjDno=
github.com/bwmarrin/discordgo v0.29.0/go.mod h1:NJZpH+1AfhIcyQsPeuBKsUtYrRnjkyu0kIVMCHkZtRY=
github.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UFvs=
@ -28,8 +20,6 @@ github.com/jackc/pgpassfile v1.0.0 h1:/6Hmqy13Ss2zCq62VdNG8tM1wchn8zjSGOBJ6icpsI
github.com/jackc/pgpassfile v1.0.0/go.mod h1:CEx0iS5ambNFdcRtxPj5JhEz+xB6uRky5eyVu/W2HEg=
github.com/jackc/pgservicefile v0.0.0-20240606120523-5a60cdf6a761 h1:iCEnooe7UlwOQYpKFhBabPMi4aNAfoODPEFNiAnClxo=
github.com/jackc/pgservicefile v0.0.0-20240606120523-5a60cdf6a761/go.mod h1:5TJZWKEWniPve33vlWYSoGYefn3gLQRzjfDlhSJ9ZKM=
github.com/jackc/pgx/v5 v5.7.4 h1:9wKznZrhWa2QiHL+NjTSPP6yjl3451BX3imWDnokYlg=
github.com/jackc/pgx/v5 v5.7.4/go.mod h1:ncY89UGWxg82EykZUwSpUKEfccBGGYq1xjrOpsbsfGQ=
github.com/jackc/pgx/v5 v5.7.5 h1:JHGfMnQY+IEtGM63d+NGMjoRpysB2JBwDr5fsngwmJs=
github.com/jackc/pgx/v5 v5.7.5/go.mod h1:aruU7o91Tc2q2cFp5h4uP3f6ztExVpyVv88Xl/8Vl8M=
github.com/jackc/puddle/v2 v2.2.2 h1:PR8nw+E/1w0GLuRFSmiioY6UooMp6KJv0/61nB7icHo=
@ -44,28 +34,26 @@ github.com/pelletier/go-toml/v2 v2.2.4 h1:mye9XuhQ6gvn5h28+VilKrrPoQVanw5PMw/TB0
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=
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
github.com/redis/go-redis/v9 v9.8.0 h1:q3nRvjrlge/6UD7eTu/DSg2uYiU2mCL0G/uzBWqhicI=
github.com/redis/go-redis/v9 v9.8.0/go.mod h1:huWgSWd8mW6+m0VPhJjSSQ+d6Nh1VICQ6Q5lHuCH/Iw=
github.com/redis/go-redis/v9 v9.9.0 h1:URbPQ4xVQSQhZ27WMQVmZSo3uT3pL+4IdHVcYq2nVfM=
github.com/redis/go-redis/v9 v9.9.0/go.mod h1:huWgSWd8mW6+m0VPhJjSSQ+d6Nh1VICQ6Q5lHuCH/Iw=
github.com/redis/go-redis/v9 v9.12.0 h1:XlVPGlflh4nxfhsNXPA8Qp6EmEfTo0rp8oaBzPipXnU=
github.com/redis/go-redis/v9 v9.12.0/go.mod h1:huWgSWd8mW6+m0VPhJjSSQ+d6Nh1VICQ6Q5lHuCH/Iw=
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI=
github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
github.com/stretchr/testify v1.8.1 h1:w7B6lhMri9wdJUVmEZPGGhZzrYTPvgJArz7wNPgYKsk=
github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4=
golang.org/x/crypto v0.0.0-20210421170649-83a5a9bb288b/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4=
golang.org/x/crypto v0.38.0 h1:jt+WWG8IZlBnVbomuhg2Mdq0+BBQaHbtqHEFEigjUV8=
golang.org/x/crypto v0.38.0/go.mod h1:MvrbAqul58NNYPKnOra203SB9vpuZW0e+RRZV+Ggqjw=
golang.org/x/crypto v0.40.0 h1:r4x+VvoG5Fm+eJcxMaY8CQM7Lb0l1lsmjGBQ6s8BfKM=
golang.org/x/crypto v0.40.0/go.mod h1:Qr1vMER5WyS2dfPHAlsOj01wgLbsyWtFn/aY+5+ZdxY=
golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg=
golang.org/x/sync v0.14.0 h1:woo0S4Yywslg6hp4eUFjTVOyKt0RookbpAHG4c1HmhQ=
golang.org/x/sync v0.14.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA=
golang.org/x/sync v0.16.0 h1:ycBJEhp9p4vXvUZNszeOq0kGTPghopOL8q0fq3vstxw=
golang.org/x/sync v0.16.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA=
golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.33.0 h1:q3i8TbbEz+JRD9ywIRlyRAQbM0qF7hu24q3teo2hbuw=
golang.org/x/sys v0.33.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k=
golang.org/x/sys v0.34.0 h1:H5Y5sJ2L2JRdyv7ROF1he/lPdvFsd0mJHFw2ThKHxLA=
golang.org/x/sys v0.34.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k=
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
golang.org/x/text v0.25.0 h1:qVyWApTSYLk/drJRO5mDlNYskwQznZmkpV2c8q9zls4=
golang.org/x/text v0.25.0/go.mod h1:WEdwpYrmk1qmdHvhkSTNPm3app7v4rsT8F2UD6+VHIA=
golang.org/x/text v0.27.0 h1:4fGWRpyh641NLlecmyl4LOe6yDdfaYNrGb2zdfo4JV4=
golang.org/x/text v0.27.0/go.mod h1:1D28KMCvyooCX9hBiosv5Tz/+YLxj0j7XhWjpSUF7CU=
golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
@ -73,9 +61,5 @@ gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
gorm.io/driver/postgres v1.5.11 h1:ubBVAfbKEUld/twyKZ0IYn9rSQh448EdelLYk9Mv314=
gorm.io/driver/postgres v1.5.11/go.mod h1:DX3GReXH+3FPWGrrgffdvCk3DQ1dwDPdmbenSkweRGI=
gorm.io/gorm v1.26.1 h1:ghB2gUI9FkS46luZtn6DLZ0f6ooBJ5IbVej2ENFDjRw=
gorm.io/gorm v1.26.1/go.mod h1:8Z33v652h4//uMA76KjeDH8mJXPm1QNCYrMeatR0DOE=
gorm.io/gorm v1.30.0 h1:qbT5aPv1UH8gI99OsRlvDToLxW5zR7FzS9acZDOZcgs=
gorm.io/gorm v1.30.0/go.mod h1:8Z33v652h4//uMA76KjeDH8mJXPm1QNCYrMeatR0DOE=
gorm.io/gorm v1.30.1 h1:lSHg33jJTBxs2mgJRfRZeLDG+WZaHYCk3Wtfl6Ngzo4=
gorm.io/gorm v1.30.1/go.mod h1:8Z33v652h4//uMA76KjeDH8mJXPm1QNCYrMeatR0DOE=

25
main.go
View file

@ -5,7 +5,8 @@ import (
"errors"
"flag"
"github.com/anhgelus/gokord"
"github.com/anhgelus/gokord/utils"
cmd "github.com/anhgelus/gokord/cmd"
"github.com/anhgelus/gokord/logger"
"github.com/anhgelus/les-copaings-bot/commands"
"github.com/anhgelus/les-copaings-bot/config"
"github.com/anhgelus/les-copaings-bot/user"
@ -31,7 +32,7 @@ var (
func init() {
err := godotenv.Load()
if err != nil && !errors.Is(err, os.ErrNotExist) {
utils.SendWarn("Error while loading .env file", "error", err.Error())
logger.Warn("Error while loading .env file", "error", err.Error())
}
flag.StringVar(&token, "token", os.Getenv("TOKEN"), "token of the bot")
}
@ -51,27 +52,27 @@ func main() {
adm := gokord.AdminPermission
rankCmd := gokord.NewCommand("rank", "Affiche le niveau d'un copaing").
AddOption(gokord.NewOption(
rankCmd := cmd.New("rank", "Affiche le niveau d'un copaing").
AddOption(cmd.NewOption(
discordgo.ApplicationCommandOptionUser,
"copaing",
"Le niveau du Copaing que vous souhaitez obtenir",
)).
SetHandler(commands.Rank)
configCmd := gokord.NewCommand("config", "Modifie la config").
configCmd := cmd.New("config", "Modifie la config").
SetPermission(&adm).
SetHandler(commands.Config)
topCmd := gokord.NewCommand("top", "Copaings les plus actifs").
topCmd := cmd.New("top", "Copaings les plus actifs").
SetHandler(commands.Top)
resetCmd := gokord.NewCommand("reset", "Reset l'xp").
resetCmd := cmd.New("reset", "Reset l'xp").
SetHandler(commands.Reset).
SetPermission(&adm)
resetUserCmd := gokord.NewCommand("reset-user", "Reset l'xp d'un utilisation").
AddOption(gokord.NewOption(
resetUserCmd := cmd.New("reset-user", "Reset l'xp d'un utilisation").
AddOption(cmd.NewOption(
discordgo.ApplicationCommandOptionUser,
"user",
"Copaing a reset",
@ -79,7 +80,7 @@ func main() {
SetHandler(commands.ResetUser).
SetPermission(&adm)
creditsCmd := gokord.NewCommand("credits", "Crédits").
creditsCmd := cmd.New("credits", "Crédits").
SetHandler(commands.Credits)
innovations, err := gokord.LoadInnovationFromJson(updatesData)
@ -107,7 +108,7 @@ func main() {
Content: "Les Copaings Bot " + Version.String(),
},
},
Commands: []gokord.CommandBuilder{
Commands: []cmd.CommandBuilder{
rankCmd,
configCmd,
topCmd,
@ -135,7 +136,7 @@ func afterInit(dg *discordgo.Session) {
dg.AddHandler(OnVoiceUpdate)
dg.AddHandler(OnLeave)
stopPeriodicReducer = utils.NewTimer(24*time.Hour, func(stop chan<- interface{}) {
stopPeriodicReducer = gokord.NewTimer(24*time.Hour, func(stop chan<- interface{}) {
user.PeriodicReducer(dg)
})

View file

@ -2,7 +2,7 @@ package user
import (
"github.com/anhgelus/gokord"
"github.com/anhgelus/gokord/utils"
"github.com/anhgelus/gokord/logger"
"github.com/anhgelus/les-copaings-bot/config"
"github.com/anhgelus/les-copaings-bot/exp"
"github.com/bwmarrin/discordgo"
@ -16,7 +16,7 @@ func onNewLevel(dg *discordgo.Session, m *discordgo.Member, level uint) {
xpForLevel := exp.LevelXP(level)
for _, role := range cfg.XpRoles {
if role.XP <= xpForLevel && !slices.Contains(m.Roles, role.RoleID) {
utils.SendDebug(
logger.Debug(
"Add role",
"role_id", role.RoleID,
"user_id", m.User.ID,
@ -24,10 +24,10 @@ func onNewLevel(dg *discordgo.Session, m *discordgo.Member, level uint) {
)
err := dg.GuildMemberRoleAdd(m.GuildID, m.User.ID, role.RoleID)
if err != nil {
utils.SendAlert("user/level.go - Adding role", err.Error(), "role_id", role.RoleID)
logger.Alert("user/level.go - Adding role", err.Error(), "role_id", role.RoleID)
}
} else if role.XP > xpForLevel && slices.Contains(m.Roles, role.RoleID) {
utils.SendDebug(
logger.Debug(
"Remove role",
"role_id", role.RoleID,
"user_id", m.User.ID,
@ -35,7 +35,7 @@ func onNewLevel(dg *discordgo.Session, m *discordgo.Member, level uint) {
)
err := dg.GuildMemberRoleRemove(m.GuildID, m.User.ID, role.RoleID)
if err != nil {
utils.SendAlert("user/level.go - Removing role", err.Error(), "role_id", role.RoleID)
logger.Alert("user/level.go - Removing role", err.Error(), "role_id", role.RoleID)
}
}
}
@ -44,7 +44,7 @@ func onNewLevel(dg *discordgo.Session, m *discordgo.Member, level uint) {
func (c *Copaing) OnNewLevel(dg *discordgo.Session, level uint) {
m, err := dg.GuildMember(c.GuildID, c.DiscordID)
if err != nil {
utils.SendAlert(
logger.Alert(
"user/level.go - Getting member for new level", err.Error(),
"discord_id", c.DiscordID,
"guild_id", c.GuildID,
@ -58,7 +58,7 @@ func PeriodicReducer(dg *discordgo.Session) {
wg := &sync.WaitGroup{}
var cs []*Copaing
if err := gokord.DB.Find(&cs).Error; err != nil {
utils.SendAlert("user/level.go - Fetching all copaings", err.Error())
logger.Alert("user/level.go - Fetching all copaings", err.Error())
return
}
cxps := make([]*cXP, len(cs))
@ -71,7 +71,7 @@ func PeriodicReducer(dg *discordgo.Session) {
defer wg.Done()
xp, err := c.GetXP()
if err != nil {
utils.SendAlert("user/level.go - Getting XP", err.Error(), "copaing_id", c.ID, "guild_id", c.GuildID)
logger.Alert("user/level.go - Getting XP", err.Error(), "copaing_id", c.ID, "guild_id", c.GuildID)
xp = 0
}
cxps[i] = &cXP{
@ -92,25 +92,25 @@ func PeriodicReducer(dg *discordgo.Session) {
Delete(&CopaingXP{}).
Error
if err != nil {
utils.SendAlert("user/level.go - Removing old XP", err.Error(), "guild_id", g.ID)
logger.Alert("user/level.go - Removing old XP", err.Error(), "guild_id", g.ID)
}
}()
}
wg.Wait()
for i, c := range cxps {
if i%50 == 49 {
utils.SendDebug("Sleeping...")
logger.Debug("Sleeping...")
time.Sleep(15 * time.Second) // prevents spamming the API
}
oldXp := c.GetXP()
xp, err := c.ToCopaing().GetXP()
if err != nil {
utils.SendAlert("user/level.go - Getting XP", err.Error(), "guild_id", c.ID, "discord_id", c.DiscordID)
logger.Alert("user/level.go - Getting XP", err.Error(), "guild_id", c.ID, "discord_id", c.DiscordID)
continue
}
if exp.Level(oldXp) != exp.Level(xp) {
c.OnNewLevel(dg, exp.Level(xp))
}
}
utils.SendDebug("Periodic reduce finished", "len(guilds)", len(dg.State.Guilds))
logger.Debug("Periodic reduce finished", "len(guilds)", len(dg.State.Guilds))
}

View file

@ -2,7 +2,7 @@ package user
import (
"github.com/anhgelus/gokord"
"github.com/anhgelus/gokord/utils"
"github.com/anhgelus/gokord/logger"
"time"
)
@ -34,7 +34,7 @@ const (
func GetCopaing(discordID string, guildID string) *Copaing {
c := Copaing{DiscordID: discordID, GuildID: guildID}
if err := c.Load(); err != nil {
utils.SendAlert(
logger.Alert(
"user/member.go - Loading user",
err.Error(),
"discord_id",

View file

@ -2,7 +2,7 @@ package user
import (
"github.com/anhgelus/gokord"
"github.com/anhgelus/gokord/utils"
"github.com/anhgelus/gokord/logger"
"github.com/anhgelus/les-copaings-bot/config"
"github.com/anhgelus/les-copaings-bot/exp"
"github.com/bwmarrin/discordgo"
@ -26,14 +26,14 @@ func (c *cXP) GetXP() uint {
func (c *Copaing) AddXP(s *discordgo.Session, m *discordgo.Member, xp uint, fn func(uint, uint)) {
old, err := c.GetXP()
if err != nil {
utils.SendAlert("user/xp.go - Getting xp", err.Error(), "discord_id", c.DiscordID, "guild_id", c.GuildID)
logger.Alert("user/xp.go - Getting xp", err.Error(), "discord_id", c.DiscordID, "guild_id", c.GuildID)
return
}
pastLevel := exp.Level(old)
utils.SendDebug("Adding xp", "member", m.DisplayName(), "old xp", old, "xp to add", xp, "old level", pastLevel)
logger.Debug("Adding xp", "member", m.DisplayName(), "old xp", old, "xp to add", xp, "old level", pastLevel)
c.CopaingXPs = append(c.CopaingXPs, CopaingXP{CopaingID: c.ID, XP: xp, GuildID: c.GuildID})
if err = c.Save(); err != nil {
utils.SendAlert(
logger.Alert(
"user/xp.go - Saving user",
err.Error(),
"xp",
@ -76,7 +76,7 @@ func (c *Copaing) GetXPForDays(n uint) (uint, error) {
var cxp CopaingXP
err = gokord.DB.ScanRows(rows, &cxp)
if err != nil {
utils.SendAlert("user/xp.go - Scanning rows", err.Error(), "copaing_id", c.ID, "guild_id", c.GuildID)
logger.Alert("user/xp.go - Scanning rows", err.Error(), "copaing_id", c.ID, "guild_id", c.GuildID)
continue
}
xp += cxp.XP
@ -103,7 +103,7 @@ func GetBestXP(guildId string, n uint, d int) ([]CopaingAccess, error) {
var c Copaing
err = gokord.DB.ScanRows(rows, &c)
if err != nil {
utils.SendAlert("user/xp.go - Scanning rows", err.Error(), "guild_id", guildId)
logger.Alert("user/xp.go - Scanning rows", err.Error(), "guild_id", guildId)
continue
}
wg.Add(1)
@ -111,7 +111,7 @@ func GetBestXP(guildId string, n uint, d int) ([]CopaingAccess, error) {
defer wg.Done()
xp, err := c.GetXPForDays(uint(d))
if err != nil {
utils.SendAlert("user/xp.go - Fetching xp", err.Error(), "discord_id", c.DiscordID, "guild_id", guildId)
logger.Alert("user/xp.go - Fetching xp", err.Error(), "discord_id", c.DiscordID, "guild_id", guildId)
return
}
l = append(l, &cXP{Cxp: xp, Copaing: &c})