refactor
This commit is contained in:
parent
bd9b845742
commit
604c932a4c
18
cron/cron.go
18
cron/cron.go
|
@ -21,15 +21,17 @@ type Config struct {
|
||||||
|
|
||||||
func Attach(c *cron.Cron, cfg Config) {
|
func Attach(c *cron.Cron, cfg Config) {
|
||||||
h := &handler{
|
h := &handler{
|
||||||
lastEnnobledAt: make(map[string]time.Time),
|
lastEnnoblementAt: make(map[string]time.Time),
|
||||||
serverRepo: cfg.ServerRepo,
|
serverRepo: cfg.ServerRepo,
|
||||||
observationRepo: cfg.ObservationRepo,
|
observationRepo: cfg.ObservationRepo,
|
||||||
discord: cfg.Discord,
|
discord: cfg.Discord,
|
||||||
api: cfg.API,
|
api: cfg.API,
|
||||||
}
|
}
|
||||||
c.AddFunc("@every 1m", h.checkLastEnnoblements)
|
c.AddFunc("@every 1m", h.checkLastEnnoblements)
|
||||||
go h.checkBotMembershipOnServers()
|
|
||||||
c.AddFunc("@every 30m", h.checkBotMembershipOnServers)
|
c.AddFunc("@every 30m", h.checkBotMembershipOnServers)
|
||||||
go h.deleteClosedTribalwarsWorlds()
|
c.AddFunc("@every 2h", h.deleteClosedTribalWarsServers)
|
||||||
c.AddFunc("@every 2h", h.deleteClosedTribalwarsWorlds)
|
go func() {
|
||||||
|
h.checkBotMembershipOnServers()
|
||||||
|
h.deleteClosedTribalWarsServers()
|
||||||
|
}()
|
||||||
}
|
}
|
||||||
|
|
|
@ -16,11 +16,11 @@ import (
|
||||||
)
|
)
|
||||||
|
|
||||||
type handler struct {
|
type handler struct {
|
||||||
lastEnnobledAt map[string]time.Time
|
lastEnnoblementAt map[string]time.Time
|
||||||
serverRepo server.Repository
|
serverRepo server.Repository
|
||||||
observationRepo observation.Repository
|
observationRepo observation.Repository
|
||||||
discord *discord.Session
|
discord *discord.Session
|
||||||
api *sdk.SDK
|
api *sdk.SDK
|
||||||
}
|
}
|
||||||
|
|
||||||
func (h *handler) loadEnnoblements(worlds []string) map[string]ennoblements {
|
func (h *handler) loadEnnoblements(worlds []string) map[string]ennoblements {
|
||||||
|
@ -43,18 +43,18 @@ func (h *handler) loadEnnoblements(worlds []string) map[string]ennoblements {
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
lastEnnobledAt, ok := h.lastEnnobledAt[w]
|
lastEnnoblementAt, ok := h.lastEnnoblementAt[w]
|
||||||
if !ok {
|
if !ok {
|
||||||
lastEnnobledAt = time.Now().Add(-1 * time.Minute)
|
lastEnnoblementAt = time.Now().Add(-60 * time.Minute)
|
||||||
}
|
}
|
||||||
|
|
||||||
m[w] = filterEnnoblements(es, lastEnnobledAt)
|
m[w] = filterEnnoblements(es, lastEnnoblementAt)
|
||||||
|
|
||||||
lastEnnoblement := m[w].getLastEnnoblement()
|
lastEnnoblement := m[w].getLastEnnoblement()
|
||||||
if lastEnnoblement != nil {
|
if lastEnnoblement != nil {
|
||||||
lastEnnobledAt = lastEnnoblement.EnnobledAt.In(time.UTC)
|
lastEnnoblementAt = lastEnnoblement.EnnobledAt
|
||||||
}
|
}
|
||||||
h.lastEnnobledAt[w] = lastEnnobledAt
|
h.lastEnnoblementAt[w] = lastEnnoblementAt
|
||||||
}
|
}
|
||||||
|
|
||||||
return m
|
return m
|
||||||
|
@ -89,7 +89,7 @@ func (h *handler) loadLangVersions(worlds []string) map[shared_models.LanguageTa
|
||||||
func (h *handler) checkLastEnnoblements() {
|
func (h *handler) checkLastEnnoblements() {
|
||||||
worlds, err := h.observationRepo.FetchWorlds(context.Background())
|
worlds, err := h.observationRepo.FetchWorlds(context.Background())
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Print("checkLastEnnoblements: " + err.Error())
|
log.Print("checkLastEnnoblements error: " + err.Error())
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
log.Print("checkLastEnnoblements: worlds: ", worlds)
|
log.Print("checkLastEnnoblements: worlds: ", worlds)
|
||||||
|
@ -99,23 +99,21 @@ func (h *handler) checkLastEnnoblements() {
|
||||||
log.Print("checkLastEnnoblements error: " + err.Error())
|
log.Print("checkLastEnnoblements error: " + err.Error())
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
log.Print("checkLastEnnoblements: total number of loaded discord servers: ", total)
|
log.Print("checkLastEnnoblements: number of loaded discord servers: ", total)
|
||||||
|
|
||||||
langVersions := h.loadLangVersions(worlds)
|
langVersions := h.loadLangVersions(worlds)
|
||||||
|
ennoblementsByServerKey := h.loadEnnoblements(worlds)
|
||||||
ennoblements := h.loadEnnoblements(worlds)
|
|
||||||
log.Println("checkLastEnnoblements: loaded ennoblements from", len(ennoblements), "tribalwars servers")
|
|
||||||
|
|
||||||
for _, server := range servers {
|
for _, server := range servers {
|
||||||
if server.ConqueredVillagesChannelID == "" && server.LostVillagesChannelID == "" {
|
if server.ConqueredVillagesChannelID == "" && server.LostVillagesChannelID == "" {
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
for _, tribe := range server.Observations {
|
for _, tribe := range server.Observations {
|
||||||
es, ok := ennoblements[tribe.World]
|
ennoblements, ok := ennoblementsByServerKey[tribe.World]
|
||||||
langVersion, ok2 := langVersions[utils.LanguageTagFromWorldName(tribe.World)]
|
langVersion, ok2 := langVersions[utils.LanguageTagFromWorldName(tribe.World)]
|
||||||
if ok && ok2 {
|
if ok && ok2 {
|
||||||
if server.LostVillagesChannelID != "" {
|
if server.LostVillagesChannelID != "" {
|
||||||
for _, ennoblement := range es.getLostVillagesByTribe(tribe.TribeID) {
|
for _, ennoblement := range ennoblements.getLostVillagesByTribe(tribe.TribeID) {
|
||||||
if !isPlayerTribeNil(ennoblement.NewOwner) &&
|
if !isPlayerTribeNil(ennoblement.NewOwner) &&
|
||||||
server.Observations.Contains(tribe.World, ennoblement.NewOwner.Tribe.ID) {
|
server.Observations.Contains(tribe.World, ennoblement.NewOwner.Tribe.ID) {
|
||||||
continue
|
continue
|
||||||
|
@ -137,7 +135,7 @@ func (h *handler) checkLastEnnoblements() {
|
||||||
}
|
}
|
||||||
|
|
||||||
if server.ConqueredVillagesChannelID != "" {
|
if server.ConqueredVillagesChannelID != "" {
|
||||||
for _, ennoblement := range es.getConqueredVillagesByTribe(tribe.TribeID) {
|
for _, ennoblement := range ennoblements.getConqueredVillagesByTribe(tribe.TribeID) {
|
||||||
if !isPlayerTribeNil(ennoblement.OldOwner) &&
|
if !isPlayerTribeNil(ennoblement.OldOwner) &&
|
||||||
server.Observations.Contains(tribe.World, ennoblement.OldOwner.Tribe.ID) {
|
server.Observations.Contains(tribe.World, ennoblement.OldOwner.Tribe.ID) {
|
||||||
continue
|
continue
|
||||||
|
@ -189,20 +187,20 @@ func (h *handler) checkBotMembershipOnServers() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (h *handler) deleteClosedTribalwarsWorlds() {
|
func (h *handler) deleteClosedTribalWarsServers() {
|
||||||
worlds, err := h.observationRepo.FetchWorlds(context.Background())
|
servers, err := h.observationRepo.FetchWorlds(context.Background())
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Print("deleteClosedTribalwarsWorlds: " + err.Error())
|
log.Print("deleteClosedTribalWarsServers: " + err.Error())
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
log.Print("deleteClosedTribalwarsWorlds: worlds: ", worlds)
|
log.Print("deleteClosedTribalWarsServers: servers: ", servers)
|
||||||
|
|
||||||
list, err := h.api.Servers.Browse(&shared_models.ServerFilter{
|
list, err := h.api.Servers.Browse(&shared_models.ServerFilter{
|
||||||
Key: worlds,
|
Key: servers,
|
||||||
Status: []shared_models.ServerStatus{shared_models.ServerStatusClosed},
|
Status: []shared_models.ServerStatus{shared_models.ServerStatusClosed},
|
||||||
}, nil)
|
}, nil)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Print("deleteClosedTribalwarsWorlds: " + err.Error())
|
log.Print("deleteClosedTribalWarsServers: " + err.Error())
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -216,9 +214,9 @@ func (h *handler) deleteClosedTribalwarsWorlds() {
|
||||||
World: keys,
|
World: keys,
|
||||||
})
|
})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Print("deleteClosedTribalwarsWorlds error: " + err.Error())
|
log.Print("deleteClosedTribalWarsServers error: " + err.Error())
|
||||||
} else {
|
} else {
|
||||||
log.Printf("deleteClosedTribalwarsWorlds: total number of deleted observations: %d", len(deleted))
|
log.Printf("deleteClosedTribalWarsServers: total number of deleted observations: %d", len(deleted))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -9,8 +9,7 @@ import (
|
||||||
func filterEnnoblements(ennoblements []*shared_models.LiveEnnoblement, t time.Time) []*shared_models.LiveEnnoblement {
|
func filterEnnoblements(ennoblements []*shared_models.LiveEnnoblement, t time.Time) []*shared_models.LiveEnnoblement {
|
||||||
filtered := []*shared_models.LiveEnnoblement{}
|
filtered := []*shared_models.LiveEnnoblement{}
|
||||||
for _, ennoblement := range ennoblements {
|
for _, ennoblement := range ennoblements {
|
||||||
utc := ennoblement.EnnobledAt.In(time.UTC)
|
if ennoblement.EnnobledAt.Before(t) || ennoblement.EnnobledAt.Equal(t) {
|
||||||
if utc.Before(t) || utc.Equal(t) {
|
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
filtered = append(filtered, ennoblement)
|
filtered = append(filtered, ennoblement)
|
||||||
|
|
Reference in New Issue