Class: Discordrb::Webhooks::Builder

Inherits:
Object
  • Object
show all
Defined in:
lib/discordrb/webhooks/builder.rb

Overview

A class that acts as a builder for a webhook message object.

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(content: '', username: nil, avatar_url: nil, tts: false, file: nil, embeds: [], allowed_mentions: nil) ⇒ 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 = embeds
  @allowed_mentions = allowed_mentions
end

Instance Attribute Details

#allowed_mentionsDiscordrb::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_urlString

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

#contentString

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

#embedsArray<Embed> (readonly)



72
73
74
# File 'lib/discordrb/webhooks/builder.rb', line 72

def embeds
  @embeds
end

#fileFile?



69
70
71
# File 'lib/discordrb/webhooks/builder.rb', line 69

def file
  @file
end

#ttstrue, 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

#usernameString

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.

Raises:

  • (ArgumentError)


47
48
49
50
51
# File 'lib/discordrb/webhooks/builder.rb', line 47

def <<(embed)
  raise ArgumentError, 'Embeds and files are mutually exclusive!' if @file

  @embeds << embed
end

#add_embed(embed = nil) {|embed| ... } ⇒ Embed

Convenience method to add an embed using a block-style builder pattern

Examples:

Add an embed to a message

builder.add_embed do |embed|
  embed.title = 'Testing'
  embed.image = Discordrb::Webhooks::EmbedImage.new(url: 'https://i.imgur.com/PcMltU7.jpg')
end

Yields:

  • (embed)


61
62
63
64
65
66
# File 'lib/discordrb/webhooks/builder.rb', line 61

def add_embed(embed = nil)
  embed ||= Embed.new
  yield(embed)
  self << embed
  embed
end

#to_json_hashHash



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_hashHash



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