Class: Discorb::Embed
- Inherits:
-
Object
- Object
- Discorb::Embed
- 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
-
#author -> Discorb::Embed::Author?
The author of embed.
-
#color -> Discorb::Color?
The color of embed.
-
#description -> String?
The description of embed.
-
#fields -> Array<Discorb::Embed::Field>
The fields of embed.
-
#footer -> Discorb::Embed::Footer?
The footer of embed.
-
#image -> Discorb::Embed::Image
The image of embed.
-
#thumbnail -> Discorb::Embed::Thumbnail
The thumbnail of embed.
-
#timestamp -> Time?
The timestamp of embed.
-
#title -> String?
The title of embed.
-
#type -> Symbol
readonly
The type of embed.
-
#url -> String?
The url of embed.
Instance Method Summary collapse
-
#initialize(title = nil, description = nil, color: nil, url: nil, timestamp: nil, author: nil, fields: nil, footer: nil, image: nil, thumbnail: nil, data: nil) -> Embed
constructor
Initialize a new Embed object.
-
#to_hash -> Hash
Convert embed to hash.
Constructor Details
#initialize(title = nil, description = nil, color: nil, url: nil, timestamp: nil, author: nil, fields: nil, footer: nil, image: nil, thumbnail: nil, data: nil) -> Embed
Initialize a new Embed object.
47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 |
# 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, data: nil) if data.nil? @title = title @description = description @url = url @timestamp = @color = color @author = @fields = fields || [] @footer = @image = image && (image.is_a?(String) ? Image.new(image) : image) @thumbnail = thumbnail && (thumbnail.is_a?(String) ? Thumbnail.new(thumbnail) : thumbnail) @type = "rich" else @title = data[:title] @description = data[:description] @url = data[:url] @timestamp = data[:timestamp] && Time.iso8601(data[:timestamp]) @type = data[:type] @color = data[:color] && Color.new(data[:color]) @footer = data[:footer] && Footer.new(data[:footer][:text], icon: data[:footer][:icon_url]) @author = if data[:author] Author.new(data[:author][:name], icon: data[:author][:icon_url], url: data[:author][:url]) end @thumbnail = data[:thumbnail] && Thumbnail.new(data[:thumbnail]) @image = data[:image] && Image.new(data[:image]) @video = data[:video] && Video.new(data[:video]) @provider = data[:provider] && Provider.new(data[:provider]) @fields = data[:fields] ? data[:fields].map { |f| Field.new(f[:name], f[:value], inline: f[:inline]) } : [] end end |
Instance Attribute Details
#author -> Discorb::Embed::Author?
Returns The author of embed.
19 20 21 |
# File 'lib/discorb/embed.rb', line 19 def @author end |
#color -> Discorb::Color?
Returns The color of embed.
17 18 19 |
# File 'lib/discorb/embed.rb', line 17 def color @color end |
#description -> String?
Returns 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.
21 22 23 |
# File 'lib/discorb/embed.rb', line 21 def fields @fields end |
#footer -> Discorb::Embed::Footer?
Returns The footer of embed.
23 24 25 |
# File 'lib/discorb/embed.rb', line 23 def @footer end |
#image -> Discorb::Embed::Image
Returns The image of embed.
28 29 30 |
# File 'lib/discorb/embed.rb', line 28 def image @image end |
#thumbnail -> Discorb::Embed::Thumbnail
Returns The thumbnail of embed.
28 29 30 |
# File 'lib/discorb/embed.rb', line 28 def thumbnail @thumbnail end |
#timestamp -> Time?
Returns The timestamp of embed.
15 16 17 |
# File 'lib/discorb/embed.rb', line 15 def @timestamp end |
#title -> String?
Returns 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.
25 26 27 |
# File 'lib/discorb/embed.rb', line 25 def type @type end |
#url -> String?
Returns The url of embed.
13 14 15 |
# File 'lib/discorb/embed.rb', line 13 def url @url end |
Instance Method Details
#to_hash -> Hash
Convert embed to hash.
95 96 97 98 99 100 101 102 103 104 105 106 107 108 |
# File 'lib/discorb/embed.rb', line 95 def to_hash 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 |