feat(xp): increase precision of timestamp
seems like to fix periodic reducer not working
This commit is contained in:
parent
cf2093095e
commit
026abcc07a
5 changed files with 20 additions and 33 deletions
1
.gitignore
vendored
1
.gitignore
vendored
|
@ -26,3 +26,4 @@ go.work
|
|||
tmp
|
||||
config/**.toml
|
||||
data
|
||||
docker-compose.yml
|
||||
|
|
|
@ -1,22 +0,0 @@
|
|||
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
|
|
@ -50,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 y, d int
|
||||
var m time.Month
|
||||
var unix time.Time
|
||||
if gokord.Debug {
|
||||
y, m, d = time.Unix(time.Now().Unix()-int64(24*60*60), 0).Date() // reduce time for debug
|
||||
unix = time.Unix(time.Now().Unix()-int64(n), 0) // reduce time for debug
|
||||
} else {
|
||||
y, m, d = time.Unix(time.Now().Unix()-int64(n*24*60*60), 0).Date()
|
||||
unix = time.Unix(time.Now().Unix()-int64(n*24*60*60), 0)
|
||||
}
|
||||
return fmt.Sprintf("%d-%d-%d", y, m, d)
|
||||
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())
|
||||
}
|
||||
|
||||
func TrimMessage(s string) string {
|
||||
|
|
10
main.go
10
main.go
|
@ -195,7 +195,15 @@ func afterInit(dg *discordgo.Session) {
|
|||
dg.AddHandler(OnVoiceUpdate)
|
||||
dg.AddHandler(OnLeave)
|
||||
|
||||
stopPeriodicReducer = utils.NewTimer(24*time.Hour, func(stop chan<- interface{}) {
|
||||
d := 24 * time.Hour
|
||||
if gokord.Debug {
|
||||
d = 24 * time.Second
|
||||
}
|
||||
|
||||
user.PeriodicReducer(dg)
|
||||
|
||||
stopPeriodicReducer = utils.NewTimer(d, func(stop chan<- interface{}) {
|
||||
utils.SendDebug("Periodic reducer")
|
||||
user.PeriodicReducer(dg)
|
||||
})
|
||||
}
|
||||
|
|
|
@ -86,14 +86,14 @@ func PeriodicReducer(dg *discordgo.Session) {
|
|||
go func() {
|
||||
defer wg.Done()
|
||||
cfg := config.GetGuildConfig(g.ID)
|
||||
err := gokord.DB.
|
||||
res := gokord.DB.
|
||||
Model(&CopaingXP{}).
|
||||
Where("guild_id = ? and created_at < ?", g.ID, exp.TimeStampNDaysBefore(cfg.DaysXPRemains)).
|
||||
Delete(&CopaingXP{}).
|
||||
Error
|
||||
if err != nil {
|
||||
utils.SendAlert("user/level.go - Removing old XP", err.Error(), "guild_id", g.ID)
|
||||
Delete(&CopaingXP{})
|
||||
if res.Error != nil {
|
||||
utils.SendAlert("user/level.go - Removing old XP", res.Error.Error(), "guild_id", g.ID)
|
||||
}
|
||||
utils.SendDebug("Guild cleaned", "guild", g.Name, "rows affected", res.RowsAffected)
|
||||
}()
|
||||
}
|
||||
wg.Wait()
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue