aboutsummaryrefslogtreecommitdiff
path: root/config/channel.go
blob: 537d586b4935ccad55728cd8771cb0da53c40643 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
package config

import (
	"strings"

	"github.com/anhgelus/gokord/cmd"
	"github.com/anhgelus/gokord/component"
	"github.com/anhgelus/gokord/logger"
	discordgo "github.com/nyttikord/gokord"
)

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())
	}
}