aboutsummaryrefslogtreecommitdiff
path: root/config/channel.go
diff options
context:
space:
mode:
authorAnhgelus Morhtuuzh <william@herges.fr>2025-08-21 12:54:52 +0000
committerAnhgelus Morhtuuzh <william@herges.fr>2025-08-21 12:54:52 +0000
commit166aadabfb37a1a565bb8d46241682c709b1c4db (patch)
treebc77b8e3f7a7599ad272fcc3c0032f3258ff7cd7 /config/channel.go
parent026abcc07a57eeda8a08a746ad2b664e956360f3 (diff)
parent15448aa0014e1473582227e2ea301df7ccfb9560 (diff)
Merge pull request '[Refactor] Config command' (#1) from refactor/config-command into main
Reviewed-on: https://git.anhgelus.world/anhgelus/les-copaings-bot/pulls/1
Diffstat (limited to 'config/channel.go')
-rw-r--r--config/channel.go126
1 files changed, 126 insertions, 0 deletions
diff --git a/config/channel.go b/config/channel.go
new file mode 100644
index 0000000..355b0e1
--- /dev/null
+++ b/config/channel.go
@@ -0,0 +1,126 @@
+package config
+
+import (
+ "github.com/anhgelus/gokord/cmd"
+ "github.com/anhgelus/gokord/component"
+ "github.com/anhgelus/gokord/logger"
+ "github.com/bwmarrin/discordgo"
+ "strings"
+)
+
+const (
+ 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) {
+ err := resp.IsEphemeral().SetComponents(component.New().Add(component.NewActionRow().Add(
+ component.NewChannelSelect(FallbackChannelSet).AddChannelType(discordgo.ChannelTypeGuildText),
+ ))).Send()
+ if err != nil {
+ logger.Alert("config/channel.go - Sending channel list for fallback", err.Error())
+ }
+}
+
+func HandleFallbackChannelSet(_ *discordgo.Session, i *discordgo.InteractionCreate, data discordgo.MessageComponentInteractionData, resp *cmd.ResponseBuilder) {
+ resp.IsEphemeral()
+
+ cfg := GetGuildConfig(i.GuildID)
+ channelID := data.Values[0]
+
+ cfg.FallbackChannel = channelID
+ err := cfg.Save()
+ if err != nil {
+ logger.Alert("config/channel.go - Saving fallback channel", err.Error())
+ if err = resp.SetMessage("Erreur lors de la sauvegarde du salon").Send(); err != nil {
+ logger.Alert("config/channel.go - Sending error while saving channel", err.Error())
+ }
+ return
+ }
+ if err = resp.SetMessage("Salon sauvegardé.").Send(); err != nil {
+ logger.Alert("config/channel.go - Sending channel saved", err.Error())
+ }
+}
+
+func HandleModifyDisChannel(_ *discordgo.Session, _ *discordgo.InteractionCreate, _ discordgo.MessageComponentInteractionData, resp *cmd.ResponseBuilder) {
+ err := resp.IsEphemeral().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.IsEphemeral().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) {
+ resp.IsEphemeral()
+ 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) {
+ resp.IsEphemeral()
+ 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())
+ }
+}