diff --git a/cron/handler.go b/cron/handler.go index 0b67d02..96db3c7 100644 --- a/cron/handler.go +++ b/cron/handler.go @@ -219,8 +219,7 @@ func (h *handler) checkEnnoblements() { SetTitle(title). SetColor(colorConqueredVillages). SetFields(conqueredVillagesMsg.ToMessageEmbedFields()). - SetTimestamp(timestamp). - MessageEmbed) + SetTimestamp(timestamp)) } if g.LostVillagesChannelID != "" && !lostVillagesMsg.IsEmpty() { @@ -235,8 +234,7 @@ func (h *handler) checkEnnoblements() { SetTitle(title). SetColor(colorLostVillages). SetFields(lostVillagesMsg.ToMessageEmbedFields()). - SetTimestamp(timestamp). - MessageEmbed) + SetTimestamp(timestamp)) } } } diff --git a/discord/coords_translation.go b/discord/coords_translation.go index 4edfa1c..899bfc4 100644 --- a/discord/coords_translation.go +++ b/discord/coords_translation.go @@ -145,7 +145,6 @@ func (s *Session) translateCoords(ctx *commandCtx, m *discordgo.MessageCreate) { MessageID: message.CoordsTranslationTitle, DefaultMessage: message.FallbackMsg(message.CoordsTranslationTitle, "Villages"), })). - SetFields(msg.ToMessageEmbedFields()). - MessageEmbed) + SetFields(msg.ToMessageEmbedFields())) } } diff --git a/discord/discord.go b/discord/discord.go index fcacb71..c26a54c 100644 --- a/discord/discord.go +++ b/discord/discord.go @@ -166,41 +166,16 @@ func (s *Session) SendMessage(channelID, message string) error { return err } -func (s *Session) SendEmbed(channelID string, message *discordgo.MessageEmbed) error { - fields := message.Fields - baseNumberOfCharacters := len(message.Description) + len(message.Title) - if message.Author != nil { - baseNumberOfCharacters += len(message.Author.Name) - } - if message.Footer != nil { - baseNumberOfCharacters += len(message.Footer.Text) - } - - var splitFields [][]*discordgo.MessageEmbedField - characters := baseNumberOfCharacters - fromIndex := 0 - fieldsLen := len(fields) - for index, field := range fields { - fNameLen := len(field.Name) - fValLen := len(field.Value) - if characters+fNameLen+fValLen > EmbedSizeLimit || index == fieldsLen-1 { - splitFields = append(splitFields, fields[fromIndex:index+1]) - fromIndex = index - characters = baseNumberOfCharacters - } - characters += fNameLen - characters += fValLen - } - for _, fields := range splitFields { +func (s *Session) SendEmbed(channelID string, e *Embed) error { + for _, fields := range splitEmbedFields(e) { fieldsLen := len(fields) for i := 0; i < fieldsLen; i += EmbedLimitField { end := i + EmbedLimitField - if end > fieldsLen { end = fieldsLen } - message.Fields = fields[i:end] - if _, err := s.dg.ChannelMessageSendEmbed(channelID, message); err != nil { + e.Fields = fields[i:end] + if _, err := s.dg.ChannelMessageSendEmbed(channelID, e.MessageEmbed); err != nil { return err } } diff --git a/discord/embed.go b/discord/embed.go index 9422011..d4f3bbf 100644 --- a/discord/embed.go +++ b/discord/embed.go @@ -285,3 +285,32 @@ func (b *MessageEmbedFieldBuilder) ToMessageEmbedFields() []*discordgo.MessageEm } return fields } + +func splitEmbedFields(e *Embed) [][]*discordgo.MessageEmbedField { + fields := e.Fields + baseNumberOfCharacters := len(e.Description) + len(e.Title) + if e.Author != nil { + baseNumberOfCharacters += len(e.Author.Name) + } + if e.Footer != nil { + baseNumberOfCharacters += len(e.Footer.Text) + } + + var splitFields [][]*discordgo.MessageEmbedField + characters := baseNumberOfCharacters + fromIndex := 0 + fieldsLen := len(fields) + for index, field := range fields { + fNameLen := len(field.Name) + fValLen := len(field.Value) + if characters+fNameLen+fValLen > EmbedSizeLimit || index == fieldsLen-1 { + splitFields = append(splitFields, fields[fromIndex:index+1]) + fromIndex = index + characters = baseNumberOfCharacters + } + characters += fNameLen + characters += fValLen + } + + return splitFields +} diff --git a/discord/observations.go b/discord/observations.go index 036bf3b..b982b30 100644 --- a/discord/observations.go +++ b/discord/observations.go @@ -170,8 +170,7 @@ func (s *Session) handleGroupsCommand(ctx *commandCtx, m *discordgo.MessageCreat AddField(ctx.localizer.MustLocalize(&i18n.LocalizeConfig{ MessageID: message.GroupsFieldTitle, DefaultMessage: message.FallbackMsg(message.GroupsFieldTitle, "Index | ID | Conquer | Loss | Barbarian | Internal"), - }), msg). - MessageEmbed) + }), msg)) } func (s *Session) handleConqueredVillagesCommand(ctx *commandCtx, m *discordgo.MessageCreate, args ...string) { @@ -757,8 +756,7 @@ func (s *Session) handleObservationsCommand(ctx *commandCtx, m *discordgo.Messag DefaultMessage: message.FallbackMsg(message.ObservationsTitle, "Observed tribes\nIndex | ID - Server - Tribe"), })). - SetFields(msg.ToMessageEmbedFields()). - MessageEmbed) + SetFields(msg.ToMessageEmbedFields())) } func (s *Session) handleShowEnnobledBarbariansCommand(ctx *commandCtx, m *discordgo.MessageCreate, args ...string) { diff --git a/discord/public_commands.go b/discord/public_commands.go index 9e75904..2cbfa0b 100644 --- a/discord/public_commands.go +++ b/discord/public_commands.go @@ -262,8 +262,7 @@ func (s *Session) handleHelpCommand(ctx *commandCtx, m *discordgo.MessageCreate, DefaultMessage: message.FallbackMsg(message.HelpForAllUsers, "For everyone"), }), commandsForAll). AddField(forAdmins, commandsForGuildAdmins). - AddField(forAdmins+" 2", commandsForGuildAdmins2). - MessageEmbed) + AddField(forAdmins+" 2", commandsForGuildAdmins2)) } func (s *Session) handleAuthorCommand(ctx *commandCtx, m *discordgo.MessageCreate, args ...string) { @@ -487,6 +486,5 @@ func (s *Session) handleTribeCommand(ctx *commandCtx, m *discordgo.MessageCreate "Page": page, "MaxPage": totalPages, }, - })). - MessageEmbed) + }))) }