Don't add auto role until after membership check
CI / build (push) Has been cancelled

This commit is contained in:
Dustin Pianalto
2021-08-18 11:01:24 -08:00
parent b5a55a1b77
commit f97494626f
3 changed files with 85 additions and 14 deletions
+48 -13
View File
@@ -41,21 +41,23 @@ func OnGuildMemberAdd(s *discordgo.Session, member *discordgo.GuildMemberAdd) {
if err != nil {
log.Println("Error adding user to guild: ", err)
}
roles, err := services.RoleService.GetAutoRoles(member.GuildID)
if err != nil {
log.Println("Error getting Auto Join Roles: ", err)
}
log.Println(roles)
for _, r := range roles {
role, err := s.State.Role(member.GuildID, r.ID)
if !member.Member.Pending {
roles, err := services.RoleService.GetAutoRoles(member.GuildID)
if err != nil {
log.Println("Error getting role: ", err)
continue
log.Println("Error getting Auto Join Roles: ", err)
}
err = s.GuildMemberRoleAdd(member.GuildID, member.User.ID, role.ID)
if err != nil {
log.Println("Error adding Role to member: ", err)
continue
log.Println(roles)
for _, r := range roles {
role, err := s.State.Role(member.GuildID, r.ID)
if err != nil {
log.Println("Error getting role: ", err)
continue
}
err = s.GuildMemberRoleAdd(member.GuildID, member.User.ID, role.ID)
if err != nil {
log.Println("Error adding Role to member: ", err)
continue
}
}
}
}
@@ -88,3 +90,36 @@ func OnGuildMemberRemove(s *discordgo.Session, member *discordgo.GuildMemberRemo
}
}
}
func OnGuildMemberUpdate(s *discordgo.Session, member *discordgo.GuildMemberUpdate) {
defer func() {
if r := recover(); r != nil {
log.Println("Recovered from panic in OnGuildMemberUpdate: ", r)
}
}()
if !member.Member.Pending {
roles, err := services.RoleService.GetAutoRoles(member.GuildID)
if err != nil {
log.Println("Error getting Auto Join Roles: ", err)
}
log.Println(roles)
RoleLoop:
for _, r := range roles {
for _, rl := range member.Roles {
if rl == r.ID {
continue RoleLoop
}
}
role, err := s.State.Role(member.GuildID, r.ID)
if err != nil {
log.Println("Error getting role: ", err)
continue
}
err = s.GuildMemberRoleAdd(member.GuildID, member.User.ID, role.ID)
if err != nil {
log.Println("Error adding Role to member: ", err)
continue
}
}
}
}
@@ -163,5 +163,4 @@ func MarkMemberInactive(s *discordgo.Session, m *discordgo.GuildMemberRemove) {
log.Println(fmt.Errorf("error marking %s as inactive: %w", m.User.ID, err))
return
}
log.Println("User left: %s")
}