1package slack 2 3// SectionBlock defines a new block of type section 4// 5// More Information: https://api.slack.com/reference/messaging/blocks#section 6type SectionBlock struct { 7 Type MessageBlockType `json:"type"` 8 Text *TextBlockObject `json:"text,omitempty"` 9 BlockID string `json:"block_id,omitempty"` 10 Fields []*TextBlockObject `json:"fields,omitempty"` 11 Accessory *Accessory `json:"accessory,omitempty"` 12} 13 14// BlockType returns the type of the block 15func (s SectionBlock) BlockType() MessageBlockType { 16 return s.Type 17} 18 19// SectionBlockOption allows configuration of options for a new section block 20type SectionBlockOption func(*SectionBlock) 21 22func SectionBlockOptionBlockID(blockID string) SectionBlockOption { 23 return func(block *SectionBlock) { 24 block.BlockID = blockID 25 } 26} 27 28// NewSectionBlock returns a new instance of a section block to be rendered 29func NewSectionBlock(textObj *TextBlockObject, fields []*TextBlockObject, accessory *Accessory, options ...SectionBlockOption) *SectionBlock { 30 block := SectionBlock{ 31 Type: MBTSection, 32 Text: textObj, 33 Fields: fields, 34 Accessory: accessory, 35 } 36 37 for _, option := range options { 38 option(&block) 39 } 40 41 return &block 42} 43