TerraOceanPlugin/GoBot/discord/modules/embed.go

88 lines
1.9 KiB
Go

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

package modules
import (
"github.com/bwmarrin/discordgo"
"TerraOceanBot/discord/config"
)
type embed struct {
*discordgo.MessageEmbed
}
func newEmbed() *embed {
return &embed{&discordgo.MessageEmbed{}}
}
func initNewEmbed(title, description string, colour int) *embed {
return newEmbed().SetTitle(title).SetDescription(description).SetColour(colour)
}
func initNewErrorEmbed(description string) *embed {
e := newEmbed()
e.Color = 0xE00000
e.Title = "发生错误An error has occurred!"
e.Description = description
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
}
func (e *embed) AddInlineField(name, value string) *embed {
e.Fields = append(e.Fields, &discordgo.MessageEmbedField{
Name: name,
Value: value,
Inline: true,
})
return e
}
func (e *embed) UpdateVoteStatus(isPositive bool) *embed {
if isPositive {
return e.SetColour(config.VotePassColour).SetTitle(config.VotePassTitle)
}
return e.SetColour(config.VoteRejectColour).SetTitle(config.VoteRejectTitle)
}
func (e *embed) Build() *discordgo.MessageEmbed {
return e.MessageEmbed
}
func (e *embed) Send(s *discordgo.Session, channelID string) (*discordgo.Message, error) {
return s.ChannelMessageSendEmbed(channelID, e.Build())
}
func (e *embed) SendPM(s *discordgo.Session, userID string) (*discordgo.Message, error) {
channel, err := s.UserChannelCreate(userID)
if err != nil {
auditError(s, "", err)
return nil, err
}
return e.Send(s, channel.ID)
}
func (e *embed) Edit(s *discordgo.Session, channelID, messageID string) {
s.ChannelMessageEditEmbed(channelID, messageID, e.Build())
}