Class: Rubycord::Webhooks::Builder
- Inherits:
-
Object
- Object
- Rubycord::Webhooks::Builder
- Defined in:
- lib/rubycord/webhooks/builder.rb
Overview
A class that acts as a builder for a webhook message object.
Instance Attribute Summary collapse
-
#allowed_mentions ⇒ Rubycord::AllowedMentions, Hash
Mentions that are allowed to ping in this message.
-
#avatar_url ⇒ String
The URL of an image file to be used as an avatar.
-
#content ⇒ String
The content of the message.
-
#embeds ⇒ Array<Embed>
readonly
The embeds attached to this message.
-
#file ⇒ File?
The file attached to this message.
-
#tts ⇒ true, false
Whether this message should use TTS or not.
-
#username ⇒ String
The username the webhook will display as.
Instance Method Summary collapse
-
#<<(embed) ⇒ Object
Adds an embed to this message.
-
#add_embed(embed = nil) {|embed| ... } ⇒ Embed
Convenience method to add an embed using a block-style builder pattern.
-
#initialize(content: "", username: nil, avatar_url: nil, tts: false, file: nil, embeds: [], allowed_mentions: nil) ⇒ Builder
constructor
A new instance of Builder.
-
#to_json_hash ⇒ Hash
A hash representation of the created message, for JSON format.
-
#to_multipart_hash ⇒ Hash
A hash representation of the created message, for multipart format.
Constructor Details
#initialize(content: "", username: nil, avatar_url: nil, tts: false, file: nil, embeds: [], allowed_mentions: nil) ⇒ Builder
Returns a new instance of Builder.
6 7 8 9 10 11 12 13 14 |
# File 'lib/rubycord/webhooks/builder.rb', line 6 def initialize(content: "", username: nil, avatar_url: nil, tts: false, file: nil, embeds: [], allowed_mentions: nil) @content = content @username = username @avatar_url = avatar_url @tts = tts @file = file @embeds = @allowed_mentions = allowed_mentions end |
Instance Attribute Details
#allowed_mentions ⇒ Rubycord::AllowedMentions, Hash
Returns Mentions that are allowed to ping in this message.
74 75 76 |
# File 'lib/rubycord/webhooks/builder.rb', line 74 def allowed_mentions @allowed_mentions end |
#avatar_url ⇒ String
The URL of an image file to be used as an avatar. If this is not set, the default avatar from the webhook’s settings will be used instead.
28 29 30 |
# File 'lib/rubycord/webhooks/builder.rb', line 28 def avatar_url @avatar_url end |
#content ⇒ String
The content of the message. May be 2000 characters long at most.
18 19 20 |
# File 'lib/rubycord/webhooks/builder.rb', line 18 def content @content end |
#embeds ⇒ Array<Embed> (readonly)
Returns the embeds attached to this message.
70 71 72 |
# File 'lib/rubycord/webhooks/builder.rb', line 70 def @embeds end |
#file ⇒ File?
Returns the file attached to this message.
67 68 69 |
# File 'lib/rubycord/webhooks/builder.rb', line 67 def file @file end |
#tts ⇒ true, false
Whether this message should use TTS or not. By default, it doesn’t.
32 33 34 |
# File 'lib/rubycord/webhooks/builder.rb', line 32 def tts @tts end |
#username ⇒ String
The username the webhook will display as. If this is not set, the default username set in the webhook’s settings will be used instead.
23 24 25 |
# File 'lib/rubycord/webhooks/builder.rb', line 23 def username @username end |
Instance Method Details
#<<(embed) ⇒ Object
Adds an embed to this message.
45 46 47 48 49 |
# File 'lib/rubycord/webhooks/builder.rb', line 45 def <<() raise ArgumentError, "Embeds and files are mutually exclusive!" if @file @embeds << end |
#add_embed(embed = nil) {|embed| ... } ⇒ Embed
Convenience method to add an embed using a block-style builder pattern
59 60 61 62 63 64 |
# File 'lib/rubycord/webhooks/builder.rb', line 59 def ( = nil) ||= Embed.new yield() self << end |
#to_json_hash ⇒ Hash
Returns a hash representation of the created message, for JSON format.
77 78 79 80 81 82 83 84 85 86 |
# File 'lib/rubycord/webhooks/builder.rb', line 77 def to_json_hash { content: @content, username: @username, avatar_url: @avatar_url, tts: @tts, embeds: @embeds.map(&:to_hash), allowed_mentions: @allowed_mentions&.to_hash } end |
#to_multipart_hash ⇒ Hash
Returns a hash representation of the created message, for multipart format.
89 90 91 92 93 94 95 96 97 98 |
# File 'lib/rubycord/webhooks/builder.rb', line 89 def to_multipart_hash { content: @content, username: @username, avatar_url: @avatar_url, tts: @tts, file: @file, allowed_mentions: @allowed_mentions&.to_hash } end |