From 4115558ee77a03f3a5d36a2d9a27bfc60f13cbe7 Mon Sep 17 00:00:00 2001 From: Kichiyaki Date: Fri, 5 Jun 2020 19:58:15 +0200 Subject: [PATCH] refactor, add default values to messageData constructor --- cron/cron.go | 65 +----------------- cron/helpers.go | 4 ++ cron/message.go | 68 +++++++++++++++++++ discord/commands.go | 63 ----------------- discord/discord.go | 58 +++++++++++++++- .../language_code_from_world_name.go | 2 +- 6 files changed, 131 insertions(+), 129 deletions(-) create mode 100644 cron/message.go rename tribalwars/helpers.go => utils/language_code_from_world_name.go (85%) diff --git a/cron/cron.go b/cron/cron.go index fd4c19d..b64b202 100644 --- a/cron/cron.go +++ b/cron/cron.go @@ -2,18 +2,14 @@ package cron import ( "context" - "fmt" "log" "time" "github.com/tribalwarshelp/golang-sdk/sdk" - shared_models "github.com/tribalwarshelp/shared/models" "github.com/tribalwarshelp/dcbot/discord" "github.com/tribalwarshelp/dcbot/server" - "github.com/tribalwarshelp/dcbot/tribalwars" "github.com/tribalwarshelp/dcbot/tribe" - "github.com/tribalwarshelp/dcbot/utils" "github.com/robfig/cron/v3" ) @@ -61,6 +57,7 @@ func (h *handler) loadEnnoblements(worlds []string) map[string]ennoblements { }) if err != nil { log.Printf("%s: %s", w, err.Error()) + continue } m[w] = filterEnnoblements(es, h.since) } @@ -115,63 +112,3 @@ func (h *handler) checkEnnoblements() { } } } - -func formatDateOfConquest(loc *time.Location, t time.Time) string { - return t.In(loc).Format("15:04:05") -} - -type messageData struct { - world string - date string - village string - oldOwnerName string - oldOwnerTribeTag string - newOwnerName string - newOwnerTribeTag string -} - -func newMessageData(world string, ennoblement *shared_models.Ennoblement) messageData { - data := messageData{ - date: formatDateOfConquest(utils.GetLocation(tribalwars.LanguageCodeFromWorldName(world)), ennoblement.EnnobledAt), - world: world, - } - if !isVillageNil(ennoblement.Village) { - data.village = fmt.Sprintf("%s (%d|%d)", ennoblement.Village.Name, ennoblement.Village.X, ennoblement.Village.Y) - } - if !isPlayerNil(ennoblement.OldOwner) { - data.oldOwnerName = ennoblement.OldOwner.Name - } - if !isPlayerTribeNil(ennoblement.OldOwner) { - data.oldOwnerTribeTag = ennoblement.OldOwner.Tribe.Tag - } - if !isPlayerNil(ennoblement.NewOwner) { - data.newOwnerName = ennoblement.NewOwner.Name - } - if !isPlayerTribeNil(ennoblement.NewOwner) { - data.newOwnerTribeTag = ennoblement.NewOwner.Tribe.Tag - } - return data -} - -func formatMsgAboutVillageLost(msgData messageData) string { - - return fmt.Sprintf(`**%s** %s: Wioska %s (właściciel: %s [%s]) została stracona na rzecz gracza %s (%s)`, - msgData.world, - msgData.date, - msgData.village, - msgData.oldOwnerName, - msgData.oldOwnerTribeTag, - msgData.newOwnerName, - msgData.newOwnerTribeTag) -} - -func formatMsgAboutVillageConquest(msgData messageData) string { - return fmt.Sprintf(`**%s** %s: Gracz %s (%s) podbił wioskę %s od gracza %s (%s)`, - msgData.world, - msgData.date, - msgData.newOwnerName, - msgData.newOwnerTribeTag, - msgData.village, - msgData.oldOwnerName, - msgData.oldOwnerTribeTag) -} diff --git a/cron/helpers.go b/cron/helpers.go index e979f2b..7b90881 100644 --- a/cron/helpers.go +++ b/cron/helpers.go @@ -28,3 +28,7 @@ func isPlayerTribeNil(player *shared_models.Player) bool { func isVillageNil(village *shared_models.Village) bool { return village == nil } + +func formatDateOfConquest(loc *time.Location, t time.Time) string { + return t.In(loc).Format("15:04:05") +} diff --git a/cron/message.go b/cron/message.go new file mode 100644 index 0000000..169ad95 --- /dev/null +++ b/cron/message.go @@ -0,0 +1,68 @@ +package cron + +import ( + "fmt" + + "github.com/tribalwarshelp/dcbot/utils" + shared_models "github.com/tribalwarshelp/shared/models" +) + +type messageData struct { + world string + date string + village string + oldOwnerName string + oldOwnerTribeTag string + newOwnerName string + newOwnerTribeTag string +} + +func newMessageData(world string, ennoblement *shared_models.Ennoblement) messageData { + data := messageData{ + date: formatDateOfConquest(utils.GetLocation(utils.LanguageCodeFromWorldName(world)), ennoblement.EnnobledAt), + world: world, + village: "-", + oldOwnerName: "-", + oldOwnerTribeTag: "-", + newOwnerName: "-", + newOwnerTribeTag: "-", + } + if !isVillageNil(ennoblement.Village) { + data.village = fmt.Sprintf("%s (%d|%d)", ennoblement.Village.Name, ennoblement.Village.X, ennoblement.Village.Y) + } + if !isPlayerNil(ennoblement.OldOwner) { + data.oldOwnerName = ennoblement.OldOwner.Name + } + if !isPlayerTribeNil(ennoblement.OldOwner) { + data.oldOwnerTribeTag = ennoblement.OldOwner.Tribe.Tag + } + if !isPlayerNil(ennoblement.NewOwner) { + data.newOwnerName = ennoblement.NewOwner.Name + } + if !isPlayerTribeNil(ennoblement.NewOwner) { + data.newOwnerTribeTag = ennoblement.NewOwner.Tribe.Tag + } + return data +} + +func formatMsgAboutVillageLost(msgData messageData) string { + return fmt.Sprintf(`**%s** %s: Wioska %s gracza %s [%s] została stracona na rzecz %s (%s)`, + msgData.world, + msgData.date, + msgData.village, + msgData.oldOwnerName, + msgData.oldOwnerTribeTag, + msgData.newOwnerName, + msgData.newOwnerTribeTag) +} + +func formatMsgAboutVillageConquest(msgData messageData) string { + return fmt.Sprintf(`**%s** %s: Gracz %s (%s) podbił wioskę %s od gracza %s (%s)`, + msgData.world, + msgData.date, + msgData.newOwnerName, + msgData.newOwnerTribeTag, + msgData.village, + msgData.oldOwnerName, + msgData.oldOwnerTribeTag) +} diff --git a/discord/commands.go b/discord/commands.go index 5cc04a9..bdf9c61 100644 --- a/discord/commands.go +++ b/discord/commands.go @@ -1,12 +1,5 @@ package discord -import ( - "fmt" - "strings" - - "github.com/bwmarrin/discordgo" -) - type Command string var ( @@ -30,59 +23,3 @@ func (cmd Command) String() string { func (cmd Command) WithPrefix(prefix string) string { return prefix + cmd.String() } - -func (s *Session) sendHelpMessage(channelID string) { - embed := &discordgo.MessageEmbed{ - Author: &discordgo.MessageEmbedAuthor{}, - Color: discordEmbedColor, - Title: "Pomoc", - Description: "Komendy oferowane przez bota", - Fields: []*discordgo.MessageEmbedField{ - &discordgo.MessageEmbedField{ - Name: "Dla wszystkich", - Value: fmt.Sprintf(` -- %s [serwer] [strona] [id1] [id2] [id3] [n id] - wyświetla graczy o największym RA z plemion o podanych id -- %s [serwer] [strona] [id1] [id2] [id3] [n id] - wyświetla graczy o największym RO z plemion o podanych id -- %s [serwer] [strona] [id1] [id2] [id3] [n id] - wyświetla graczy o największym RW z plemion o podanych id -- %s [serwer] [strona] [id1] [id2] [id3] [n id] - wyświetla graczy o największej liczbie pokonanych z plemion o podanych id -- %s [serwer] [strona] [id1] [id2] [id3] [n id] - wyświetla graczy o największej liczbie punktów z plemion o podanych id - `, - TopAttCommand.WithPrefix(s.cfg.CommandPrefix), - TopDefCommand.WithPrefix(s.cfg.CommandPrefix), - TopSuppCommand.WithPrefix(s.cfg.CommandPrefix), - TopTotalCommand.WithPrefix(s.cfg.CommandPrefix), - TopPointsCommand.WithPrefix(s.cfg.CommandPrefix)), - Inline: false, - }, - &discordgo.MessageEmbedField{ - Name: "Dla adminów", - Value: fmt.Sprintf(` -- %s [świat] [id] - dodaje plemię z danego świata do obserwowanych -- %s - wyświetla wszystkie obserwowane plemiona -- %s [id z %s] - usuwa plemię z obserwowanych -- %s - ustawia kanał na którym będą wyświetlać się informacje o straconych wioskach -- %s - ustawia kanał na którym będą wyświetlać się informacje o podbitych wioskach - `, - AddCommand.WithPrefix(s.cfg.CommandPrefix), - ListCommand.WithPrefix(s.cfg.CommandPrefix), - DeleteCommand.WithPrefix(s.cfg.CommandPrefix), - ListCommand.WithPrefix(s.cfg.CommandPrefix), - LostVillagesCommand.WithPrefix(s.cfg.CommandPrefix), - ConqueredVillagesCommand.WithPrefix(s.cfg.CommandPrefix)), - Inline: false, - }, - }, - Footer: &discordgo.MessageEmbedFooter{ - Text: "https://dawid-wysokinski.pl/", - }, - } - s.dg.ChannelMessageSendEmbed(channelID, embed) -} - -func (s *Session) sendUnknownCommandError(mention, channelID string, command ...string) { - s.SendMessage(channelID, mention+` Nieznana komenda: `+strings.Join(command, " ")) -} - -func (s *Session) SendMessage(channelID, message string) { - s.dg.ChannelMessageSend(channelID, message) -} diff --git a/discord/discord.go b/discord/discord.go index 8124491..5a0fd9e 100644 --- a/discord/discord.go +++ b/discord/discord.go @@ -391,7 +391,7 @@ func (s *Session) handleListCommand(m *discordgo.MessageCreate) { Color: discordEmbedColor, Fields: []*discordgo.MessageEmbedField{ &discordgo.MessageEmbedField{ - Name: "ID - świat - ID plemienia", + Name: "Indeks. ID - świat - ID plemienia", Value: msg, }, }, @@ -437,3 +437,59 @@ func (s *Session) memberHasPermission(guildID string, userID string, permission return false, nil } + +func (s *Session) sendHelpMessage(channelID string) { + embed := &discordgo.MessageEmbed{ + Author: &discordgo.MessageEmbedAuthor{}, + Color: discordEmbedColor, + Title: "Pomoc", + Description: "Komendy oferowane przez bota", + Fields: []*discordgo.MessageEmbedField{ + &discordgo.MessageEmbedField{ + Name: "Dla wszystkich", + Value: fmt.Sprintf(` +- %s [serwer] [strona] [id1] [id2] [id3] [n id] - wyświetla graczy o największym RA z plemion o podanych id +- %s [serwer] [strona] [id1] [id2] [id3] [n id] - wyświetla graczy o największym RO z plemion o podanych id +- %s [serwer] [strona] [id1] [id2] [id3] [n id] - wyświetla graczy o największym RW z plemion o podanych id +- %s [serwer] [strona] [id1] [id2] [id3] [n id] - wyświetla graczy o największej liczbie pokonanych z plemion o podanych id +- %s [serwer] [strona] [id1] [id2] [id3] [n id] - wyświetla graczy o największej liczbie punktów z plemion o podanych id + `, + TopAttCommand.WithPrefix(s.cfg.CommandPrefix), + TopDefCommand.WithPrefix(s.cfg.CommandPrefix), + TopSuppCommand.WithPrefix(s.cfg.CommandPrefix), + TopTotalCommand.WithPrefix(s.cfg.CommandPrefix), + TopPointsCommand.WithPrefix(s.cfg.CommandPrefix)), + Inline: false, + }, + &discordgo.MessageEmbedField{ + Name: "Dla adminów", + Value: fmt.Sprintf(` +- %s [świat] [id] - dodaje plemię z danego świata do obserwowanych +- %s - wyświetla wszystkie obserwowane plemiona +- %s [id z %s] - usuwa plemię z obserwowanych +- %s - ustawia kanał na którym będą wyświetlać się informacje o straconych wioskach +- %s - ustawia kanał na którym będą wyświetlać się informacje o podbitych wioskach + `, + AddCommand.WithPrefix(s.cfg.CommandPrefix), + ListCommand.WithPrefix(s.cfg.CommandPrefix), + DeleteCommand.WithPrefix(s.cfg.CommandPrefix), + ListCommand.WithPrefix(s.cfg.CommandPrefix), + LostVillagesCommand.WithPrefix(s.cfg.CommandPrefix), + ConqueredVillagesCommand.WithPrefix(s.cfg.CommandPrefix)), + Inline: false, + }, + }, + Footer: &discordgo.MessageEmbedFooter{ + Text: "https://dawid-wysokinski.pl/", + }, + } + s.dg.ChannelMessageSendEmbed(channelID, embed) +} + +func (s *Session) sendUnknownCommandError(mention, channelID string, command ...string) { + s.SendMessage(channelID, mention+` Nieznana komenda: `+strings.Join(command, " ")) +} + +func (s *Session) SendMessage(channelID, message string) { + s.dg.ChannelMessageSend(channelID, message) +} diff --git a/tribalwars/helpers.go b/utils/language_code_from_world_name.go similarity index 85% rename from tribalwars/helpers.go rename to utils/language_code_from_world_name.go index fbf3caa..87523fb 100644 --- a/tribalwars/helpers.go +++ b/utils/language_code_from_world_name.go @@ -1,4 +1,4 @@ -package tribalwars +package utils func LanguageCodeFromWorldName(world string) string { if len(world) < 2 {