Reorg and add services
This commit is contained in:
@@ -0,0 +1,73 @@
|
||||
package user_management
|
||||
|
||||
import (
|
||||
"log"
|
||||
|
||||
"github.com/bwmarrin/discordgo"
|
||||
"github.com/dustinpianalto/goff"
|
||||
"github.com/dustinpianalto/goff/internal/services"
|
||||
)
|
||||
|
||||
func OnGuildMemberAdd(s *discordgo.Session, member *discordgo.GuildMemberAdd) {
|
||||
defer func() {
|
||||
if r := recover(); r != nil {
|
||||
log.Println("Recovered from panic in OnGuildMemberAdd", r)
|
||||
}
|
||||
}()
|
||||
user, err := services.UserService.User(member.User.ID)
|
||||
if err != nil {
|
||||
log.Println("Error getting user from database: ", err)
|
||||
user = &goff.User{
|
||||
ID: member.User.ID,
|
||||
Banned: false,
|
||||
Logging: true,
|
||||
IsActive: true,
|
||||
IsStaff: false,
|
||||
IsAdmin: false,
|
||||
}
|
||||
err := services.UserService.CreateUser(user)
|
||||
if err != nil {
|
||||
log.Println("Error adding user to database: ", err)
|
||||
}
|
||||
}
|
||||
if !user.IsActive {
|
||||
user.IsActive = true
|
||||
err = services.UserService.UpdateUser(user)
|
||||
if err != nil {
|
||||
log.Println("Error marking user as active: ", err)
|
||||
}
|
||||
}
|
||||
err = services.UserService.AddUserToGuild(user, &goff.Guild{ID: member.GuildID})
|
||||
if err != nil {
|
||||
log.Println("Error adding user to guild: ", err)
|
||||
}
|
||||
}
|
||||
|
||||
func OnGuildMemberRemove(s *discordgo.Session, member *discordgo.GuildMemberRemove) {
|
||||
defer func() {
|
||||
if r := recover(); r != nil {
|
||||
log.Println("Recovered from panic in OnGuildMemberRemove: ", r)
|
||||
}
|
||||
}()
|
||||
user, err := services.UserService.User(member.User.ID)
|
||||
if err != nil {
|
||||
log.Println("Error getting user from database: ", err)
|
||||
return
|
||||
}
|
||||
err = services.UserService.RemoveUserFromGuild(user, &goff.Guild{ID: member.GuildID})
|
||||
if err != nil {
|
||||
log.Println("Error removing user from guild: ", err)
|
||||
}
|
||||
for i, g := range user.Guilds {
|
||||
if g == member.GuildID {
|
||||
user.Guilds[len(user.Guilds)-1], user.Guilds[i] = user.Guilds[i], user.Guilds[len(user.Guilds)-1]
|
||||
user.Guilds = user.Guilds[:len(user.Guilds)-1]
|
||||
}
|
||||
}
|
||||
if len(user.Guilds) == 0 {
|
||||
err = services.UserService.MarkUserInactive(user)
|
||||
if err != nil {
|
||||
log.Println("Error marking user as inactive: ", err)
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user