clearing unused values from database on ready
This commit is contained in:
		| @@ -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) { | ||||
|   | ||||
| @@ -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
									
									
									
									
									
								
							
							
						
						
									
										21
									
								
								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) | ||||
| 		} | ||||
| 	} | ||||
| } | ||||
|   | ||||
		Reference in New Issue
	
	Block a user