Class: Discordrb::Webhooks::Builder
- Inherits:
-
Object
- Object
- Discordrb::Webhooks::Builder
- Defined in:
- lib/discordrb/webhooks/builder.rb
Overview
A class that acts as a builder for a webhook message object.
Instance Attribute Summary collapse
-
#allowed_mentions ⇒ Discordrb::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.
8 9 10 11 12 13 14 15 16 |
# File 'lib/discordrb/webhooks/builder.rb', line 8 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 ⇒ Discordrb::AllowedMentions, Hash
Returns Mentions that are allowed to ping in this message.
76 77 78 |
# File 'lib/discordrb/webhooks/builder.rb', line 76 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.
30 31 32 |
# File 'lib/discordrb/webhooks/builder.rb', line 30 def avatar_url @avatar_url end |
#content ⇒ String
The content of the message. May be 2000 characters long at most.
20 21 22 |
# File 'lib/discordrb/webhooks/builder.rb', line 20 def content @content end |
#embeds ⇒ Array<Embed> (readonly)
Returns the embeds attached to this message.
72 73 74 |
# File 'lib/discordrb/webhooks/builder.rb', line 72 def @embeds end |
#file ⇒ File?
Returns the file attached to this message.
69 70 71 |
# File 'lib/discordrb/webhooks/builder.rb', line 69 def file @file end |
#tts ⇒ true, false
Whether this message should use TTS or not. By default, it doesn't.
34 35 36 |
# File 'lib/discordrb/webhooks/builder.rb', line 34 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.
25 26 27 |
# File 'lib/discordrb/webhooks/builder.rb', line 25 def username @username end |
Instance Method Details
#<<(embed) ⇒ Object
Adds an embed to this message.
47 48 49 50 51 |
# File 'lib/discordrb/webhooks/builder.rb', line 47 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
61 62 63 64 65 66 |
# File 'lib/discordrb/webhooks/builder.rb', line 61 def ( = nil) ||= Embed.new yield() self << end |
#to_json_hash ⇒ Hash
Returns a hash representation of the created message, for JSON format.
79 80 81 82 83 84 85 86 87 88 |
# File 'lib/discordrb/webhooks/builder.rb', line 79 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.
91 92 93 94 95 96 97 98 99 100 |
# File 'lib/discordrb/webhooks/builder.rb', line 91 def to_multipart_hash { content: @content, username: @username, avatar_url: @avatar_url, tts: @tts, file: @file, allowed_mentions: @allowed_mentions&.to_hash } end |