Make sure open vetting requests get removed if a user leaves
ci/woodpecker/push/woodpecker Pipeline was successful Details

This commit is contained in:
Elara 2023-12-08 08:11:17 -08:00
parent 52038b4765
commit 2c84e6b79c
2 changed files with 29 additions and 0 deletions

View File

@ -397,3 +397,31 @@ func onVettingResponse(s *discordgo.Session, i *discordgo.InteractionCreate) err
return db.RemoveVettingReq(i.GuildID, i.Message.ID)
}
func onMemberLeave(s *discordgo.Session, gmr *discordgo.GuildMemberRemove) {
msgID, err := db.VettingReqMsgID(gmr.GuildID, gmr.Member.User.ID)
if errors.Is(err, sql.ErrNoRows) {
return
} else if err != nil {
log.Error("Error getting vetting request ID after member leave").Str("user-id", gmr.Member.User.ID).Err(err).Send()
return
}
guild, err := db.GuildByID(gmr.GuildID)
if err != nil {
log.Error("Error getting guild").Str("guild-id", gmr.GuildID).Err(err).Send()
return
}
if guild.VettingReqChanID != "" {
err = s.ChannelMessageDelete(guild.VettingReqChanID, msgID)
if err != nil {
log.Error("Error deleting vetting request message after member leave").Str("msg-id", msgID).Err(err).Send()
}
}
err = db.RemoveVettingReq(gmr.GuildID, msgID)
if err != nil {
log.Error("Error removing vetting request after member leave").Str("user-id", gmr.Member.User.ID).Err(err).Send()
}
}

View File

@ -34,6 +34,7 @@ func Init(s *discordgo.Session) error {
s.AddHandler(onMemberJoin)
s.AddHandler(util.InteractionErrorHandler("on-vetting-req", onVettingRequest))
s.AddHandler(util.InteractionErrorHandler("on-vetting-resp", onVettingResponse))
s.AddHandler(onMemberLeave)
commands.Register(s, onMakeVettingMsg, &discordgo.ApplicationCommand{
Name: "Make Vetting Message",