now deletes deleted messages from database

This commit is contained in:
2024-03-11 10:22:58 +01:00
parent 3819a3eeff
commit 8935fba213
5 changed files with 47 additions and 14 deletions

View File

@@ -142,14 +142,15 @@ var cmd_form Command = Command{
if formID == "" { if formID == "" {
formID = "template_general" formID = "template_general"
} }
if title == "" {
formTitles := map[string]string{ formTitles := map[string]string{
"template_ticket": "Make a new ticket", "template_ticket": "Make a new ticket",
"template_url": "Add your URL", "template_url": "Add your URL",
"template_general": "Form", "template_general": "Form",
} }
if val, ok := formTitles[formID]; ok { if val, ok := formTitles[formID]; ok {
title = val title = val
}
} }
var exists bool = true var exists bool = true
@@ -188,7 +189,8 @@ var cmd_form Command = Command{
}, },
ComponentInteract: func(s *discordgo.Session, i *discordgo.InteractionCreate) { ComponentInteract: func(s *discordgo.Session, i *discordgo.InteractionCreate) {
if strings.HasPrefix(i.Interaction.MessageComponentData().CustomID, "form:") { 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" { } else if i.Interaction.MessageComponentData().CustomID == "form_demo" {
jsonStringShowModal(i.Interaction, "form_demo", "form_demo") jsonStringShowModal(i.Interaction, "form_demo", "form_demo")
} }

View File

@@ -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) { func guildMemberJoin(s *discordgo.Session, m *discordgo.GuildMemberAdd) {
err := s.GuildMemberRoleAdd(m.GuildID, m.User.ID, getAutoJoinRole(m.GuildID, m.User.Bot)) err := s.GuildMemberRoleAdd(m.GuildID, m.User.ID, getAutoJoinRole(m.GuildID, m.User.Bot))
if err != nil { if err != nil {

View File

@@ -41,6 +41,7 @@ func main() {
bot.AddHandler(ready) bot.AddHandler(ready)
bot.AddHandler(interactionCreate) bot.AddHandler(interactionCreate)
bot.AddHandler(messageCreate) bot.AddHandler(messageCreate)
bot.AddHandler(messageDelete)
bot.AddHandler(guildMemberJoin) bot.AddHandler(guildMemberJoin)
err = bot.Open() err = bot.Open()
if err != nil { if err != nil {

View File

@@ -250,25 +250,41 @@ func getFormType(formManageID string) string {
func getFormResultValues(formManageID string) FormResult { func getFormResultValues(formManageID string) FormResult {
var result 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 { if err != nil {
log.Println(err) 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 { if err != nil {
log.Println(err) 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 { if err != nil {
log.Println(err) 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 { if err != nil {
log.Println(err) log.Println(err)
} }
return result 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 { func setAutoJoinRole(guildID string, option string, roleID string) bool {
var role_exists bool var role_exists bool
var autojoinroles_exists bool var autojoinroles_exists bool
@@ -344,3 +360,10 @@ func isAutopublishEnabled(guildID string, newsChannelID string) bool {
} }
return enabled 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)
}
}

View File

@@ -27,7 +27,7 @@ type ModalJson struct {
Form []ModalJsonField `json:"form"` 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 modal ModalJson = getModalByFormID(formID)
var components []discordgo.MessageComponent var components []discordgo.MessageComponent
for index, component := range modal.Form { 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{ err := bot.InteractionRespond(interaction, &discordgo.InteractionResponse{
Type: discordgo.InteractionResponseModal, Type: discordgo.InteractionResponseModal,
Data: &discordgo.InteractionResponseData{ Data: &discordgo.InteractionResponseData{