This repository has been archived on 2022-10-02. You can view files and clone it, but cannot push or open issues or pull requests.
dcbot-old/cron/message.go

119 lines
3.6 KiB
Go

package cron
import (
"fmt"
"github.com/bwmarrin/discordgo"
"github.com/tribalwarshelp/dcbot/discord"
"github.com/tribalwarshelp/dcbot/utils"
shared_models "github.com/tribalwarshelp/shared/models"
)
type messageType string
const (
messageTypeConquer messageType = "conquer"
messageTypeLost messageType = "lost"
colorLostVillage = 0xff0000
colorConqueredVillage = 0x00ff00
)
type message struct {
t messageType
server string
date string
village string
villageURL string
oldOwnerName string
oldOwnerURL string
oldOwnerTribeURL string
oldOwnerTribeTag string
newOwnerURL string
newOwnerName string
newOwnerTribeURL string
newOwnerTribeTag string
}
type newMessageConfig struct {
t messageType
host string
server string
ennoblement *shared_models.LiveEnnoblement
}
func newMessage(cfg newMessageConfig) message {
data := message{
t: cfg.t,
date: formatDateOfConquest(cfg.ennoblement.EnnobledAt),
server: cfg.server,
village: "-",
oldOwnerName: "-",
oldOwnerTribeTag: "-",
newOwnerName: "-",
newOwnerTribeTag: "-",
}
if !isVillageNil(cfg.ennoblement.Village) {
data.village = fmt.Sprintf("%s (%d|%d) %s",
cfg.ennoblement.Village.Name,
cfg.ennoblement.Village.X,
cfg.ennoblement.Village.Y,
cfg.ennoblement.Village.Continent())
data.villageURL = utils.FormatVillageURL(cfg.server, cfg.host, cfg.ennoblement.Village.ID)
}
if !isPlayerNil(cfg.ennoblement.OldOwner) {
data.oldOwnerName = cfg.ennoblement.OldOwner.Name
data.oldOwnerURL = utils.FormatPlayerURL(cfg.server, cfg.host, cfg.ennoblement.OldOwner.ID)
}
if !isPlayerTribeNil(cfg.ennoblement.OldOwner) {
data.oldOwnerTribeTag = cfg.ennoblement.OldOwner.Tribe.Tag
data.oldOwnerTribeURL = utils.FormatTribeURL(cfg.server, cfg.host, cfg.ennoblement.OldOwner.Tribe.ID)
}
if !isPlayerNil(cfg.ennoblement.NewOwner) {
data.newOwnerName = cfg.ennoblement.NewOwner.Name
data.newOwnerURL = utils.FormatPlayerURL(cfg.server, cfg.host, cfg.ennoblement.NewOwner.ID)
}
if !isPlayerTribeNil(cfg.ennoblement.NewOwner) {
data.newOwnerTribeTag = cfg.ennoblement.NewOwner.Tribe.Tag
data.newOwnerTribeURL = utils.FormatTribeURL(cfg.server, cfg.host, cfg.ennoblement.NewOwner.Tribe.ID)
}
return data
}
func (msg message) formatMsgAboutVillageLost() string {
return fmt.Sprintf(`Wioska %s gracza %s (%s) została stracona na rzecz %s (%s)`,
formatMsgLink(msg.village, msg.villageURL),
formatMsgLink(msg.oldOwnerName, msg.oldOwnerURL),
formatMsgLink(msg.oldOwnerTribeTag, msg.oldOwnerTribeURL),
formatMsgLink(msg.newOwnerName, msg.newOwnerURL),
formatMsgLink(msg.newOwnerTribeTag, msg.newOwnerTribeURL))
}
func (msg message) formatMsgAboutVillageConquest() string {
return fmt.Sprintf("Gracz %s (%s) podbił wioskę %s od gracza %s (%s)",
formatMsgLink(msg.newOwnerName, msg.newOwnerURL),
formatMsgLink(msg.newOwnerTribeTag, msg.newOwnerTribeURL),
formatMsgLink(msg.village, msg.villageURL),
formatMsgLink(msg.oldOwnerName, msg.oldOwnerURL),
formatMsgLink(msg.oldOwnerTribeTag, msg.oldOwnerTribeURL))
}
func (msg message) toEmbed() *discordgo.MessageEmbed {
title := "Podbita wioska"
fieldContent := msg.formatMsgAboutVillageConquest()
color := colorConqueredVillage
if msg.t == messageTypeLost {
title = "Stracona wioska"
fieldContent = msg.formatMsgAboutVillageLost()
color = colorLostVillage
}
return discord.
NewEmbed().
SetTitle(title).
AddField(msg.server, fieldContent).
SetTimestamp(msg.date).
SetColor(color).
MessageEmbed
}