diff --git a/builder.go b/builder.go new file mode 100644 index 0000000..9d9eeee --- /dev/null +++ b/builder.go @@ -0,0 +1,78 @@ +package discordgo + +import "time" + +// MessageEmbedBuilder for make MessageEmbed struct. +type MessageEmbedBuilder struct { + *MessageEmbed +} + +// NewMessageEmbedBuilder creates a new MessageEmbedBuilder struct. +func NewMessageEmbedBuilder() *MessageEmbedBuilder { + return &MessageEmbedBuilder{} +} + +// SetTitle sets title for MessageEmbed. +func (b *MessageEmbedBuilder) SetTitle(title string) *MessageEmbedBuilder { + b.MessageEmbed.Title = title + return b +} + +// SetDescription sets description for MessageEmbed. +func (b *MessageEmbedBuilder) SetDescription(desc string) *MessageEmbedBuilder { + b.MessageEmbed.Description = desc + return b +} + +// SetColor sets color for MessageEmbed. +func (b *MessageEmbedBuilder) SetColor(color int) *MessageEmbedBuilder { + b.MessageEmbed.Color = color + return b +} + +// SetThumbnail sets thumbnail for MessageEmbed. +func (b *MessageEmbedBuilder) SetThumbnail(url string) *MessageEmbedBuilder { + b.MessageEmbed.Thumbnail = &MessageEmbedThumbnail{URL: url} + return b +} + +// SetImage sets image for MessageEmbed. +func (b *MessageEmbedBuilder) SetImage(url string) *MessageEmbedBuilder { + b.MessageEmbed.Image = &MessageEmbedImage{URL: url} + return b +} + +// SetTimestamp sets timestamp for MessageEmbed. +func (b *MessageEmbedBuilder) SetTimestamp(times time.Time) *MessageEmbedBuilder { + b.MessageEmbed.Timestamp = times.Format(time.RFC3339) + return b +} + +// SetFooter sets footer for MessageEmbed. +func (b *MessageEmbedBuilder) SetFooter(footer MessageEmbedFooter) *MessageEmbedBuilder { + b.MessageEmbed.Footer = &footer + return b +} + +// AddFields adds fields for MessageEmbed. +func (b *MessageEmbedBuilder) AddFields(fields ...*MessageEmbedField) *MessageEmbedBuilder { + b.MessageEmbed.Fields = fields + return b +} + +// SetAuthor sets author for MessageEmbed. +func (b *MessageEmbedBuilder) SetAuthor(author MessageEmbedAuthor) *MessageEmbedBuilder { + b.MessageEmbed.Author = &author + return b +} + +// SetURL sets url for MessageEmbed. +func (b *MessageEmbedBuilder) SetURL(url string) *MessageEmbedBuilder { + b.MessageEmbed.URL = url + return b +} + +// Build to MessageEmbed. +func (b *MessageEmbedBuilder) Build() *MessageEmbed { + return b.MessageEmbed +} diff --git a/message.go b/message.go index faaee0b..9054144 100644 --- a/message.go +++ b/message.go @@ -431,81 +431,6 @@ type MessageEmbed struct { Fields []*MessageEmbedField `json:"fields,omitempty"` } -// MessageEmbedBuilder for make MessageEmbed struct. -type MessageEmbedBuilder struct { - *MessageEmbed -} - -// NewMessageEmbedBuilder creates a new MessageEmbedBuilder struct. -func NewMessageEmbedBuilder() *MessageEmbedBuilder { - return &MessageEmbedBuilder{} -} - -// SetTitle sets title for MessageEmbed. -func (b *MessageEmbedBuilder) SetTitle(title string) *MessageEmbedBuilder { - b.MessageEmbed.Title = title - return b -} - -// SetDescription sets description for MessageEmbed. -func (b *MessageEmbedBuilder) SetDescription(desc string) *MessageEmbedBuilder { - b.MessageEmbed.Description = desc - return b -} - -// SetColor sets color for MessageEmbed. -func (b *MessageEmbedBuilder) SetColor(color int) *MessageEmbedBuilder { - b.MessageEmbed.Color = color - return b -} - -// SetThumbnail sets thumbnail for MessageEmbed. -func (b *MessageEmbedBuilder) SetThumbnail(url string) *MessageEmbedBuilder { - b.MessageEmbed.Thumbnail = &MessageEmbedThumbnail{URL: url} - return b -} - -// SetImage sets image for MessageEmbed. -func (b *MessageEmbedBuilder) SetImage(url string) *MessageEmbedBuilder { - b.MessageEmbed.Image = &MessageEmbedImage{URL: url} - return b -} - -// SetTimestamp sets timestamp for MessageEmbed. -func (b *MessageEmbedBuilder) SetTimestamp(times time.Time) *MessageEmbedBuilder { - b.MessageEmbed.Timestamp = times.Format(time.RFC3339) - return b -} - -// SetFooter sets footer for MessageEmbed. -func (b *MessageEmbedBuilder) SetFooter(footer MessageEmbedFooter) *MessageEmbedBuilder { - b.MessageEmbed.Footer = &footer - return b -} - -// AddFields adds fields for MessageEmbed. -func (b *MessageEmbedBuilder) AddFields(fields ...*MessageEmbedField) *MessageEmbedBuilder { - b.MessageEmbed.Fields = fields - return b -} - -// SetAuthor sets author for MessageEmbed. -func (b *MessageEmbedBuilder) SetAuthor(author MessageEmbedAuthor) *MessageEmbedBuilder { - b.MessageEmbed.Author = &author - return b -} - -// SetURL sets url for MessageEmbed. -func (b *MessageEmbedBuilder) SetURL(url string) *MessageEmbedBuilder { - b.MessageEmbed.URL = url - return b -} - -// Build to MessageEmbed. -func (b *MessageEmbedBuilder) Build() *MessageEmbed { - return b.MessageEmbed -} - // EmbedType is the type of embed // https://discord.com/developers/docs/resources/channel#embed-object-embed-types type EmbedType string