Class: BlockKit::Surfaces::Message
- Defined in:
- lib/block_kit/surfaces/message.rb
Constant Summary collapse
- MAX_BLOCKS =
50- SUPPORTED_ELEMENTS =
[ Elements::Button, Elements::ChannelsSelect, Elements::Checkboxes, Elements::ConversationsSelect, Elements::DatePicker, Elements::DatetimePicker, Elements::ExternalSelect, Elements::Image, Elements::MultiChannelsSelect, Elements::MultiConversationsSelect, Elements::MultiExternalSelect, Elements::MultiStaticSelect, Elements::MultiUsersSelect, Elements::Overflow, Elements::PlainTextInput, Elements::RadioButtons, Elements::StaticSelect, Elements::TimePicker, Elements::UsersSelect, Elements::WorkflowButton ].freeze
Instance Method Summary collapse
-
#append(block) ⇒ Object
Overridden to return ‘self`, allowing chaining.
- #as_json ⇒ Object
- #image(alt_text:, image_url: nil, slack_file: nil, title: nil, emoji: nil, block_id: nil) ⇒ Object
-
#initialize(attributes = {}) ⇒ Message
constructor
A new instance of Message.
Methods inherited from Base
#==, fix, #fix_validation_errors, #fix_validation_errors!, fixes, inherited, inspect, #inspect, #pretty_print, #to_json
Constructor Details
#initialize(attributes = {}) ⇒ Message
Returns a new instance of Message.
56 57 58 59 60 61 |
# File 'lib/block_kit/surfaces/message.rb', line 56 def initialize(attributes = {}) attributes = attributes.with_indifferent_access attributes[:blocks] ||= [] super end |
Instance Method Details
#append(block) ⇒ Object
Overridden to return ‘self`, allowing chaining.
72 73 74 75 76 |
# File 'lib/block_kit/surfaces/message.rb', line 72 def append(block) blocks << block self end |
#as_json ⇒ Object
78 79 80 81 82 83 84 85 |
# File 'lib/block_kit/surfaces/message.rb', line 78 def as_json(*) super().except(:type).merge( text: text, blocks: blocks&.map(&:as_json), thread_ts: thread_ts, mrkdwn: mrkdwn ).compact end |
#image(alt_text:, image_url: nil, slack_file: nil, title: nil, emoji: nil, block_id: nil) ⇒ Object
63 64 65 66 67 68 69 |
# File 'lib/block_kit/surfaces/message.rb', line 63 def image(alt_text:, image_url: nil, slack_file: nil, title: nil, emoji: nil, block_id: nil) if (image_url.nil? && slack_file.nil?) || (image_url && slack_file) raise ArgumentError, "Must provide either image_url or slack_file, but not both." end append(Layout::Image.new(image_url: image_url, slack_file: slack_file, alt_text: alt_text, title: title, block_id: block_id, emoji: emoji)) end |