SendEmbed checks now if the field limit has been reached
This commit is contained in:
parent
ae525cd1e3
commit
9e64f3085b
|
@ -146,11 +146,10 @@ func (h *handler) checkEnnoblements() {
|
|||
|
||||
if group.ConqueredVillagesChannelID != "" {
|
||||
for _, ennoblement := range ennoblements.getConqueredVillagesByTribe(observation.TribeID, group.ShowSelfConquers) {
|
||||
isBarbarian := isPlayerNil(ennoblement.OldOwner) || ennoblement.OldOwner.ID == 0
|
||||
isInTheSameGroup := !isPlayerTribeNil(ennoblement.OldOwner) &&
|
||||
group.Observations.Contains(observation.Server, ennoblement.OldOwner.Tribe.ID)
|
||||
if (!group.ShowSelfConquers && isInTheSameGroup) ||
|
||||
(!group.ShowEnnobledBarbarians && isBarbarian) {
|
||||
(!group.ShowEnnobledBarbarians && isBarbarian(ennoblement.OldOwner)) {
|
||||
continue
|
||||
}
|
||||
|
||||
|
@ -168,56 +167,35 @@ func (h *handler) checkEnnoblements() {
|
|||
}
|
||||
|
||||
if group.ConqueredVillagesChannelID != "" && !conqueredVillagesMsg.IsEmpty() {
|
||||
fields := conqueredVillagesMsg.ToMessageEmbedFields()
|
||||
title := localizer.MustLocalize(&i18n.LocalizeConfig{
|
||||
MessageID: "cron.conqueredVillages.title",
|
||||
DefaultMessage: message.FallbackMsg("cron.conqueredVillages.title",
|
||||
"Conquered villages"),
|
||||
})
|
||||
timestamp := formatDateOfConquest(time.Now())
|
||||
|
||||
for i := 0; i < len(fields); i += discord.EmbedLimitField {
|
||||
end := i + discord.EmbedLimitField
|
||||
|
||||
if end > len(fields) {
|
||||
end = len(fields)
|
||||
}
|
||||
|
||||
h.discord.SendEmbed(group.ConqueredVillagesChannelID,
|
||||
discord.
|
||||
NewEmbed().
|
||||
SetTitle(title).
|
||||
SetColor(colorConqueredVillage).
|
||||
SetFields(fields[i:end]).
|
||||
SetTimestamp(timestamp).
|
||||
MessageEmbed)
|
||||
}
|
||||
h.discord.SendEmbed(group.ConqueredVillagesChannelID,
|
||||
discord.
|
||||
NewEmbed().
|
||||
SetTitle(title).
|
||||
SetColor(colorConqueredVillage).
|
||||
SetFields(conqueredVillagesMsg.ToMessageEmbedFields()).
|
||||
SetTimestamp(formatDateOfConquest(time.Now())).
|
||||
MessageEmbed)
|
||||
}
|
||||
|
||||
if group.LostVillagesChannelID != "" && !lostVillagesMsg.IsEmpty() {
|
||||
fields := lostVillagesMsg.ToMessageEmbedFields()
|
||||
title := localizer.MustLocalize(&i18n.LocalizeConfig{
|
||||
MessageID: "cron.lostVillages.title",
|
||||
DefaultMessage: message.FallbackMsg("cron.lostVillages.title",
|
||||
"Lost villages"),
|
||||
})
|
||||
timestamp := formatDateOfConquest(time.Now())
|
||||
for i := 0; i < len(fields); i += discord.EmbedLimitField {
|
||||
end := i + discord.EmbedLimitField
|
||||
|
||||
if end > len(fields) {
|
||||
end = len(fields)
|
||||
}
|
||||
|
||||
h.discord.SendEmbed(group.LostVillagesChannelID,
|
||||
discord.
|
||||
NewEmbed().
|
||||
SetTitle(title).
|
||||
SetColor(colorLostVillage).
|
||||
SetFields(fields[i:end]).
|
||||
SetTimestamp(timestamp).
|
||||
MessageEmbed)
|
||||
}
|
||||
h.discord.SendEmbed(group.LostVillagesChannelID,
|
||||
discord.
|
||||
NewEmbed().
|
||||
SetTitle(title).
|
||||
SetColor(colorLostVillage).
|
||||
SetFields(lostVillagesMsg.ToMessageEmbedFields()).
|
||||
SetTimestamp(formatDateOfConquest(time.Now())).
|
||||
MessageEmbed)
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -40,3 +40,7 @@ func formatMsgLink(text string, url string) string {
|
|||
}
|
||||
return fmt.Sprintf("[``%s``](%s)", text, url)
|
||||
}
|
||||
|
||||
func isBarbarian(p *shared_models.Player) bool {
|
||||
return isPlayerNil(p) || p.ID == 0
|
||||
}
|
||||
|
|
|
@ -57,6 +57,7 @@ func (s *Session) init() error {
|
|||
if err := s.UpdateStatus(s.cfg.Status); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
|
@ -70,8 +71,21 @@ func (s *Session) SendMessage(channelID, message string) error {
|
|||
}
|
||||
|
||||
func (s *Session) SendEmbed(channelID string, message *discordgo.MessageEmbed) error {
|
||||
_, err := s.dg.ChannelMessageSendEmbed(channelID, message)
|
||||
return err
|
||||
fields := message.Fields
|
||||
|
||||
for i := 0; i < len(fields); i += EmbedLimitField {
|
||||
end := i + EmbedLimitField
|
||||
|
||||
if end > len(fields) {
|
||||
end = len(fields)
|
||||
}
|
||||
message.Fields = fields[i:end]
|
||||
if _, err := s.dg.ChannelMessageSendEmbed(channelID, message); err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
func (s *Session) UpdateStatus(status string) error {
|
||||
|
@ -81,6 +95,16 @@ func (s *Session) UpdateStatus(status string) error {
|
|||
return nil
|
||||
}
|
||||
|
||||
func (s *Session) IsGuildMember(guildID string) (bool, error) {
|
||||
_, err := s.dg.State.Guild(guildID)
|
||||
if err != nil {
|
||||
if _, err = s.dg.Guild(guildID); err != nil {
|
||||
return false, err
|
||||
}
|
||||
}
|
||||
return true, nil
|
||||
}
|
||||
|
||||
func (s *Session) handleNewMessage(_ *discordgo.Session, m *discordgo.MessageCreate) {
|
||||
if m.Author.ID == s.dg.State.User.ID || m.Author.Bot || m.GuildID == "" {
|
||||
return
|
||||
|
@ -100,6 +124,7 @@ func (s *Session) handleNewMessage(_ *discordgo.Session, m *discordgo.MessageCre
|
|||
server: server,
|
||||
localizer: message.NewLocalizer(server.Lang),
|
||||
}
|
||||
|
||||
switch splitted[0] {
|
||||
case HelpCommand.WithPrefix(s.cfg.CommandPrefix):
|
||||
s.handleHelpCommand(ctx, m)
|
||||
|
@ -118,14 +143,13 @@ func (s *Session) handleNewMessage(_ *discordgo.Session, m *discordgo.MessageCre
|
|||
case GroupsCommand.WithPrefix(s.cfg.CommandPrefix):
|
||||
s.handleGroupsCommand(ctx, m)
|
||||
|
||||
case ShowEnnobledBarbariansCommand.WithPrefix(s.cfg.CommandPrefix):
|
||||
s.handleShowEnnobledBarbariansCommand(ctx, m, args...)
|
||||
case ObserveCommand.WithPrefix(s.cfg.CommandPrefix):
|
||||
s.handleObserveCommand(ctx, m, args...)
|
||||
case DeleteObservationCommand.WithPrefix(s.cfg.CommandPrefix):
|
||||
s.handleDeleteObservationCommand(ctx, m, args...)
|
||||
case ObservationsCommand.WithPrefix(s.cfg.CommandPrefix):
|
||||
s.handleObservationsCommand(ctx, m, args...)
|
||||
|
||||
case ConqueredVillagesCommand.WithPrefix(s.cfg.CommandPrefix):
|
||||
s.handleConqueredVillagesCommand(ctx, m, args...)
|
||||
case DisableConqueredVillagesCommand.WithPrefix(s.cfg.CommandPrefix):
|
||||
|
@ -134,6 +158,9 @@ func (s *Session) handleNewMessage(_ *discordgo.Session, m *discordgo.MessageCre
|
|||
s.handleLostVillagesCommand(ctx, m, args...)
|
||||
case DisableLostVillagesCommand.WithPrefix(s.cfg.CommandPrefix):
|
||||
s.handleDisableLostVillagesCommand(ctx, m, args...)
|
||||
|
||||
case ShowEnnobledBarbariansCommand.WithPrefix(s.cfg.CommandPrefix):
|
||||
s.handleShowEnnobledBarbariansCommand(ctx, m, args...)
|
||||
case ShowSelfConquersCommand.WithPrefix(s.cfg.CommandPrefix):
|
||||
s.handleShowSelfConquersCommand(ctx, m, args...)
|
||||
|
||||
|
@ -177,13 +204,3 @@ func (s *Session) memberHasPermission(guildID string, userID string, permission
|
|||
func (s *Session) sendUnknownCommandError(mention, channelID string, command ...string) {
|
||||
s.SendMessage(channelID, mention+` Unknown command: `+strings.Join(command, " "))
|
||||
}
|
||||
|
||||
func (s *Session) IsGuildMember(guildID string) (bool, error) {
|
||||
_, err := s.dg.State.Guild(guildID)
|
||||
if err != nil {
|
||||
if _, err = s.dg.Guild(guildID); err != nil {
|
||||
return false, err
|
||||
}
|
||||
}
|
||||
return true, nil
|
||||
}
|
||||
|
|
|
@ -306,35 +306,35 @@ func (s *Session) handleTribeCommand(ctx commandCtx, m *discordgo.MessageCreate,
|
|||
filter.RankAttGTE = 1
|
||||
filter.Sort = "rankAtt ASC"
|
||||
title = ctx.localizer.MustLocalize(&i18n.LocalizeConfig{
|
||||
MessageID: "tribe.title.sortedByODA",
|
||||
DefaultMessage: message.FallbackMsg("tribe.title.sortedByODA", "Ordered by ODA"),
|
||||
MessageID: "tribe.title.orderedByODA",
|
||||
DefaultMessage: message.FallbackMsg("tribe.title.orderedByODA", "Ordered by ODA"),
|
||||
})
|
||||
case TopDefCommand:
|
||||
filter.RankDefGTE = 1
|
||||
filter.Sort = "rankDef ASC"
|
||||
title = ctx.localizer.MustLocalize(&i18n.LocalizeConfig{
|
||||
MessageID: "tribe.title.sortedByODD",
|
||||
DefaultMessage: message.FallbackMsg("tribe.title.sortedByODD", "Ordered by ODD"),
|
||||
MessageID: "tribe.title.orderedByODD",
|
||||
DefaultMessage: message.FallbackMsg("tribe.title.orderedByODD", "Ordered by ODD"),
|
||||
})
|
||||
case TopSuppCommand:
|
||||
filter.RankSupGTE = 1
|
||||
filter.Sort = "rankSup ASC"
|
||||
title = ctx.localizer.MustLocalize(&i18n.LocalizeConfig{
|
||||
MessageID: "tribe.title.sortedByODS",
|
||||
DefaultMessage: message.FallbackMsg("tribe.title.sortedByODS", "Ordered by ODS"),
|
||||
MessageID: "tribe.title.orderedByODS",
|
||||
DefaultMessage: message.FallbackMsg("tribe.title.orderedByODS", "Ordered by ODS"),
|
||||
})
|
||||
case TopTotalCommand:
|
||||
filter.RankTotalGTE = 1
|
||||
filter.Sort = "rankTotal ASC"
|
||||
title = ctx.localizer.MustLocalize(&i18n.LocalizeConfig{
|
||||
MessageID: "tribe.title.sortedByOD",
|
||||
DefaultMessage: message.FallbackMsg("tribe.title.sortedByOD", "Ordered by OD"),
|
||||
MessageID: "tribe.title.orderedByOD",
|
||||
DefaultMessage: message.FallbackMsg("tribe.title.orderedByOD", "Ordered by OD"),
|
||||
})
|
||||
case TopPointsCommand:
|
||||
filter.Sort = "rank ASC"
|
||||
title = ctx.localizer.MustLocalize(&i18n.LocalizeConfig{
|
||||
MessageID: "tribe.title.sortedByPoints",
|
||||
DefaultMessage: message.FallbackMsg("tribe.title.sortedByPoints", "Ordered by points"),
|
||||
MessageID: "tribe.title.orderedByPoints",
|
||||
DefaultMessage: message.FallbackMsg("tribe.title.orderedByPoints", "Ordered by points"),
|
||||
})
|
||||
default:
|
||||
return
|
||||
|
|
|
@ -26,11 +26,11 @@
|
|||
|
||||
"tribe.invalidPage": "{{.Mention}} The page must be a number greater than 0.",
|
||||
"tribe.noTribeID": "{{.Mention}} You haven't entered the tribe ID.",
|
||||
"tribe.title.sortedByOD": "Ordered by OD",
|
||||
"tribe.title.sortedByODA": "Ordered by ODA",
|
||||
"tribe.title.sortedByODD": "Ordered by ODD",
|
||||
"tribe.title.sortedByODS": "Ordered by ODS",
|
||||
"tribe.title.sortedByPoints": "Ordered by points",
|
||||
"tribe.title.orderedByOD": "Ordered by OD",
|
||||
"tribe.title.orderedByODA": "Ordered by ODA",
|
||||
"tribe.title.orderedByODD": "Ordered by ODD",
|
||||
"tribe.title.orderedByODS": "Ordered by ODS",
|
||||
"tribe.title.orderedByPoints": "Ordered by points",
|
||||
"tribe.tribesNotFound": "{{.Mention}} Tribes not found.",
|
||||
"tribe.exceededMaximumNumberOfPages": "{{.Mention}} You have exceeded the maximum number of pages ({{.Page}}/{{.MaxPage}}).",
|
||||
"tribe.messageLine": "**{{.Index}}**. [``{{.PlayerName}}``]({{.PlayerURL}}) (Tribe: [``{{.TribeTag}}``]({{.TribeURL}}) | Rank: **{{.Rank}}** | Score: **{{.Score}}**)\n",
|
||||
|
|
|
@ -26,11 +26,11 @@
|
|||
|
||||
"tribe.invalidPage": "{{.Mention}} Strona musi być liczbą większą od 0.",
|
||||
"tribe.noTribeID": "{{.Mention}} Nie wprowadziłeś ID plemienia.",
|
||||
"tribe.title.sortedByOD": "Gracze posortowani według pokonanych przeciwników",
|
||||
"tribe.title.sortedByODA": "Gracze posortowani według pokonanych przeciwników jako agresor",
|
||||
"tribe.title.sortedByODD": "Gracze posortowani według pokonanych przeciwników jako obrońca",
|
||||
"tribe.title.sortedByODS": "Gracze posortowani według pokonanych przeciwników jako wspierający",
|
||||
"tribe.title.sortedByPoints": "Gracze posortowani według punktów",
|
||||
"tribe.title.orderedByOD": "Gracze posortowani według pokonanych przeciwników",
|
||||
"tribe.title.orderedByODA": "Gracze posortowani według pokonanych przeciwników jako agresor",
|
||||
"tribe.title.orderedByODD": "Gracze posortowani według pokonanych przeciwników jako obrońca",
|
||||
"tribe.title.orderedByODS": "Gracze posortowani według pokonanych przeciwników jako wspierający",
|
||||
"tribe.title.orderedByPoints": "Gracze posortowani według punktów",
|
||||
"tribe.tribesNotFound": "{{.Mention}} Plemię nie zostało znalezione.",
|
||||
"tribe.exceededMaximumNumberOfPages": "{{.Mention}} Przekroczyłeś limit stron ({{.Page}}/{{.MaxPage}}).",
|
||||
"tribe.messageLine": "**{{.Index}}**. [``{{.PlayerName}}``]({{.PlayerURL}}) (Plemię: [``{{.TribeTag}}``]({{.TribeURL}}) | Ranking: **{{.Rank}}** | Wynik: **{{.Score}}**)\n",
|
||||
|
|
Reference in New Issue