aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorWilliam Hergès <william@herges.fr>2025-08-06 15:51:17 +0200
committerWilliam Hergès <william@herges.fr>2025-08-06 15:51:17 +0200
commitb9466f812284bb6feb793de6229cf7266dc24361 (patch)
tree8e019caa1b9714a9ddfd95b5daeeb7efdb1fb667
parent0b93ea5daaee317a45291df188af13a6fab0c481 (diff)
refactor(config): handle disabled channels
-rw-r--r--commands/config.go70
-rw-r--r--config/channel.go85
-rw-r--r--main.go5
3 files changed, 88 insertions, 72 deletions
diff --git a/commands/config.go b/commands/config.go
index 14e4691..23a0add 100644
--- a/commands/config.go
+++ b/commands/config.go
@@ -102,73 +102,3 @@ func Config(_ *discordgo.Session, i *discordgo.InteractionCreate, _ cmd.OptionMa
logger.Alert("config/guild.go - Sending config", err.Error())
}
}
-
-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 {
- logger.Alert("commands/config.go - Action type not set", err.Error())
- }
- return
- }
- ts := t.StringValue()
- salon, ok := optMap["channel"]
- if !ok {
- err := resp.SetMessage("Le salon n'a pas été renseigné.").Send()
- if err != nil {
- logger.Alert("commands/config.go - Channel not set (disabled)", err.Error())
- }
- return
- }
- channel := salon.ChannelValue(s)
- cfg := config.GetGuildConfig(i.GuildID)
- switch ts {
- case "add":
- 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 {
- logger.Alert("commands/config.go - Channel already disabled", err.Error())
- }
- return
- }
- cfg.DisabledChannels += channel.ID + ";"
- case "del":
- if !strings.Contains(cfg.DisabledChannels, channel.ID) {
- err := resp.SetMessage("Le salon n'est pas désactivé").Send()
- if err != nil {
- logger.Alert("commands/config.go - Channel not disabled", err.Error())
- }
- return
- }
- cfg.DisabledChannels = strings.ReplaceAll(cfg.DisabledChannels, channel.ID+";", "")
- default:
- err := resp.SetMessage("Le type d'action n'est pas valide.").Send()
- if err != nil {
- logger.Alert("commands/config.go - Invalid action type", err.Error())
- }
- return
- }
- // save
- err := cfg.Save()
- if err != nil {
- logger.Alert(
- "commands/config.go - Saving config",
- err.Error(),
- "guild_id",
- i.GuildID,
- "type",
- ts,
- "channel_id",
- channel.ID,
- )
- err = resp.SetMessage("Il y a eu une erreur lors de la modification de de la base de données.").Send()
- } else {
- err = resp.SetMessage("Modification sauvegardé.").Send()
- }
- if err != nil {
- logger.Alert("commands/config.go - Modification saved message", err.Error())
- }
-}
diff --git a/config/channel.go b/config/channel.go
index 2ef8b48..7b74169 100644
--- a/config/channel.go
+++ b/config/channel.go
@@ -5,12 +5,18 @@ import (
"github.com/anhgelus/gokord/component"
"github.com/anhgelus/gokord/logger"
"github.com/bwmarrin/discordgo"
+ "strings"
)
const (
- ModifyDisChannel = "disabled_channel"
ModifyFallbackChannel = "fallback_channel"
FallbackChannelSet = "fallback_channel_set"
+
+ ModifyDisChannel = "disabled_channel"
+ DisChannelAdd = "disabled_channel_add"
+ DisChannelAddSet = "disabled_channel_add_set"
+ DisChannelDel = "disabled_channel_del"
+ DisChannelDelSet = "disabled_channel_del_set"
)
func HandleModifyFallbackChannel(_ *discordgo.Session, _ *discordgo.InteractionCreate, _ discordgo.MessageComponentInteractionData, resp *cmd.ResponseBuilder) {
@@ -18,7 +24,7 @@ func HandleModifyFallbackChannel(_ *discordgo.Session, _ *discordgo.InteractionC
component.NewChannelSelect(FallbackChannelSet).AddChannelType(discordgo.ChannelTypeGuildText),
))).Send()
if err != nil {
- logger.Alert("config/channel.go - Sending channel list", err.Error())
+ logger.Alert("config/channel.go - Sending channel list for fallback", err.Error())
}
}
@@ -41,3 +47,78 @@ func HandleFallbackChannelSet(_ *discordgo.Session, i *discordgo.InteractionCrea
logger.Alert("config/channel.go - Sending channel saved", err.Error())
}
}
+
+func HandleModifyDisChannel(_ *discordgo.Session, _ *discordgo.InteractionCreate, _ discordgo.MessageComponentInteractionData, resp *cmd.ResponseBuilder) {
+ err := resp.SetMessage("Salon de repli...").SetComponents(component.New().Add(component.NewActionRow().
+ Add(
+ component.NewButton(DisChannelAdd, discordgo.PrimaryButton).
+ SetLabel("Désactiver un salon").
+ SetEmoji(&discordgo.ComponentEmoji{Name: "⬇️"}),
+ ).
+ Add(
+ component.NewButton(DisChannelDel, discordgo.DangerButton).
+ SetLabel("Réactiver un salon").
+ SetEmoji(&discordgo.ComponentEmoji{Name: "⬆️"}),
+ ),
+ )).Send()
+ if err != nil {
+ logger.Alert("config/channel.go - Sending action type", err.Error())
+ }
+}
+
+func HandleDisChannel(_ *discordgo.Session, _ *discordgo.InteractionCreate, data discordgo.MessageComponentInteractionData, resp *cmd.ResponseBuilder) {
+ resp.SetMessage("Salon à désactiver...")
+ cID := DisChannelAddSet
+ if data.CustomID == DisChannelDel {
+ resp.SetMessage("Salon à réactiver...")
+ cID = DisChannelDelSet
+ }
+ err := resp.SetComponents(component.New().Add(component.NewActionRow().Add(component.NewChannelSelect(cID)))).Send()
+ if err != nil {
+ logger.Alert("config/channel.go - Sending channel list for disable", err.Error())
+ }
+}
+
+func HandleDisChannelAddSet(_ *discordgo.Session, i *discordgo.InteractionCreate, data discordgo.MessageComponentInteractionData, resp *cmd.ResponseBuilder) {
+ cfg := GetGuildConfig(i.GuildID)
+ id := data.Values[0]
+ if strings.Contains(cfg.DisabledChannels, id) {
+ err := resp.SetMessage("Le salon est déjà dans la liste des salons désactivés").Send()
+ if err != nil {
+ logger.Alert("commands/config.go - Channel already disabled", err.Error())
+ }
+ return
+ }
+ cfg.DisabledChannels += id + ";"
+ if err := cfg.Save(); err != nil {
+ logger.Alert("commands/config.go - Saving config disable add", err.Error())
+ if err = resp.SetMessage("Il y a eu une erreur lors de la modification de de la base de données.").Send(); err != nil {
+ logger.Alert("config/channel.go - Sending error while saving config", err.Error())
+ }
+ }
+ if err := resp.SetMessage("Modification sauvegardé.").Send(); err != nil {
+ logger.Alert("commands/config.go - Modification saved message disable add", err.Error())
+ }
+}
+
+func HandleDisChannelDelSet(_ *discordgo.Session, i *discordgo.InteractionCreate, data discordgo.MessageComponentInteractionData, resp *cmd.ResponseBuilder) {
+ cfg := GetGuildConfig(i.GuildID)
+ id := data.Values[0]
+ if !strings.Contains(cfg.DisabledChannels, id) {
+ err := resp.SetMessage("Le salon n'est pas désactivé").Send()
+ if err != nil {
+ logger.Alert("commands/config.go - Channel not disabled", err.Error())
+ }
+ return
+ }
+ cfg.DisabledChannels = strings.ReplaceAll(cfg.DisabledChannels, id+";", "")
+ if err := cfg.Save(); err != nil {
+ logger.Alert("commands/config.go - Saving config disable del", err.Error())
+ if err = resp.SetMessage("Il y a eu une erreur lors de la modification de de la base de données.").Send(); err != nil {
+ logger.Alert("config/channel.go - Sending error while saving config", err.Error())
+ }
+ }
+ if err := resp.SetMessage("Modification sauvegardé.").Send(); err != nil {
+ logger.Alert("commands/config.go - Modification saved message disable del", err.Error())
+ }
+}
diff --git a/main.go b/main.go
index 5efb9b9..505489d 100644
--- a/main.go
+++ b/main.go
@@ -142,6 +142,11 @@ func main() {
// channel related
bot.HandleMessageComponent(config.HandleModifyFallbackChannel, config.ModifyFallbackChannel)
bot.HandleMessageComponent(config.HandleFallbackChannelSet, config.FallbackChannelSet)
+ bot.HandleMessageComponent(config.HandleModifyDisChannel, config.ModifyDisChannel)
+ bot.HandleMessageComponent(config.HandleDisChannel, config.DisChannelAdd)
+ bot.HandleMessageComponent(config.HandleDisChannel, config.DisChannelDel)
+ bot.HandleMessageComponent(config.HandleDisChannelAddSet, config.DisChannelAddSet)
+ bot.HandleMessageComponent(config.HandleDisChannelDelSet, config.DisChannelDelSet)
// reduce related
bot.HandleMessageComponent(config.HandleModifyPeriodicReduce, config.ModifyTimeReduce)
bot.HandleModal(config.HandleTimeReduceSet, config.TimeReduceSet)