mirror of
https://github.com/jackmerrill/hampbot.git
synced 2025-02-24 03:27:51 -08:00
104 lines
2.0 KiB
Go
104 lines
2.0 KiB
Go
package embed
|
|
|
|
import (
|
|
"fmt"
|
|
"time"
|
|
|
|
"github.com/bwmarrin/discordgo"
|
|
)
|
|
|
|
type Embed struct {
|
|
*discordgo.MessageEmbed
|
|
}
|
|
|
|
func NewEmbed() *Embed {
|
|
return &Embed{&discordgo.MessageEmbed{}}
|
|
}
|
|
|
|
func (e *Embed) SetTitle(title string) *Embed {
|
|
e.MessageEmbed.Title = title
|
|
return e
|
|
}
|
|
|
|
func (e *Embed) SetDescription(description string) *Embed {
|
|
e.MessageEmbed.Description = description
|
|
return e
|
|
}
|
|
|
|
func (e *Embed) SetColor(color int) *Embed {
|
|
e.MessageEmbed.Color = color
|
|
return e
|
|
}
|
|
|
|
func (e *Embed) SetColorRGB(r, g, b int) *Embed {
|
|
return e.SetColor((r << 16) + (g << 8) + b)
|
|
}
|
|
|
|
func (e *Embed) SetColorHex(hex string) *Embed {
|
|
var color int
|
|
fmt.Sscanf(hex, "#%06x", &color)
|
|
return e.SetColor(color)
|
|
}
|
|
|
|
func (e *Embed) SetURL(url string) *Embed {
|
|
e.MessageEmbed.URL = url
|
|
return e
|
|
}
|
|
|
|
func (e *Embed) SetTimestamp(timestamp time.Time) *Embed {
|
|
e.MessageEmbed.Timestamp = timestamp.Format(time.RFC3339)
|
|
return e
|
|
}
|
|
|
|
func (e *Embed) SetFooter(text, iconURL string) *Embed {
|
|
e.MessageEmbed.Footer = &discordgo.MessageEmbedFooter{
|
|
Text: text,
|
|
IconURL: iconURL,
|
|
}
|
|
return e
|
|
}
|
|
|
|
func (e *Embed) SetImage(url string) *Embed {
|
|
e.MessageEmbed.Image = &discordgo.MessageEmbedImage{
|
|
URL: url,
|
|
}
|
|
return e
|
|
}
|
|
|
|
func (e *Embed) SetThumbnail(url string) *Embed {
|
|
e.MessageEmbed.Thumbnail = &discordgo.MessageEmbedThumbnail{
|
|
URL: url,
|
|
}
|
|
return e
|
|
}
|
|
|
|
func (e *Embed) SetAuthor(name, url, iconURL string) *Embed {
|
|
e.MessageEmbed.Author = &discordgo.MessageEmbedAuthor{
|
|
Name: name,
|
|
URL: url,
|
|
IconURL: iconURL,
|
|
}
|
|
return e
|
|
}
|
|
|
|
func (e *Embed) AddField(name, value string, inline bool) *Embed {
|
|
e.MessageEmbed.Fields = append(e.MessageEmbed.Fields, &discordgo.MessageEmbedField{
|
|
Name: name,
|
|
Value: value,
|
|
Inline: inline,
|
|
})
|
|
return e
|
|
}
|
|
|
|
func (e *Embed) AddFields(fields ...*discordgo.MessageEmbedField) *Embed {
|
|
e.MessageEmbed.Fields = append(e.MessageEmbed.Fields, fields...)
|
|
return e
|
|
}
|
|
|
|
func (e *Embed) AddFieldsFromMap(fields map[string]string, inline bool) *Embed {
|
|
for name, value := range fields {
|
|
e.AddField(name, value, inline)
|
|
}
|
|
return e
|
|
}
|