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