Make sure open vetting requests get removed if a user leaves
ci/woodpecker/push/woodpecker Pipeline was successful
Details
ci/woodpecker/push/woodpecker Pipeline was successful
Details
This commit is contained in:
parent
52038b4765
commit
2c84e6b79c
|
@ -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()
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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",
|
||||
|
|
Loading…
Reference in New Issue