log system improved
This commit is contained in:
parent
38325e63d4
commit
711760a568
21
cron/cron.go
21
cron/cron.go
|
@ -3,6 +3,7 @@ package cron
|
||||||
import (
|
import (
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
|
"github.com/sirupsen/logrus"
|
||||||
"github.com/tribalwarshelp/golang-sdk/sdk"
|
"github.com/tribalwarshelp/golang-sdk/sdk"
|
||||||
"github.com/tribalwarshelp/shared/mode"
|
"github.com/tribalwarshelp/shared/mode"
|
||||||
|
|
||||||
|
@ -14,6 +15,8 @@ import (
|
||||||
"github.com/robfig/cron/v3"
|
"github.com/robfig/cron/v3"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
var log = logrus.WithField("package", "cron")
|
||||||
|
|
||||||
type Config struct {
|
type Config struct {
|
||||||
ServerRepo server.Repository
|
ServerRepo server.Repository
|
||||||
ObservationRepo observation.Repository
|
ObservationRepo observation.Repository
|
||||||
|
@ -24,7 +27,7 @@ type Config struct {
|
||||||
}
|
}
|
||||||
|
|
||||||
func Attach(c *cron.Cron, cfg Config) {
|
func Attach(c *cron.Cron, cfg Config) {
|
||||||
h := &handler{
|
w := &worker{
|
||||||
lastEnnoblementAt: make(map[string]time.Time),
|
lastEnnoblementAt: make(map[string]time.Time),
|
||||||
serverRepo: cfg.ServerRepo,
|
serverRepo: cfg.ServerRepo,
|
||||||
observationRepo: cfg.ObservationRepo,
|
observationRepo: cfg.ObservationRepo,
|
||||||
|
@ -33,16 +36,16 @@ func Attach(c *cron.Cron, cfg Config) {
|
||||||
api: cfg.API,
|
api: cfg.API,
|
||||||
status: cfg.Status,
|
status: cfg.Status,
|
||||||
}
|
}
|
||||||
c.AddFunc("@every 1m", h.checkEnnoblements)
|
c.AddFunc("@every 1m", w.checkEnnoblements)
|
||||||
c.AddFunc("@every 30m", h.checkBotServers)
|
c.AddFunc("@every 30m", w.checkBotServers)
|
||||||
c.AddFunc("@every 2h10m", h.deleteClosedTribalWarsServers)
|
c.AddFunc("@every 2h10m", w.deleteClosedTribalWarsServers)
|
||||||
c.AddFunc("@every 2h", h.updateBotStatus)
|
c.AddFunc("@every 2h", w.updateBotStatus)
|
||||||
go func() {
|
go func() {
|
||||||
h.checkBotServers()
|
w.checkBotServers()
|
||||||
h.deleteClosedTribalWarsServers()
|
w.deleteClosedTribalWarsServers()
|
||||||
h.updateBotStatus()
|
w.updateBotStatus()
|
||||||
if mode.Get() == mode.DevelopmentMode {
|
if mode.Get() == mode.DevelopmentMode {
|
||||||
h.checkEnnoblements()
|
w.checkEnnoblements()
|
||||||
}
|
}
|
||||||
}()
|
}()
|
||||||
}
|
}
|
||||||
|
|
|
@ -3,7 +3,6 @@ package cron
|
||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
"fmt"
|
"fmt"
|
||||||
"log"
|
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"github.com/nicksnyder/go-i18n/v2/i18n"
|
"github.com/nicksnyder/go-i18n/v2/i18n"
|
||||||
|
@ -22,7 +21,7 @@ import (
|
||||||
"github.com/tribalwarshelp/golang-sdk/sdk"
|
"github.com/tribalwarshelp/golang-sdk/sdk"
|
||||||
)
|
)
|
||||||
|
|
||||||
type handler struct {
|
type worker struct {
|
||||||
lastEnnoblementAt map[string]time.Time
|
lastEnnoblementAt map[string]time.Time
|
||||||
serverRepo server.Repository
|
serverRepo server.Repository
|
||||||
observationRepo observation.Repository
|
observationRepo observation.Repository
|
||||||
|
@ -32,7 +31,7 @@ type handler struct {
|
||||||
status string
|
status string
|
||||||
}
|
}
|
||||||
|
|
||||||
func (h *handler) loadEnnoblements(servers []string) (map[string]ennoblements, error) {
|
func (w *worker) loadEnnoblements(servers []string) (map[string]ennoblements, error) {
|
||||||
m := make(map[string]ennoblements)
|
m := make(map[string]ennoblements)
|
||||||
|
|
||||||
if len(servers) == 0 {
|
if len(servers) == 0 {
|
||||||
|
@ -62,12 +61,12 @@ func (h *handler) loadEnnoblements(servers []string) (map[string]ennoblements, e
|
||||||
|
|
||||||
resp := make(map[string]ennoblements)
|
resp := make(map[string]ennoblements)
|
||||||
|
|
||||||
if err := h.api.Post(fmt.Sprintf(`query { %s }`, query), &resp); err != nil {
|
if err := w.api.Post(fmt.Sprintf(`query { %s }`, query), &resp); err != nil {
|
||||||
return m, errors.Wrap(err, "loadEnnoblements")
|
return m, errors.Wrap(err, "loadEnnoblements")
|
||||||
}
|
}
|
||||||
|
|
||||||
for server, ennoblements := range resp {
|
for server, ennoblements := range resp {
|
||||||
lastEnnoblementAt, ok := h.lastEnnoblementAt[server]
|
lastEnnoblementAt, ok := w.lastEnnoblementAt[server]
|
||||||
if !ok {
|
if !ok {
|
||||||
lastEnnoblementAt = time.Now().Add(-1 * time.Minute)
|
lastEnnoblementAt = time.Now().Add(-1 * time.Minute)
|
||||||
}
|
}
|
||||||
|
@ -81,13 +80,13 @@ func (h *handler) loadEnnoblements(servers []string) (map[string]ennoblements, e
|
||||||
if lastEnnoblement != nil {
|
if lastEnnoblement != nil {
|
||||||
lastEnnoblementAt = lastEnnoblement.EnnobledAt
|
lastEnnoblementAt = lastEnnoblement.EnnobledAt
|
||||||
}
|
}
|
||||||
h.lastEnnoblementAt[server] = lastEnnoblementAt
|
w.lastEnnoblementAt[server] = lastEnnoblementAt
|
||||||
}
|
}
|
||||||
|
|
||||||
return m, nil
|
return m, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (h *handler) loadLangVersions(servers []string) ([]*shared_models.LangVersion, error) {
|
func (w *worker) loadLangVersions(servers []string) ([]*shared_models.LangVersion, error) {
|
||||||
languageTags := []shared_models.LanguageTag{}
|
languageTags := []shared_models.LanguageTag{}
|
||||||
cache := make(map[shared_models.LanguageTag]bool)
|
cache := make(map[shared_models.LanguageTag]bool)
|
||||||
for _, server := range servers {
|
for _, server := range servers {
|
||||||
|
@ -98,7 +97,7 @@ func (h *handler) loadLangVersions(servers []string) ([]*shared_models.LangVersi
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
langVersionList, err := h.api.LangVersions.Browse(&shared_models.LangVersionFilter{
|
langVersionList, err := w.api.LangVersions.Browse(&shared_models.LangVersionFilter{
|
||||||
Tag: languageTags,
|
Tag: languageTags,
|
||||||
})
|
})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
@ -108,32 +107,43 @@ func (h *handler) loadLangVersions(servers []string) ([]*shared_models.LangVersi
|
||||||
return langVersionList.Items, nil
|
return langVersionList.Items, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (h *handler) checkEnnoblements() {
|
func (w *worker) checkEnnoblements() {
|
||||||
start := time.Now()
|
start := time.Now()
|
||||||
|
log.
|
||||||
|
Infoln("checkEnnoblements: called")
|
||||||
|
|
||||||
servers, err := h.observationRepo.FetchServers(context.Background())
|
servers, err := w.observationRepo.FetchServers(context.Background())
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Print("checkEnnoblements error: " + err.Error())
|
log.Errorln("checkEnnoblements:", err.Error())
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
log.Print("checkEnnoblements: servers: ", servers)
|
log.
|
||||||
|
WithField("servers", servers).
|
||||||
|
Info("checkEnnoblements: Loaded servers")
|
||||||
|
|
||||||
groups, total, err := h.groupRepo.Fetch(context.Background(), nil)
|
groups, total, err := w.groupRepo.Fetch(context.Background(), nil)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Print("checkEnnoblements error: " + err.Error())
|
log.Errorln("checkEnnoblements:", err.Error())
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
log.Print("checkEnnoblements: number of loaded groups: ", total)
|
log.
|
||||||
|
WithField("numberOfGroups", total).
|
||||||
|
Info("checkEnnoblements: Loaded groups")
|
||||||
|
|
||||||
langVersions, err := h.loadLangVersions(servers)
|
langVersions, err := w.loadLangVersions(servers)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Print(err)
|
log.Errorln("checkEnnoblements:", err)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
ennoblementsByServerKey, err := h.loadEnnoblements(servers)
|
log.
|
||||||
|
WithField("numberOfLangVersions", len(langVersions)).
|
||||||
|
Info("checkEnnoblements: Loaded lang versions")
|
||||||
|
|
||||||
|
ennoblementsByServerKey, err := w.loadEnnoblements(servers)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Print(err)
|
log.Errorln("checkEnnoblements:", err)
|
||||||
}
|
}
|
||||||
|
log.Info("checkEnnoblements: Loaded ennoblements")
|
||||||
|
|
||||||
for _, group := range groups {
|
for _, group := range groups {
|
||||||
if group.ConqueredVillagesChannelID == "" && group.LostVillagesChannelID == "" {
|
if group.ConqueredVillagesChannelID == "" && group.LostVillagesChannelID == "" {
|
||||||
|
@ -191,7 +201,7 @@ func (h *handler) checkEnnoblements() {
|
||||||
DefaultMessage: message.FallbackMsg(message.CronConqueredVillagesTitle,
|
DefaultMessage: message.FallbackMsg(message.CronConqueredVillagesTitle,
|
||||||
"Conquered villages"),
|
"Conquered villages"),
|
||||||
})
|
})
|
||||||
go h.discord.SendEmbed(group.ConqueredVillagesChannelID,
|
go w.discord.SendEmbed(group.ConqueredVillagesChannelID,
|
||||||
discord.
|
discord.
|
||||||
NewEmbed().
|
NewEmbed().
|
||||||
SetTitle(title).
|
SetTitle(title).
|
||||||
|
@ -207,7 +217,7 @@ func (h *handler) checkEnnoblements() {
|
||||||
DefaultMessage: message.FallbackMsg(message.CronLostVillagesTitle,
|
DefaultMessage: message.FallbackMsg(message.CronLostVillagesTitle,
|
||||||
"Lost villages"),
|
"Lost villages"),
|
||||||
})
|
})
|
||||||
go h.discord.SendEmbed(group.LostVillagesChannelID,
|
go w.discord.SendEmbed(group.LostVillagesChannelID,
|
||||||
discord.
|
discord.
|
||||||
NewEmbed().
|
NewEmbed().
|
||||||
SetTitle(title).
|
SetTitle(title).
|
||||||
|
@ -218,50 +228,69 @@ func (h *handler) checkEnnoblements() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
log.Printf("checkEnnoblements: finished in %s", time.Since(start).String())
|
log.
|
||||||
|
WithField("executionTime", time.Since(start).String()).
|
||||||
|
Infoln("checkEnnoblements: finished executing")
|
||||||
}
|
}
|
||||||
|
|
||||||
func (h *handler) checkBotServers() {
|
func (w *worker) checkBotServers() {
|
||||||
servers, total, err := h.serverRepo.Fetch(context.Background(), nil)
|
start := time.Now()
|
||||||
|
log.Info("checkBotServers: called")
|
||||||
|
|
||||||
|
servers, total, err := w.serverRepo.Fetch(context.Background(), nil)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Print("checkBotServers error: " + err.Error())
|
log.Error("checkBotServers: " + err.Error())
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
log.Print("checkBotServers: total number of loaded discord servers: ", total)
|
log.
|
||||||
|
WithField("executionTime", time.Since(start)).
|
||||||
|
WithField("numberOfServers", total).
|
||||||
|
Info("checkBotServers: loaded servers")
|
||||||
|
|
||||||
idsToDelete := []string{}
|
idsToDelete := []string{}
|
||||||
for _, server := range servers {
|
for _, server := range servers {
|
||||||
if isGuildMember, _ := h.discord.IsGuildMember(server.ID); !isGuildMember {
|
if isGuildMember, _ := w.discord.IsGuildMember(server.ID); !isGuildMember {
|
||||||
idsToDelete = append(idsToDelete, server.ID)
|
idsToDelete = append(idsToDelete, server.ID)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if len(idsToDelete) > 0 {
|
if len(idsToDelete) > 0 {
|
||||||
deleted, err := h.serverRepo.Delete(context.Background(), &models.ServerFilter{
|
deleted, err := w.serverRepo.Delete(context.Background(), &models.ServerFilter{
|
||||||
ID: idsToDelete,
|
ID: idsToDelete,
|
||||||
})
|
})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Print("checkBotServers error: " + err.Error())
|
log.Error("checkBotServers: " + err.Error())
|
||||||
} else {
|
} else {
|
||||||
log.Printf("checkBotServers: total number of deleted discord servers: %d", len(deleted))
|
log.
|
||||||
|
WithField("numberOfDeletedServers", len(deleted)).
|
||||||
|
Info("checkBotServers: deleted servers")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
log.
|
||||||
|
WithField("executionTime", time.Since(start).String()).
|
||||||
|
Infoln("checkBotServers: finished executing")
|
||||||
}
|
}
|
||||||
|
|
||||||
func (h *handler) deleteClosedTribalWarsServers() {
|
func (w *worker) deleteClosedTribalWarsServers() {
|
||||||
servers, err := h.observationRepo.FetchServers(context.Background())
|
start := time.Now()
|
||||||
|
log.Info("deleteClosedTribalWarsServers: called")
|
||||||
|
|
||||||
|
servers, err := w.observationRepo.FetchServers(context.Background())
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Print("deleteClosedTribalWarsServers: " + err.Error())
|
log.Error("deleteClosedTribalWarsServers: " + err.Error())
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
log.Print("deleteClosedTribalWarsServers: servers: ", servers)
|
log.
|
||||||
|
WithField("servers", servers).
|
||||||
|
Info("deleteClosedTribalWarsServers: loaded servers")
|
||||||
|
|
||||||
list, err := h.api.Servers.Browse(&shared_models.ServerFilter{
|
list, err := w.api.Servers.Browse(&shared_models.ServerFilter{
|
||||||
Key: servers,
|
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("deleteClosedTribalWarsServers: " + err.Error())
|
log.Errorln("deleteClosedTribalWarsServers: " + err.Error())
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
if list == nil || list.Items == nil {
|
if list == nil || list.Items == nil {
|
||||||
|
@ -274,19 +303,32 @@ func (h *handler) deleteClosedTribalWarsServers() {
|
||||||
}
|
}
|
||||||
|
|
||||||
if len(keys) > 0 {
|
if len(keys) > 0 {
|
||||||
deleted, err := h.observationRepo.Delete(context.Background(), &models.ObservationFilter{
|
deleted, err := w.observationRepo.Delete(context.Background(), &models.ObservationFilter{
|
||||||
Server: keys,
|
Server: keys,
|
||||||
})
|
})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Print("deleteClosedTribalWarsServers error: " + err.Error())
|
log.Errorln("deleteClosedTribalWarsServers: " + err.Error())
|
||||||
} else {
|
} else {
|
||||||
log.Printf("deleteClosedTribalWarsServers: total number of deleted observations: %d", len(deleted))
|
log.
|
||||||
|
WithField("numberOfDeletedObservations", len(deleted)).
|
||||||
|
Infof("deleteClosedTribalWarsServers: deleted observations")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
log.
|
||||||
|
WithField("executionTime", time.Since(start).String()).
|
||||||
|
Infoln("deleteClosedTribalWarsServers: finished executing")
|
||||||
}
|
}
|
||||||
|
|
||||||
func (h *handler) updateBotStatus() {
|
func (w *worker) updateBotStatus() {
|
||||||
if err := h.discord.UpdateStatus(h.status); err != nil {
|
start := time.Now()
|
||||||
log.Print("updateBotStatus: " + err.Error())
|
log.Info("updateBotStatus: updating bot status...")
|
||||||
|
|
||||||
|
if err := w.discord.UpdateStatus(w.status); err != nil {
|
||||||
|
log.Error("updateBotStatus: " + err.Error())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
log.
|
||||||
|
WithField("executionTime", time.Since(start).String()).
|
||||||
|
Infoln("updateBotStatus: bot status has been updated")
|
||||||
}
|
}
|
|
@ -5,6 +5,7 @@ import (
|
||||||
"fmt"
|
"fmt"
|
||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
|
"github.com/sirupsen/logrus"
|
||||||
"github.com/tribalwarshelp/dcbot/message"
|
"github.com/tribalwarshelp/dcbot/message"
|
||||||
|
|
||||||
"github.com/tribalwarshelp/dcbot/group"
|
"github.com/tribalwarshelp/dcbot/group"
|
||||||
|
@ -16,6 +17,8 @@ import (
|
||||||
"github.com/bwmarrin/discordgo"
|
"github.com/bwmarrin/discordgo"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
var log = logrus.WithField("package", "discord")
|
||||||
|
|
||||||
type handler struct {
|
type handler struct {
|
||||||
cmd Command
|
cmd Command
|
||||||
requireAdmPermissions bool
|
requireAdmPermissions bool
|
||||||
|
@ -240,8 +243,7 @@ func (s *Session) handleNewMessage(_ *discordgo.Session, m *discordgo.MessageCre
|
||||||
}
|
}
|
||||||
|
|
||||||
splitted := strings.Split(m.Content, " ")
|
splitted := strings.Split(m.Content, " ")
|
||||||
argsLength := len(splitted) - 1
|
args := splitted[1:]
|
||||||
args := splitted[1 : argsLength+1]
|
|
||||||
server := &models.Server{
|
server := &models.Server{
|
||||||
ID: m.GuildID,
|
ID: m.GuildID,
|
||||||
Lang: message.GetDefaultLanguage().String(),
|
Lang: message.GetDefaultLanguage().String(),
|
||||||
|
@ -256,7 +258,8 @@ func (s *Session) handleNewMessage(_ *discordgo.Session, m *discordgo.MessageCre
|
||||||
localizer: message.NewLocalizer(server.Lang),
|
localizer: message.NewLocalizer(server.Lang),
|
||||||
}
|
}
|
||||||
|
|
||||||
h := s.handlers.find(Command(splitted[0]))
|
cmd := Command(splitted[0])
|
||||||
|
h := s.handlers.find(cmd)
|
||||||
if h != nil {
|
if h != nil {
|
||||||
if h.requireAdmPermissions {
|
if h.requireAdmPermissions {
|
||||||
if m.GuildID == "" {
|
if m.GuildID == "" {
|
||||||
|
@ -267,6 +270,16 @@ func (s *Session) handleNewMessage(_ *discordgo.Session, m *discordgo.MessageCre
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
log.
|
||||||
|
WithFields(logrus.Fields{
|
||||||
|
"serverID": server.ID,
|
||||||
|
"lang": server.Lang,
|
||||||
|
"command": cmd,
|
||||||
|
"args": args,
|
||||||
|
"authorID": m.Author.ID,
|
||||||
|
"authorUsername": m.Author.Username,
|
||||||
|
}).
|
||||||
|
Info("handleNewMessage: Executing command")
|
||||||
h.fn(ctx, m, args...)
|
h.fn(ctx, m, args...)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
3
go.mod
3
go.mod
|
@ -10,10 +10,11 @@ require (
|
||||||
github.com/nicksnyder/go-i18n/v2 v2.1.1
|
github.com/nicksnyder/go-i18n/v2 v2.1.1
|
||||||
github.com/pkg/errors v0.9.1
|
github.com/pkg/errors v0.9.1
|
||||||
github.com/robfig/cron/v3 v3.0.1
|
github.com/robfig/cron/v3 v3.0.1
|
||||||
|
github.com/sirupsen/logrus v1.7.0
|
||||||
github.com/tribalwarshelp/golang-sdk v0.0.0-20200903125555-7b6975e64f6f
|
github.com/tribalwarshelp/golang-sdk v0.0.0-20200903125555-7b6975e64f6f
|
||||||
github.com/tribalwarshelp/shared v0.0.0-20200824102353-ef15dea9c1a3
|
github.com/tribalwarshelp/shared v0.0.0-20200824102353-ef15dea9c1a3
|
||||||
golang.org/x/crypto v0.0.0-20201016220609-9e8e0b390897 // indirect
|
golang.org/x/crypto v0.0.0-20201016220609-9e8e0b390897 // indirect
|
||||||
golang.org/x/net v0.0.0-20201016165138-7b1cca2348c0 // indirect
|
golang.org/x/net v0.0.0-20201016165138-7b1cca2348c0 // indirect
|
||||||
golang.org/x/sys v0.0.0-20201017003518-b09fb700fbb7 // indirect
|
golang.org/x/sys v0.0.0-20201022201747-fb209a7c41cd // indirect
|
||||||
golang.org/x/text v0.3.3
|
golang.org/x/text v0.3.3
|
||||||
)
|
)
|
||||||
|
|
8
go.sum
8
go.sum
|
@ -112,7 +112,10 @@ github.com/robfig/cron/v3 v3.0.1 h1:WdRxkvbJztn8LMz/QEvLN5sBU+xKpSqwwUO1Pjr4qDs=
|
||||||
github.com/robfig/cron/v3 v3.0.1/go.mod h1:eQICP3HwyT7UooqI/z+Ov+PtYAWygg1TEWWzGIFLtro=
|
github.com/robfig/cron/v3 v3.0.1/go.mod h1:eQICP3HwyT7UooqI/z+Ov+PtYAWygg1TEWWzGIFLtro=
|
||||||
github.com/segmentio/encoding v0.2.0 h1:lmwUV/WjSX7pL1pbK4MEQBH/M7K2NrgYymeSc1pV1W8=
|
github.com/segmentio/encoding v0.2.0 h1:lmwUV/WjSX7pL1pbK4MEQBH/M7K2NrgYymeSc1pV1W8=
|
||||||
github.com/segmentio/encoding v0.2.0/go.mod h1:MJjRE6bMDocliO2FyFC2Dusp+uYdBfHWh5Bw7QyExto=
|
github.com/segmentio/encoding v0.2.0/go.mod h1:MJjRE6bMDocliO2FyFC2Dusp+uYdBfHWh5Bw7QyExto=
|
||||||
|
github.com/sirupsen/logrus v1.7.0 h1:ShrD1U9pZB12TX0cVy0DtePoCH97K8EtX+mg7ZARUtM=
|
||||||
|
github.com/sirupsen/logrus v1.7.0/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0=
|
||||||
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
|
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
|
||||||
|
github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs=
|
||||||
github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI=
|
github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI=
|
||||||
github.com/stretchr/testify v1.5.1 h1:nOGnQDM7FYENwehXlg/kFVnos3rEvtKTjRvOWSzb6H4=
|
github.com/stretchr/testify v1.5.1 h1:nOGnQDM7FYENwehXlg/kFVnos3rEvtKTjRvOWSzb6H4=
|
||||||
github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA=
|
github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA=
|
||||||
|
@ -198,6 +201,7 @@ golang.org/x/sys v0.0.0-20190904154756-749cb33beabd/go.mod h1:h1NjWce9XRLGQEsW7w
|
||||||
golang.org/x/sys v0.0.0-20191001151750-bb3f8db39f24/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
golang.org/x/sys v0.0.0-20191001151750-bb3f8db39f24/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||||
golang.org/x/sys v0.0.0-20191005200804-aed5e4c7ecf9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
golang.org/x/sys v0.0.0-20191005200804-aed5e4c7ecf9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||||
golang.org/x/sys v0.0.0-20191010194322-b09406accb47/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
golang.org/x/sys v0.0.0-20191010194322-b09406accb47/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||||
|
golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||||
golang.org/x/sys v0.0.0-20191120155948-bd437916bb0e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
golang.org/x/sys v0.0.0-20191120155948-bd437916bb0e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||||
golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||||
golang.org/x/sys v0.0.0-20200519105757-fe76b779f299/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
golang.org/x/sys v0.0.0-20200519105757-fe76b779f299/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||||
|
@ -208,8 +212,8 @@ golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7w
|
||||||
golang.org/x/sys v0.0.0-20201009025420-dfb3f7c4e634/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
golang.org/x/sys v0.0.0-20201009025420-dfb3f7c4e634/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||||
golang.org/x/sys v0.0.0-20201015000850-e3ed0017c211 h1:9UQO31fZ+0aKQOFldThf7BKPMJTiBfWycGh/u3UoO88=
|
golang.org/x/sys v0.0.0-20201015000850-e3ed0017c211 h1:9UQO31fZ+0aKQOFldThf7BKPMJTiBfWycGh/u3UoO88=
|
||||||
golang.org/x/sys v0.0.0-20201015000850-e3ed0017c211/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
golang.org/x/sys v0.0.0-20201015000850-e3ed0017c211/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||||
golang.org/x/sys v0.0.0-20201017003518-b09fb700fbb7 h1:XtNJkfEjb4zR3q20BBBcYUykVOEMgZeIUOpBPfNYgxg=
|
golang.org/x/sys v0.0.0-20201022201747-fb209a7c41cd h1:WgqgiQvkiZWz7XLhphjt2GI2GcGCTIZs9jqXMWmH+oc=
|
||||||
golang.org/x/sys v0.0.0-20201017003518-b09fb700fbb7/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
golang.org/x/sys v0.0.0-20201022201747-fb209a7c41cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||||
golang.org/x/text v0.3.0 h1:g61tztE5qeGQ89tm6NTjjM9VPIm088od1l6aSorWRWg=
|
golang.org/x/text v0.3.0 h1:g61tztE5qeGQ89tm6NTjjM9VPIm088od1l6aSorWRWg=
|
||||||
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
|
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
|
||||||
golang.org/x/text v0.3.2 h1:tW2bmiBqwgJj/UpqtC8EpXEZVYOwU0yG4iWbprSVAcs=
|
golang.org/x/text v0.3.2 h1:tW2bmiBqwgJj/UpqtC8EpXEZVYOwU0yG4iWbprSVAcs=
|
||||||
|
|
48
main.go
48
main.go
|
@ -8,6 +8,7 @@ import (
|
||||||
"strings"
|
"strings"
|
||||||
"syscall"
|
"syscall"
|
||||||
|
|
||||||
|
"github.com/sirupsen/logrus"
|
||||||
"github.com/tribalwarshelp/dcbot/message"
|
"github.com/tribalwarshelp/dcbot/message"
|
||||||
|
|
||||||
"github.com/tribalwarshelp/golang-sdk/sdk"
|
"github.com/tribalwarshelp/golang-sdk/sdk"
|
||||||
|
@ -38,26 +39,41 @@ func init() {
|
||||||
if mode.Get() == mode.DevelopmentMode {
|
if mode.Get() == mode.DevelopmentMode {
|
||||||
godotenv.Load(".env.development")
|
godotenv.Load(".env.development")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
customFormatter := new(logrus.TextFormatter)
|
||||||
|
customFormatter.TimestampFormat = "2006-01-02 15:04:05"
|
||||||
|
customFormatter.FullTimestamp = true
|
||||||
|
logrus.SetFormatter(customFormatter)
|
||||||
}
|
}
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
dir, err := os.Getwd()
|
dir, err := os.Getwd()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Fatal(err)
|
logrus.Fatal(err)
|
||||||
}
|
}
|
||||||
if err := message.LoadMessageFiles(path.Join(dir, "message", "translations")); err != nil {
|
dirWithMessages := path.Join(dir, "message", "translations")
|
||||||
log.Fatal(err)
|
if err := message.LoadMessageFiles(dirWithMessages); err != nil {
|
||||||
|
logrus.Fatal(err)
|
||||||
}
|
}
|
||||||
|
logrus.WithField("dir", dirWithMessages).
|
||||||
|
WithField("languages", message.LanguageTags()).
|
||||||
|
Info("Loaded messages")
|
||||||
|
|
||||||
db := pg.Connect(&pg.Options{
|
dbOptions := &pg.Options{
|
||||||
User: os.Getenv("DB_USER"),
|
User: os.Getenv("DB_USER"),
|
||||||
Password: os.Getenv("DB_PASSWORD"),
|
Password: os.Getenv("DB_PASSWORD"),
|
||||||
Database: os.Getenv("DB_NAME"),
|
Database: os.Getenv("DB_NAME"),
|
||||||
Addr: os.Getenv("DB_HOST") + ":" + os.Getenv("DB_PORT"),
|
Addr: os.Getenv("DB_HOST") + ":" + os.Getenv("DB_PORT"),
|
||||||
})
|
}
|
||||||
|
dbFields := logrus.Fields{
|
||||||
|
"user": dbOptions.User,
|
||||||
|
"database": dbOptions.Database,
|
||||||
|
"addr": dbOptions.Addr,
|
||||||
|
}
|
||||||
|
db := pg.Connect(dbOptions)
|
||||||
defer func() {
|
defer func() {
|
||||||
if err := db.Close(); err != nil {
|
if err := db.Close(); err != nil {
|
||||||
log.Fatal(err)
|
logrus.WithFields(dbFields).Fatalln(err)
|
||||||
}
|
}
|
||||||
}()
|
}()
|
||||||
if strings.ToUpper(os.Getenv("LOG_DB_QUERIES")) == "TRUE" {
|
if strings.ToUpper(os.Getenv("LOG_DB_QUERIES")) == "TRUE" {
|
||||||
|
@ -65,19 +81,21 @@ func main() {
|
||||||
Verbose: true,
|
Verbose: true,
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
logrus.WithFields(dbFields).Info("Connected to the database")
|
||||||
|
|
||||||
serverRepo, err := server_repository.NewPgRepo(db)
|
serverRepo, err := server_repository.NewPgRepo(db)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Fatal(err)
|
logrus.Fatal(err)
|
||||||
}
|
}
|
||||||
groupRepo, err := group_repository.NewPgRepo(db)
|
groupRepo, err := group_repository.NewPgRepo(db)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Fatal(err)
|
logrus.Fatal(err)
|
||||||
}
|
}
|
||||||
observationRepo, err := observation_repository.NewPgRepo(db)
|
observationRepo, err := observation_repository.NewPgRepo(db)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Fatal(err)
|
logrus.Fatal(err)
|
||||||
}
|
}
|
||||||
|
logrus.Info("Loaded all repositories")
|
||||||
|
|
||||||
api := sdk.New(os.Getenv("API_URL"))
|
api := sdk.New(os.Getenv("API_URL"))
|
||||||
|
|
||||||
|
@ -91,9 +109,14 @@ func main() {
|
||||||
API: api,
|
API: api,
|
||||||
})
|
})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Fatal(err)
|
logrus.Fatal(err)
|
||||||
}
|
}
|
||||||
defer sess.Close()
|
defer sess.Close()
|
||||||
|
logrus.WithFields(logrus.Fields{
|
||||||
|
"api": os.Getenv("API_URL"),
|
||||||
|
"commandPrefix": commandPrefix,
|
||||||
|
"status": status,
|
||||||
|
}).Info("Initialized new Discord session")
|
||||||
|
|
||||||
c := cron.New(cron.WithChain(
|
c := cron.New(cron.WithChain(
|
||||||
cron.SkipIfStillRunning(cron.VerbosePrintfLogger(log.New(os.Stdout, "cron: ", log.LstdFlags))),
|
cron.SkipIfStillRunning(cron.VerbosePrintfLogger(log.New(os.Stdout, "cron: ", log.LstdFlags))),
|
||||||
|
@ -108,12 +131,13 @@ func main() {
|
||||||
})
|
})
|
||||||
c.Start()
|
c.Start()
|
||||||
defer c.Stop()
|
defer c.Stop()
|
||||||
|
logrus.Info("Started cron worker")
|
||||||
|
|
||||||
log.Print("Bot is waiting for your actions!")
|
logrus.Info("Bot is waiting for your actions!")
|
||||||
|
|
||||||
channel := make(chan os.Signal, 1)
|
channel := make(chan os.Signal, 1)
|
||||||
signal.Notify(channel, os.Interrupt, os.Kill, syscall.SIGTERM, syscall.SIGINT)
|
signal.Notify(channel, os.Interrupt, os.Kill, syscall.SIGTERM, syscall.SIGINT)
|
||||||
<-channel
|
<-channel
|
||||||
|
|
||||||
log.Print("shutting down")
|
logrus.Info("shutting down")
|
||||||
}
|
}
|
||||||
|
|
Reference in New Issue