53 lines
1.1 KiB
Go
53 lines
1.1 KiB
Go
package config
|
|
|
|
import (
|
|
"github.com/anhgelus/gokord"
|
|
"github.com/anhgelus/gokord/utils"
|
|
"gorm.io/gorm"
|
|
"strings"
|
|
)
|
|
|
|
type GuildConfig struct {
|
|
gorm.Model
|
|
GuildID string `gorm:"not null"`
|
|
XpRoles []XpRole
|
|
DisabledChannels string
|
|
FallbackChannel string
|
|
}
|
|
|
|
type XpRole struct {
|
|
gorm.Model
|
|
XP uint
|
|
RoleID string
|
|
GuildConfigID uint
|
|
}
|
|
|
|
func GetGuildConfig(guildID string) *GuildConfig {
|
|
cfg := GuildConfig{GuildID: guildID}
|
|
if err := cfg.Load(); err != nil {
|
|
utils.SendAlert("config/guild.go - Loading guild config", err.Error(), "guild_id", guildID)
|
|
return nil
|
|
}
|
|
return &cfg
|
|
}
|
|
|
|
func (cfg *GuildConfig) Load() error {
|
|
return gokord.DB.Where("guild_id = ?", cfg.GuildID).Preload("XpRoles").FirstOrCreate(cfg).Error
|
|
}
|
|
|
|
func (cfg *GuildConfig) Save() error {
|
|
return gokord.DB.Save(cfg).Error
|
|
}
|
|
|
|
func (cfg *GuildConfig) IsDisabled(channelID string) bool {
|
|
return strings.Contains(cfg.DisabledChannels, channelID)
|
|
}
|
|
|
|
func (cfg *GuildConfig) FindXpRole(roleID string) (int, *XpRole) {
|
|
for i, r := range cfg.XpRoles {
|
|
if r.RoleID == roleID {
|
|
return i, &r
|
|
}
|
|
}
|
|
return 0, nil
|
|
}
|