clearing unused values from database on ready

This commit is contained in:
2024-03-11 12:32:38 +01:00
parent 23cdfb2862
commit 357557c023
3 changed files with 47 additions and 3 deletions

View File

@@ -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) {

View File

@@ -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
}

21
tool.go
View File

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