refactor, add default values to messageData constructor

This commit is contained in:
Dawid Wysokiński 2020-06-05 19:58:15 +02:00 committed by Kichiyaki
parent a724fe29b9
commit 4115558ee7
6 changed files with 131 additions and 129 deletions

View File

@ -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)
}

View File

@ -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")
}

68
cron/message.go Normal file
View File

@ -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)
}

View File

@ -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)
}

View File

@ -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)
}

View File

@ -1,4 +1,4 @@
package tribalwars
package utils
func LanguageCodeFromWorldName(world string) string {
if len(world) < 2 {