From 357557c023442b935254e7e2aafd42005b77da47 Mon Sep 17 00:00:00 2001 From: vaporvee Date: Mon, 11 Mar 2024 12:32:38 +0100 Subject: [PATCH] clearing unused values from database on ready --- handlers.go | 3 ++- manage_data.go | 26 ++++++++++++++++++++++++-- tool.go | 21 +++++++++++++++++++++ 3 files changed, 47 insertions(+), 3 deletions(-) diff --git a/handlers.go b/handlers.go index dab63b7..d8f3b5f 100644 --- a/handlers.go +++ b/handlers.go @@ -26,6 +26,7 @@ var commands []Command = []Command{cmd_form, cmd_tag, cmd_tag_short, cmd_dadjoke func ready(s *discordgo.Session, event *discordgo.Ready) { fmt.Print("\nStarting up...") + findAndDeleteUnusedMessages() removeOldCommandFromAllGuilds(s) var existingCommandNames []string for _, guild := range event.Guilds { @@ -140,7 +141,7 @@ func messageCreate(s *discordgo.Session, m *discordgo.MessageCreate) { } func messageDelete(s *discordgo.Session, m *discordgo.MessageDelete) { //TODO: also clear on bot start when message doesn't exist - tryDeleteUnusedMessage(m.GuildID, m.ChannelID, m.ID) + tryDeleteUnusedMessage(m.ID) } func guildMemberJoin(s *discordgo.Session, m *discordgo.GuildMemberAdd) { diff --git a/manage_data.go b/manage_data.go index 38e5acf..faff3f3 100644 --- a/manage_data.go +++ b/manage_data.go @@ -361,9 +361,31 @@ func isAutopublishEnabled(guildID string, newsChannelID string) bool { return enabled } -func tryDeleteUnusedMessage(guildID string, channelID string, messageID string) { - _, err := db.Exec("DELETE FROM form_manage WHERE guild_id = $1 AND channel_id = $2 AND message_id = $3", guildID, channelID, messageID) +func tryDeleteUnusedMessage(messageID string) { + _, err := db.Exec("DELETE FROM form_manage WHERE message_id = $1", messageID) if err != nil { log.Println(err) } } + +func getAllSavedMessages() []MessageIDs { + var savedMessages []MessageIDs + rows, err := db.Query("SELECT message_id, channel_id FROM form_manage") + if err != nil { + log.Print(err) + return nil + } + defer rows.Close() + for rows.Next() { + var messageID, channelID string + if err := rows.Scan(&messageID, &channelID); err != nil { + log.Print(err) + continue + } + savedMessages = append(savedMessages, MessageIDs{ID: messageID, ChannelID: channelID}) + } + if err := rows.Err(); err != nil { + log.Print(err) + } + return savedMessages +} diff --git a/tool.go b/tool.go index deacf61..f5e7b6f 100644 --- a/tool.go +++ b/tool.go @@ -27,6 +27,11 @@ type ModalJson struct { Form []ModalJsonField `json:"form"` } +type MessageIDs struct { + ID string + ChannelID string +} + func jsonStringShowModal(interaction *discordgo.Interaction, manageID string, formID string, overwrite ...string) { var modal ModalJson = getModalByFormID(formID) var components []discordgo.MessageComponent @@ -152,3 +157,19 @@ func respondEmbed(interaction *discordgo.Interaction, embed discordgo.MessageEmb }, }) } + +func checkMessageNotExists(channelID, messageID string) bool { + _, err := bot.ChannelMessage(channelID, messageID) + if err != nil { + return true + } + return false +} + +func findAndDeleteUnusedMessages() { + for _, message := range getAllSavedMessages() { + if checkMessageNotExists(message.ChannelID, message.ID) { + tryDeleteUnusedMessage(message.ID) + } + } +}