Class: Discorb::Embed

Inherits:
Object
  • Object
show all
Defined in:
lib/discorb/embed.rb

Overview

Represents an embed of discord.

Defined Under Namespace

Classes: Author, Field, Footer, Image, Provider, Thumbnail, Video

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(title = nil, description = nil, color: nil, url: nil, timestamp: nil, author: nil, fields: nil, footer: nil, image: nil, thumbnail: nil) -> Embed

Initialize a new Embed object.

Parameters:

  • title (String) (defaults to: nil)

    The title of embed.

  • description (String) (defaults to: nil)

    The description of embed.

  • color (Discorb::Color, Integer) (defaults to: nil)

    The color of embed.

  • url (String) (defaults to: nil)

    The url of embed.

  • timestamp (Time) (defaults to: nil)

    The timestamp of embed.

  • author (Discorb::Embed::Author) (defaults to: nil)

    The author field of embed.

  • fields (Array<Discorb::Embed::Field>) (defaults to: nil)

    The fields of embed.

  • footer (Discorb::Embed::Footer) (defaults to: nil)

    The footer of embed.

  • image (Discorb::Embed::Image, String) (defaults to: nil)

    The image of embed.

  • thumbnail (Discorb::Embed::Thumbnail, String) (defaults to: nil)

    The thumbnail of embed.



47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
# File 'lib/discorb/embed.rb', line 47

def initialize(
  title = nil,
  description = nil,
  color: nil,
  url: nil,
  timestamp: nil,
  author: nil,
  fields: nil,
  footer: nil,
  image: nil,
  thumbnail: nil
)
  @title = title
  @description = description
  @url = url
  @timestamp = timestamp
  @color = color && (color.is_a?(Color) ? color : Color.new(color))
  @author = author
  @fields = fields || []
  @footer = footer
  @image = image && (image.is_a?(String) ? Image.new(image) : image)
  @thumbnail = thumbnail && (thumbnail.is_a?(String) ? Thumbnail.new(thumbnail) : thumbnail)
  @type = :rich
end

Instance Attribute Details

#author -> Discorb::Embed::Author?

Returns The author of embed.

Returns:



19
20
21
# File 'lib/discorb/embed.rb', line 19

def author
  @author
end

#color -> Discorb::Color?

Returns The color of embed.

Returns:



17
18
19
# File 'lib/discorb/embed.rb', line 17

def color
  @color
end

#description -> String?

Returns The description of embed.

Returns:

  • (String, nil)

    The description of embed.



11
12
13
# File 'lib/discorb/embed.rb', line 11

def description
  @description
end

#fields -> Array<Discorb::Embed::Field>

Returns The fields of embed.

Returns:



21
22
23
# File 'lib/discorb/embed.rb', line 21

def fields
  @fields
end

Returns The footer of embed.

Returns:



23
24
25
# File 'lib/discorb/embed.rb', line 23

def footer
  @footer
end

#image -> Discorb::Embed::Image

Returns The image of embed.

Returns:



28
29
30
# File 'lib/discorb/embed.rb', line 28

def image
  @image
end

#thumbnail -> Discorb::Embed::Thumbnail

Returns The thumbnail of embed.

Returns:



28
29
30
# File 'lib/discorb/embed.rb', line 28

def thumbnail
  @thumbnail
end

#timestamp -> Time?

Returns The timestamp of embed.

Returns:

  • (Time, nil)

    The timestamp of embed.



15
16
17
# File 'lib/discorb/embed.rb', line 15

def timestamp
  @timestamp
end

#title -> String?

Returns The title of embed.

Returns:

  • (String, nil)

    The title of embed.



9
10
11
# File 'lib/discorb/embed.rb', line 9

def title
  @title
end

#type -> Symbol (readonly)

Returns The type of embed.

Returns:

  • (Symbol)

    The type of embed.



25
26
27
# File 'lib/discorb/embed.rb', line 25

def type
  @type
end

#url -> String?

Returns The url of embed.

Returns:

  • (String, nil)

    The url of embed.



13
14
15
# File 'lib/discorb/embed.rb', line 13

def url
  @url
end

Class Method Details

.from_hash(data) -> Object



131
132
133
134
135
# File 'lib/discorb/embed.rb', line 131

def self.from_hash(data)
  inst = allocate
  inst.initialize_hash(data)
  inst
end

Instance Method Details

#inspect -> Object



105
106
107
# File 'lib/discorb/embed.rb', line 105

def inspect
  "#<#{self.class} \"#{@title}\">"
end

#to_hash -> Hash

Convert embed to hash.

Returns:

  • (Hash)

    Converted embed.

See Also:



115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
# File 'lib/discorb/embed.rb', line 115

def to_hash
  # @type var ret: Hash[untyped, untyped]
  ret = { type: "rich" }
  ret[:title] = @title if @title
  ret[:description] = @description if @description
  ret[:url] = @url if @url
  ret[:timestamp] = @timestamp&.iso8601 if @timestamp
  ret[:color] = @color&.to_i if @color
  ret[:footer] = @footer&.to_hash if @footer
  ret[:image] = @image&.to_hash if @image
  ret[:thumbnail] = @thumbnail&.to_hash if @thumbnail
  ret[:author] = @author&.to_hash if @author
  ret[:fields] = @fields&.map { |f| f.to_hash } if @fields.any?
  ret
end