TerraOceanPlugin/GoBot/discord/modules/embed.go

73 lines
1.5 KiB
Go

2019-10-12 09:45:43 +07:00
package modules
2019-10-10 10:51:53 +07:00
import "github.com/bwmarrin/discordgo"
type embed struct {
*discordgo.MessageEmbed
}
func newEmbed() *embed {
return &embed{&discordgo.MessageEmbed{}}
}
2019-10-12 11:29:33 +07:00
func initNewEmbed(title, description string, colour int) *embed {
return newEmbed().SetTitle(title).SetDescription(description).SetColour(colour)
}
func initNewErrorEmbed(description string) *embed {
e := newEmbed()
2019-10-10 10:51:53 +07:00
e.Color = 0xE00000
e.Title = "发生错误An error has occurred!"
2019-10-12 11:29:33 +07:00
e.Description = description
2019-10-10 10:51:53 +07:00
return e
}
func (e *embed) SetTitle(title string) *embed {
e.Title = title
return e
}
func (e *embed) SetColour(colour int) *embed {
e.Color = colour
return e
}
func (e *embed) SetDescription(description string) *embed {
e.Description = description
return e
}
func (e *embed) AddField(name, value string) *embed {
e.Fields = append(e.Fields, &discordgo.MessageEmbedField{
Name: name,
Value: value,
})
return e
}
2019-10-12 11:29:33 +07:00
func (e *embed) AddInlineField(name, value string) *embed {
e.Fields = append(e.Fields, &discordgo.MessageEmbedField{
Name: name,
Value: value,
Inline: true,
})
return e
}
2019-10-10 10:51:53 +07:00
func (e *embed) Build() *discordgo.MessageEmbed {
return e.MessageEmbed
}
2019-10-12 11:29:33 +07:00
func (e *embed) Send(s *discordgo.Session, channelID string) {
s.ChannelMessageSendEmbed(channelID, e.Build())
}
2019-10-12 13:49:41 +07:00
func (e *embed) SendPM(s *discordgo.Session, userID string) {
channel, err := s.UserChannelCreate(userID)
if err != nil {
auditError(s, "", err)
return
}
e.Send(s, channel.ID)
}