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) { | func ready(s *discordgo.Session, event *discordgo.Ready) { | ||||||
| 	fmt.Print("\nStarting up...") | 	fmt.Print("\nStarting up...") | ||||||
|  | 	findAndDeleteUnusedMessages() | ||||||
| 	removeOldCommandFromAllGuilds(s) | 	removeOldCommandFromAllGuilds(s) | ||||||
| 	var existingCommandNames []string | 	var existingCommandNames []string | ||||||
| 	for _, guild := range event.Guilds { | 	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 | 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) { | func guildMemberJoin(s *discordgo.Session, m *discordgo.GuildMemberAdd) { | ||||||
|   | |||||||
| @@ -361,9 +361,31 @@ func isAutopublishEnabled(guildID string, newsChannelID string) bool { | |||||||
| 	return enabled | 	return enabled | ||||||
| } | } | ||||||
|  |  | ||||||
| func tryDeleteUnusedMessage(guildID string, channelID string, messageID string) { | func tryDeleteUnusedMessage(messageID string) { | ||||||
| 	_, err := db.Exec("DELETE FROM form_manage WHERE guild_id = $1 AND channel_id = $2 AND message_id = $3", guildID, channelID, messageID) | 	_, err := db.Exec("DELETE FROM form_manage WHERE message_id = $1", messageID) | ||||||
| 	if err != nil { | 	if err != nil { | ||||||
| 		log.Println(err) | 		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"` | 	Form     []ModalJsonField `json:"form"` | ||||||
| } | } | ||||||
|  |  | ||||||
|  | type MessageIDs struct { | ||||||
|  | 	ID        string | ||||||
|  | 	ChannelID string | ||||||
|  | } | ||||||
|  |  | ||||||
| func jsonStringShowModal(interaction *discordgo.Interaction, manageID string, formID string, overwrite ...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 | ||||||
| @@ -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