From 42c25b54e169aeaf515522ba6103b1fe6db49be7 Mon Sep 17 00:00:00 2001 From: Anhgelus Morhtuuzh Date: Thu, 22 Jan 2026 13:06:52 +0100 Subject: refactor(config): replace old gokord config by custom one --- main.go | 54 ++++++++++++++++++++++++++++-------------------------- 1 file changed, 28 insertions(+), 26 deletions(-) (limited to 'main.go') diff --git a/main.go b/main.go index 1012f19..6a1da6a 100644 --- a/main.go +++ b/main.go @@ -3,9 +3,7 @@ package main import ( "context" _ "embed" - "errors" "flag" - "log/slog" "os" "time" @@ -17,7 +15,7 @@ import ( "git.anhgelus.world/anhgelus/les-copaings-bot/user" "github.com/anhgelus/gokord" "github.com/anhgelus/gokord/cmd" - "github.com/joho/godotenv" + _ "github.com/joho/godotenv/autoload" discordgo "github.com/nyttikord/gokord" "github.com/nyttikord/gokord/bot" "github.com/nyttikord/gokord/discord" @@ -30,7 +28,8 @@ import ( ) var ( - token string + token string + cfgPath string = "config.toml" //go:embed updates.json updatesData []byte Version = gokord.Version{ @@ -48,16 +47,13 @@ var ( var interTTF []byte func init() { - err := godotenv.Load() - if err != nil && !errors.Is(err, os.ErrNotExist) { - slog.Error("error while loading .env file", "error", err) - } flag.StringVar(&token, "token", os.Getenv("TOKEN"), "token of the bot") + flag.StringVar(&cfgPath, "config", cfgPath, "config's path") flag.BoolVar(&verbose, "v", verbose, "verbose") // Use a nicer font - fontTTF, parseErr := opentype.Parse(interTTF) - if parseErr != nil { + fontTTF, err := opentype.Parse(interTTF) + if err != nil { panic(err) } inter := font.Font{Typeface: "Inter"} @@ -66,23 +62,27 @@ func init() { Face: fontTTF, }}) plot.DefaultFont = inter - } func main() { flag.Parse() - gokord.UseRedis = false - err := gokord.SetupConfigs(&Config{}, []*gokord.ConfigInfo{}) + + cfg, err := getConfig(cfgPath) + if err != nil { + panic(err) + } + + db, err := cfg.Database.Connect() if err != nil { panic(err) } - err = gokord.DB.AutoMigrate(&user.Copaing{}, &config.GuildConfig{}, &config.XpRole{}, &user.CopaingXP{}, &config.RoleReactMessage{}, &config.RoleReact{}) + err = db.AutoMigrate(&user.Copaing{}, &config.GuildConfig{}, &config.XpRole{}, &user.CopaingXP{}, &config.RoleReactMessage{}, &config.RoleReact{}) if err != nil { panic(err) } - adm := gokord.AdminPermission + adm := int64(discord.PermissionManageGuild) ctx := user.SetState(context.Background(), user.NewState()) @@ -203,12 +203,13 @@ func main() { // related to rolereact // TEMP BECAUSE (OLD) GOKORD DOES NOT SUPPORT COMMAND MESSAGE - b.AddHandler(func(_ context.Context, s bot.Session, e *event.Ready) { + b.AddHandler(func(ctx context.Context, s bot.Session, e *event.Ready) { guildID := "" + logger := bot.Logger(ctx) if gokord.Debug { - gs, err := s.GuildAPI().UserGuilds(1, "", "", false) + gs, err := s.GuildAPI().UserGuilds(1, "", "", false).Do(ctx) if err != nil { - s.Logger().Error("fetching guilds for debug", "error", err) + logger.Error("fetching guilds for debug", "error", err) return } else { guildID = gs[0].ID @@ -220,24 +221,25 @@ func main() { Name: "Modifier", DefaultMemberPermissions: &adm, } - c, err := s.InteractionAPI().CommandCreate(s.SessionState().User().ID, guildID, &handleRolereactionMessageCmd) + c, err := s.InteractionAPI(). + CommandCreate(s.SessionState().User().ID, guildID, &handleRolereactionMessageCmd). + Do(ctx) if err != nil { - s.Logger().Error("unable to push rolereaction message command", "error", err) + logger.Error("unable to push rolereaction message command", "error", err) return } - s.Logger().Debug("pushed rolereaction message command", "CommandID", c.ID) + logger.Debug("pushed rolereaction message command", "CommandID", c.ID) }) b.AddHandler(func(ct context.Context, s bot.Session, _ *event.Disconnect) { user.PeriodicSaver(ctx, s) }) - b.AddHandler(func(_ context.Context, s bot.Session, i *event.InteractionCreate) { + b.AddHandler(func(ctx context.Context, s bot.Session, i *event.InteractionCreate) { if i.Type != types.InteractionApplicationCommand { return } - data := i.CommandData() - if data.Name == "Modifier" && data.CommandType == types.CommandMessage { - resp := cmd.NewResponseBuilder(s, i) - rolereact.HandleModifyCommand(s, i, data, resp) + cmd := i.Command() + if cmd.Data.Name == "Modifier" && cmd.Data.CommandType == types.CommandMessage { + rolereact.HandleModifyCommand(ctx, s, cmd) } }) b.AddHandler(rolereact.HandleReactionAdd) -- cgit v1.2.3