Skip to content
Snippets Groups Projects
Commit 1f097f9f authored by Jano Hendriks's avatar Jano Hendriks
Browse files

Limit blocks to 50 per message

parent fac51e5f
No related branches found
No related tags found
1 merge request!53Slack utils
...@@ -51,17 +51,26 @@ func (s *SlackClient) SendAlertWithFields(message string, channel string, slackF ...@@ -51,17 +51,26 @@ func (s *SlackClient) SendAlertWithFields(message string, channel string, slackF
return "" return ""
} }
slackFieldsPerMessage := lo.Chunk(slackFields, 50) // Slack has a limit of 50 blocks per message
var messageTimestamp string
for i, slackFieldsForMessage := range slackFieldsPerMessage {
messageText := message
if len(slackFieldsPerMessage) > 1 {
messageText = fmt.Sprintf("%s (%d/%d)", message, i+1, len(slackFieldsPerMessage))
}
blocks := []slack.Block{slack.NewSectionBlock(slack.NewTextBlockObject( blocks := []slack.Block{slack.NewSectionBlock(slack.NewTextBlockObject(
"plain_text", "plain_text",
message, messageText,
hasEmoji(message), hasEmoji(messageText),
false), false),
nil, nil,
nil, nil,
), ),
} }
slackFieldsChunked := lo.Chunk(slackFields, 2) slackFieldsChunked := lo.Chunk(slackFieldsForMessage, 2)
for _, slackFieldsChunk := range slackFieldsChunked { for _, slackFieldsChunk := range slackFieldsChunked {
fieldBlocksForChunk := []*slack.TextBlockObject{} fieldBlocksForChunk := []*slack.TextBlockObject{}
...@@ -92,7 +101,11 @@ func (s *SlackClient) SendAlertWithFields(message string, channel string, slackF ...@@ -92,7 +101,11 @@ func (s *SlackClient) SendAlertWithFields(message string, channel string, slackF
slackMessageOptions = append(slackMessageOptions, slack.MsgOptionTS(parentMessageTimestamp[0])) slackMessageOptions = append(slackMessageOptions, slack.MsgOptionTS(parentMessageTimestamp[0]))
} }
return s.postMessage(channel, slackMessageOptions) messageTimestamp = s.postMessage(channel, slackMessageOptions)
}
// Return the last message timestamp
return messageTimestamp
} }
func (s *SlackClient) postMessage(channel string, messageOptions []slack.MsgOption) string { func (s *SlackClient) postMessage(channel string, messageOptions []slack.MsgOption) string {
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment