From 8935fba213a43ff3f2153bbaa4ddb7c41780ba36 Mon Sep 17 00:00:00 2001 From: vaporvee Date: Mon, 11 Mar 2024 10:22:58 +0100 Subject: [PATCH] now deletes deleted messages from database --- cmd_form.go | 20 +++++++++++--------- handlers.go | 4 ++++ main.go | 1 + manage_data.go | 31 +++++++++++++++++++++++++++---- tool.go | 5 ++++- 5 files changed, 47 insertions(+), 14 deletions(-) diff --git a/cmd_form.go b/cmd_form.go index 0ffbe4a..e7d98c5 100644 --- a/cmd_form.go +++ b/cmd_form.go @@ -142,14 +142,15 @@ var cmd_form Command = Command{ if formID == "" { formID = "template_general" } - - formTitles := map[string]string{ - "template_ticket": "Make a new ticket", - "template_url": "Add your URL", - "template_general": "Form", - } - if val, ok := formTitles[formID]; ok { - title = val + if title == "" { + formTitles := map[string]string{ + "template_ticket": "Make a new ticket", + "template_url": "Add your URL", + "template_general": "Form", + } + if val, ok := formTitles[formID]; ok { + title = val + } } var exists bool = true @@ -188,7 +189,8 @@ var cmd_form Command = Command{ }, ComponentInteract: func(s *discordgo.Session, i *discordgo.InteractionCreate) { if strings.HasPrefix(i.Interaction.MessageComponentData().CustomID, "form:") { - jsonStringShowModal(i.Interaction, i.Interaction.MessageComponentData().CustomID, getFormType(strings.TrimPrefix(i.Interaction.MessageComponentData().CustomID, "form:"))) + var formManageID string = strings.TrimPrefix(i.Interaction.MessageComponentData().CustomID, "form:") + jsonStringShowModal(i.Interaction, i.Interaction.MessageComponentData().CustomID, getFormType(formManageID), getFormOverwriteTitle(formManageID)) } else if i.Interaction.MessageComponentData().CustomID == "form_demo" { jsonStringShowModal(i.Interaction, "form_demo", "form_demo") } diff --git a/handlers.go b/handlers.go index e51718b..dab63b7 100644 --- a/handlers.go +++ b/handlers.go @@ -139,6 +139,10 @@ 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) +} + func guildMemberJoin(s *discordgo.Session, m *discordgo.GuildMemberAdd) { err := s.GuildMemberRoleAdd(m.GuildID, m.User.ID, getAutoJoinRole(m.GuildID, m.User.Bot)) if err != nil { diff --git a/main.go b/main.go index a8e3fa6..dd6dc73 100644 --- a/main.go +++ b/main.go @@ -41,6 +41,7 @@ func main() { bot.AddHandler(ready) bot.AddHandler(interactionCreate) bot.AddHandler(messageCreate) + bot.AddHandler(messageDelete) bot.AddHandler(guildMemberJoin) err = bot.Open() if err != nil { diff --git a/manage_data.go b/manage_data.go index 0e219d7..38e5acf 100644 --- a/manage_data.go +++ b/manage_data.go @@ -250,25 +250,41 @@ func getFormType(formManageID string) string { func getFormResultValues(formManageID string) FormResult { var result FormResult - err := db.QueryRow("SELECT overwrite_title from form_manage WHERE form_manage_id = $1", formManageID).Scan(&result.OverwriteTitle) + err := db.QueryRow("SELECT overwrite_title FROM form_manage WHERE form_manage_id = $1", formManageID).Scan(&result.OverwriteTitle) if err != nil { log.Println(err) } - err = db.QueryRow("SELECT result_channel_id from form_manage WHERE form_manage_id = $1", formManageID).Scan(&result.ResultChannelID) + err = db.QueryRow("SELECT result_channel_id FROM form_manage WHERE form_manage_id = $1", formManageID).Scan(&result.ResultChannelID) if err != nil { log.Println(err) } - err = db.QueryRow("SELECT accept_channel_id from form_manage WHERE form_manage_id = $1", formManageID).Scan(&result.AcceptChannelID) + err = db.QueryRow("SELECT accept_channel_id FROM form_manage WHERE form_manage_id = $1", formManageID).Scan(&result.AcceptChannelID) if err != nil { log.Println(err) } - err = db.QueryRow("SELECT mods_can_comment from form_manage WHERE form_manage_id = $1", formManageID).Scan(&result.ModsCanComment) + err = db.QueryRow("SELECT mods_can_comment FROM form_manage WHERE form_manage_id = $1", formManageID).Scan(&result.ModsCanComment) if err != nil { log.Println(err) } return result } +func getFormOverwriteTitle(formManageID string) string { + var overwriteTitle string + err := db.QueryRow("SELECT overwrite_title FROM form_manage WHERE form_manage_id = $1", formManageID).Scan(&overwriteTitle) + if err != nil { + log.Println(err) + } + return overwriteTitle +} + +func removeForm(formManageID string) { + _, err := db.Exec("DELETE FROM form_manage WHERE form_manage_id = $1", formManageID) + if err != nil { + log.Println(err) + } +} + func setAutoJoinRole(guildID string, option string, roleID string) bool { var role_exists bool var autojoinroles_exists bool @@ -344,3 +360,10 @@ 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) + if err != nil { + log.Println(err) + } +} diff --git a/tool.go b/tool.go index b7f36df..deacf61 100644 --- a/tool.go +++ b/tool.go @@ -27,7 +27,7 @@ type ModalJson struct { Form []ModalJsonField `json:"form"` } -func jsonStringShowModal(interaction *discordgo.Interaction, manageID string, formID string) { +func jsonStringShowModal(interaction *discordgo.Interaction, manageID string, formID string, overwrite ...string) { var modal ModalJson = getModalByFormID(formID) var components []discordgo.MessageComponent for index, component := range modal.Form { @@ -50,6 +50,9 @@ func jsonStringShowModal(interaction *discordgo.Interaction, manageID string, fo }, }) } + if overwrite[0] != "" { + modal.Title = overwrite[0] + } err := bot.InteractionRespond(interaction, &discordgo.InteractionResponse{ Type: discordgo.InteractionResponseModal, Data: &discordgo.InteractionResponseData{