diff --git a/.gitignore b/.gitignore index c8977f6..7cc06cf 100644 --- a/.gitignore +++ b/.gitignore @@ -26,4 +26,3 @@ go.work tmp config/**.toml data -docker-compose.yml diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..77b28da --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,22 @@ +services: + bot: + build: . + restart: always + env_file: + - .env + volumes: + - ./config:/app/config + depends_on: + - postgres + postgres: + image: postgres:alpine + env_file: + - .env + volumes: + - ./data:/var/lib/postgresql/data + adminer: + image: docker.io/adminer + ports: + - "8080:8080" + depends_on: + - postgres diff --git a/exp/functions.go b/exp/functions.go index 2608094..026eb34 100644 --- a/exp/functions.go +++ b/exp/functions.go @@ -2,13 +2,12 @@ package exp import ( "fmt" + "github.com/anhgelus/gokord" "math" "regexp" "slices" "strings" "time" - - "github.com/anhgelus/gokord" ) func MessageXP(length uint, diversity uint) uint { @@ -51,14 +50,14 @@ func LevelXP(level uint) uint { // TimeStampNDaysBefore returns the timestamp (year-month-day) n days before today func TimeStampNDaysBefore(n uint) string { - var unix time.Time + var y, d int + var m time.Month if gokord.Debug { - unix = time.Unix(time.Now().Unix()-int64(n), 0) // reduce time for debug + y, m, d = time.Unix(time.Now().Unix()-int64(24*60*60), 0).Date() // reduce time for debug } else { - unix = time.Unix(time.Now().Unix()-int64(n*24*60*60), 0) + y, m, d = time.Unix(time.Now().Unix()-int64(n*24*60*60), 0).Date() } - unix = unix.UTC() - return fmt.Sprintf("%d-%d-%d %d:%d:%d UTC", unix.Year(), unix.Month(), unix.Day(), unix.Hour(), unix.Minute(), unix.Second()) + return fmt.Sprintf("%d-%d-%d", y, m, d) } func TrimMessage(s string) string { diff --git a/main.go b/main.go index 0c45e6a..b785259 100644 --- a/main.go +++ b/main.go @@ -4,17 +4,16 @@ import ( _ "embed" "errors" "flag" - "os" - "time" - "github.com/anhgelus/gokord" - "github.com/anhgelus/gokord/cmd" + cmd "github.com/anhgelus/gokord/cmd" "github.com/anhgelus/gokord/logger" "github.com/anhgelus/les-copaings-bot/commands" "github.com/anhgelus/les-copaings-bot/config" "github.com/anhgelus/les-copaings-bot/user" "github.com/bwmarrin/discordgo" "github.com/joho/godotenv" + "os" + "time" ) var ( @@ -118,15 +117,7 @@ func main() { creditsCmd, }, AfterInit: func(dg *discordgo.Session) { - d := 24 * time.Hour - if gokord.Debug { - d = 24 * time.Second - } - - user.PeriodicReducer(dg) - - stopPeriodicReducer = gokord.NewTimer(d, func(stop chan<- interface{}) { - logger.Debug("Periodic reducer") + stopPeriodicReducer = gokord.NewTimer(24*time.Hour, func(stop chan<- interface{}) { user.PeriodicReducer(dg) }) }, diff --git a/user/level.go b/user/level.go index 2b7e869..82ae608 100644 --- a/user/level.go +++ b/user/level.go @@ -1,15 +1,14 @@ package user import ( - "slices" - "sync" - "time" - "github.com/anhgelus/gokord" "github.com/anhgelus/gokord/logger" "github.com/anhgelus/les-copaings-bot/config" "github.com/anhgelus/les-copaings-bot/exp" "github.com/bwmarrin/discordgo" + "slices" + "sync" + "time" ) func onNewLevel(dg *discordgo.Session, m *discordgo.Member, level uint) { @@ -87,14 +86,14 @@ func PeriodicReducer(dg *discordgo.Session) { go func() { defer wg.Done() cfg := config.GetGuildConfig(g.ID) - res := gokord.DB. + err := gokord.DB. Model(&CopaingXP{}). Where("guild_id = ? and created_at < ?", g.ID, exp.TimeStampNDaysBefore(cfg.DaysXPRemains)). - Delete(&CopaingXP{}) - if res.Error != nil { - logger.Alert("user/level.go - Removing old XP", res.Error.Error(), "guild_id", g.ID) + Delete(&CopaingXP{}). + Error + if err != nil { + logger.Alert("user/level.go - Removing old XP", err.Error(), "guild_id", g.ID) } - logger.Debug("Guild cleaned", "guild", g.Name, "rows affected", res.RowsAffected) }() } wg.Wait()