update bot status, rename some types/functions

This commit is contained in:
Dawid Wysokiński 2021-01-13 20:03:50 +01:00
parent 16552f88fd
commit 44d56d931c
6 changed files with 49 additions and 54 deletions

View File

@ -76,7 +76,7 @@ func (h *handler) loadEnnoblements(servers []string) (map[string]ennoblements, e
lastEnnoblementAt = time.Now().Add(-60 * time.Minute * 23) lastEnnoblementAt = time.Now().Add(-60 * time.Minute * 23)
} }
m[server] = filterEnnoblements(ennoblements, lastEnnoblementAt) m[server] = getRecentEnnoblements(ennoblements, lastEnnoblementAt)
lastEnnoblement := m[server].getLastEnnoblement() lastEnnoblement := m[server].getLastEnnoblement()
if lastEnnoblement != nil { if lastEnnoblement != nil {
@ -130,7 +130,7 @@ func (h *handler) checkEnnoblements() {
} }
log. log.
WithField("numberOfGroups", total). WithField("numberOfGroups", total).
Info("checkEnnoblements: Loaded groups") Info("checkEnnoblements: loaded groups")
versions, err := h.loadVersions(servers) versions, err := h.loadVersions(servers)
if err != nil { if err != nil {
@ -139,13 +139,13 @@ func (h *handler) checkEnnoblements() {
} }
log. log.
WithField("numberOfVersions", len(versions)). WithField("numberOfVersions", len(versions)).
Info("checkEnnoblements: Loaded versions") Info("checkEnnoblements: loaded versions")
ennoblementsByServerKey, err := h.loadEnnoblements(servers) ennoblementsByServerKey, err := h.loadEnnoblements(servers)
if err != nil { if err != nil {
log.Errorln("checkEnnoblements:", err) log.Errorln("checkEnnoblements:", err)
} }
log.Info("checkEnnoblements: Loaded ennoblements") log.Info("checkEnnoblements: loaded ennoblements")
for _, group := range groups { for _, group := range groups {
if group.ConqueredVillagesChannelID == "" && group.LostVillagesChannelID == "" { if group.ConqueredVillagesChannelID == "" && group.LostVillagesChannelID == "" {
@ -197,6 +197,7 @@ func (h *handler) checkEnnoblements() {
} }
} }
timestamp := time.Now().Format(time.RFC3339)
if group.ConqueredVillagesChannelID != "" && !conqueredVillagesMsg.IsEmpty() { if group.ConqueredVillagesChannelID != "" && !conqueredVillagesMsg.IsEmpty() {
title := localizer.MustLocalize(&i18n.LocalizeConfig{ title := localizer.MustLocalize(&i18n.LocalizeConfig{
MessageID: message.CronConqueredVillagesTitle, MessageID: message.CronConqueredVillagesTitle,
@ -209,7 +210,7 @@ func (h *handler) checkEnnoblements() {
SetTitle(title). SetTitle(title).
SetColor(colorConqueredVillages). SetColor(colorConqueredVillages).
SetFields(conqueredVillagesMsg.ToMessageEmbedFields()). SetFields(conqueredVillagesMsg.ToMessageEmbedFields()).
SetTimestamp(formatDateOfConquest(time.Now())). SetTimestamp(timestamp).
MessageEmbed) MessageEmbed)
} }
@ -225,7 +226,7 @@ func (h *handler) checkEnnoblements() {
SetTitle(title). SetTitle(title).
SetColor(colorLostVillages). SetColor(colorLostVillages).
SetFields(lostVillagesMsg.ToMessageEmbedFields()). SetFields(lostVillagesMsg.ToMessageEmbedFields()).
SetTimestamp(formatDateOfConquest(time.Now())). SetTimestamp(timestamp).
MessageEmbed) MessageEmbed)
} }
} }

View File

@ -7,7 +7,7 @@ import (
shared_models "github.com/tribalwarshelp/shared/models" shared_models "github.com/tribalwarshelp/shared/models"
) )
func filterEnnoblements(ennoblements []*shared_models.LiveEnnoblement, t time.Time) []*shared_models.LiveEnnoblement { func getRecentEnnoblements(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 {
if ennoblement.EnnobledAt.Before(t) || ennoblement.EnnobledAt.Equal(t) { if ennoblement.EnnobledAt.Before(t) || ennoblement.EnnobledAt.Equal(t) {
@ -18,10 +18,6 @@ func filterEnnoblements(ennoblements []*shared_models.LiveEnnoblement, t time.Ti
return filtered return filtered
} }
func formatDateOfConquest(t time.Time) string {
return t.Format(time.RFC3339)
}
func isBarbarian(p *shared_models.Player) bool { func isBarbarian(p *shared_models.Player) bool {
return utils.IsPlayerNil(p) || p.ID == 0 return utils.IsPlayerNil(p) || p.ID == 0
} }

View File

@ -21,7 +21,6 @@ const (
type checkEnnoblementsMsg struct { type checkEnnoblementsMsg struct {
t messageType t messageType
server string server string
date string
village string village string
villageURL string villageURL string
oldOwnerName string oldOwnerName string
@ -46,7 +45,6 @@ type newMessageConfig struct {
func newMessage(cfg newMessageConfig) checkEnnoblementsMsg { func newMessage(cfg newMessageConfig) checkEnnoblementsMsg {
data := checkEnnoblementsMsg{ data := checkEnnoblementsMsg{
t: cfg.t, t: cfg.t,
date: formatDateOfConquest(cfg.ennoblement.EnnobledAt),
server: cfg.server, server: cfg.server,
village: "-", village: "-",
oldOwnerName: "-", oldOwnerName: "-",

View File

@ -1,6 +1,7 @@
package discord package discord
import ( import (
"github.com/bwmarrin/discordgo"
"github.com/nicksnyder/go-i18n/v2/i18n" "github.com/nicksnyder/go-i18n/v2/i18n"
"github.com/tribalwarshelp/dcbot/models" "github.com/tribalwarshelp/dcbot/models"
) )
@ -19,3 +20,20 @@ type commandCtx struct {
server *models.Server server *models.Server
localizer *i18n.Localizer localizer *i18n.Localizer
} }
type commandHandler struct {
cmd Command
requireAdmPermissions bool
fn func(ctx *commandCtx, m *discordgo.MessageCreate, args ...string)
}
type commandHandlers []*commandHandler
func (hs commandHandlers) find(cmd Command) *commandHandler {
for _, h := range hs {
if h.cmd == cmd {
return h
}
}
return nil
}

View File

@ -19,23 +19,6 @@ import (
var log = logrus.WithField("package", "discord") var log = logrus.WithField("package", "discord")
type handler struct {
cmd Command
requireAdmPermissions bool
fn func(ctx *commandCtx, m *discordgo.MessageCreate, args ...string)
}
type handlers []*handler
func (hs handlers) find(cmd Command) *handler {
for _, h := range hs {
if h.cmd == cmd {
return h
}
}
return nil
}
type SessionConfig struct { type SessionConfig struct {
Token string Token string
CommandPrefix string CommandPrefix string
@ -49,7 +32,7 @@ type SessionConfig struct {
type Session struct { type Session struct {
dg *discordgo.Session dg *discordgo.Session
cfg SessionConfig cfg SessionConfig
handlers handlers handlers commandHandlers
} }
func New(cfg SessionConfig) (*Session, error) { func New(cfg SessionConfig) (*Session, error) {
@ -68,90 +51,90 @@ func New(cfg SessionConfig) (*Session, error) {
} }
func (s *Session) init() error { func (s *Session) init() error {
s.handlers = handlers{ s.handlers = commandHandlers{
&handler{ &commandHandler{
cmd: HelpCommand.WithPrefix(s.cfg.CommandPrefix), cmd: HelpCommand.WithPrefix(s.cfg.CommandPrefix),
fn: s.handleHelpCommand, fn: s.handleHelpCommand,
}, },
&handler{ &commandHandler{
cmd: AuthorCommand.WithPrefix(s.cfg.CommandPrefix), cmd: AuthorCommand.WithPrefix(s.cfg.CommandPrefix),
fn: s.handleAuthorCommand, fn: s.handleAuthorCommand,
}, },
&handler{ &commandHandler{
cmd: TribeCommand.WithPrefix(s.cfg.CommandPrefix), cmd: TribeCommand.WithPrefix(s.cfg.CommandPrefix),
fn: s.handleTribeCommand, fn: s.handleTribeCommand,
}, },
&handler{ &commandHandler{
cmd: ChangeLanguageCommand.WithPrefix(s.cfg.CommandPrefix), cmd: ChangeLanguageCommand.WithPrefix(s.cfg.CommandPrefix),
fn: s.handleChangeLanguageCommand, fn: s.handleChangeLanguageCommand,
requireAdmPermissions: true, requireAdmPermissions: true,
}, },
&handler{ &commandHandler{
cmd: AddGroupCommand.WithPrefix(s.cfg.CommandPrefix), cmd: AddGroupCommand.WithPrefix(s.cfg.CommandPrefix),
fn: s.handleAddGroupCommand, fn: s.handleAddGroupCommand,
requireAdmPermissions: true, requireAdmPermissions: true,
}, },
&handler{ &commandHandler{
cmd: DeleteGroupCommand.WithPrefix(s.cfg.CommandPrefix), cmd: DeleteGroupCommand.WithPrefix(s.cfg.CommandPrefix),
fn: s.handleDeleteGroupCommand, fn: s.handleDeleteGroupCommand,
requireAdmPermissions: true, requireAdmPermissions: true,
}, },
&handler{ &commandHandler{
cmd: GroupsCommand.WithPrefix(s.cfg.CommandPrefix), cmd: GroupsCommand.WithPrefix(s.cfg.CommandPrefix),
fn: s.handleGroupsCommand, fn: s.handleGroupsCommand,
requireAdmPermissions: true, requireAdmPermissions: true,
}, },
&handler{ &commandHandler{
cmd: ObserveCommand.WithPrefix(s.cfg.CommandPrefix), cmd: ObserveCommand.WithPrefix(s.cfg.CommandPrefix),
fn: s.handleObserveCommand, fn: s.handleObserveCommand,
requireAdmPermissions: true, requireAdmPermissions: true,
}, },
&handler{ &commandHandler{
cmd: DeleteObservationCommand.WithPrefix(s.cfg.CommandPrefix), cmd: DeleteObservationCommand.WithPrefix(s.cfg.CommandPrefix),
fn: s.handleDeleteObservationCommand, fn: s.handleDeleteObservationCommand,
requireAdmPermissions: true, requireAdmPermissions: true,
}, },
&handler{ &commandHandler{
cmd: ObservationsCommand.WithPrefix(s.cfg.CommandPrefix), cmd: ObservationsCommand.WithPrefix(s.cfg.CommandPrefix),
fn: s.handleObservationsCommand, fn: s.handleObservationsCommand,
requireAdmPermissions: true, requireAdmPermissions: true,
}, },
&handler{ &commandHandler{
cmd: ConqueredVillagesCommand.WithPrefix(s.cfg.CommandPrefix), cmd: ConqueredVillagesCommand.WithPrefix(s.cfg.CommandPrefix),
fn: s.handleConqueredVillagesCommand, fn: s.handleConqueredVillagesCommand,
requireAdmPermissions: true, requireAdmPermissions: true,
}, },
&handler{ &commandHandler{
cmd: DisableConqueredVillagesCommand.WithPrefix(s.cfg.CommandPrefix), cmd: DisableConqueredVillagesCommand.WithPrefix(s.cfg.CommandPrefix),
fn: s.handleDisableConqueredVillagesCommand, fn: s.handleDisableConqueredVillagesCommand,
requireAdmPermissions: true, requireAdmPermissions: true,
}, },
&handler{ &commandHandler{
cmd: LostVillagesCommand.WithPrefix(s.cfg.CommandPrefix), cmd: LostVillagesCommand.WithPrefix(s.cfg.CommandPrefix),
fn: s.handleLostVillagesCommand, fn: s.handleLostVillagesCommand,
requireAdmPermissions: true, requireAdmPermissions: true,
}, },
&handler{ &commandHandler{
cmd: DisableLostVillagesCommand.WithPrefix(s.cfg.CommandPrefix), cmd: DisableLostVillagesCommand.WithPrefix(s.cfg.CommandPrefix),
fn: s.handleDisableLostVillagesCommand, fn: s.handleDisableLostVillagesCommand,
requireAdmPermissions: true, requireAdmPermissions: true,
}, },
&handler{ &commandHandler{
cmd: ShowEnnobledBarbariansCommand.WithPrefix(s.cfg.CommandPrefix), cmd: ShowEnnobledBarbariansCommand.WithPrefix(s.cfg.CommandPrefix),
fn: s.handleShowEnnobledBarbariansCommand, fn: s.handleShowEnnobledBarbariansCommand,
requireAdmPermissions: true, requireAdmPermissions: true,
}, },
&handler{ &commandHandler{
cmd: ShowInternalsCommand.WithPrefix(s.cfg.CommandPrefix), cmd: ShowInternalsCommand.WithPrefix(s.cfg.CommandPrefix),
fn: s.handleShowInternalsCommand, fn: s.handleShowInternalsCommand,
requireAdmPermissions: true, requireAdmPermissions: true,
}, },
&handler{ &commandHandler{
cmd: CoordsTranslationCommand.WithPrefix(s.cfg.CommandPrefix), cmd: CoordsTranslationCommand.WithPrefix(s.cfg.CommandPrefix),
fn: s.handleCoordsTranslationCommand, fn: s.handleCoordsTranslationCommand,
requireAdmPermissions: true, requireAdmPermissions: true,
}, },
&handler{ &commandHandler{
cmd: DisableCoordsTranslationCommand.WithPrefix(s.cfg.CommandPrefix), cmd: DisableCoordsTranslationCommand.WithPrefix(s.cfg.CommandPrefix),
fn: s.handleDisableCoordsTranslationCommand, fn: s.handleDisableCoordsTranslationCommand,
requireAdmPermissions: true, requireAdmPermissions: true,

View File

@ -31,7 +31,7 @@ const (
commandPrefix = "tw!" commandPrefix = "tw!"
) )
var status = "Tribal Wars | " + discord.HelpCommand.WithPrefix(commandPrefix).String() var status = "tribalwarshelp.com | " + discord.HelpCommand.WithPrefix(commandPrefix).String()
func init() { func init() {
os.Setenv("TZ", "UTC") os.Setenv("TZ", "UTC")
@ -81,7 +81,6 @@ 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 {
@ -95,7 +94,7 @@ func main() {
if err != nil { if err != nil {
logrus.Fatal(err) logrus.Fatal(err)
} }
logrus.Info("Loaded all repositories") logrus.WithFields(dbFields).Info("Connected to the database")
api := sdk.New(os.Getenv("API_URL")) api := sdk.New(os.Getenv("API_URL"))
@ -133,7 +132,7 @@ func main() {
defer c.Stop() defer c.Stop()
logrus.Info("Started the cron scheduler") logrus.Info("Started the cron scheduler")
logrus.Info("Bot is waiting for actions!") logrus.Info("Bot is running!")
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)