Fancy replies using rich embeds on Discord side
Some checks failed
Development / golangci-lint (push) Has been cancelled
Development / test-build-upload (1.22.x, ubuntu-latest) (push) Has been cancelled

This commit is contained in:
2025-11-03 15:17:34 -08:00
parent 186d28858b
commit f73bee90ab
17 changed files with 1706 additions and 128 deletions

View File

@@ -42,6 +42,7 @@ type State struct {
TrackChannels bool
TrackThreads bool
TrackEmojis bool
TrackStickers bool
TrackMembers bool
TrackThreadMembers bool
TrackRoles bool
@@ -63,6 +64,7 @@ func NewState() *State {
TrackChannels: true,
TrackThreads: true,
TrackEmojis: true,
TrackStickers: true,
TrackMembers: true,
TrackThreadMembers: true,
TrackRoles: true,
@@ -175,8 +177,8 @@ func (s *State) GuildRemove(guild *Guild) error {
// Guild gets a guild by ID.
// Useful for querying if @me is in a guild:
// _, err := discordgo.Session.State.Guild(guildID)
// isInGuild := err == nil
// _, err := discordgo.Session.State.Guild(guildID)
// isInGuild := err == nil
func (s *State) Guild(guildID string) (*Guild, error) {
if s == nil {
return nil, ErrNilState
@@ -1050,12 +1052,28 @@ func (s *State) OnInterface(se *Session, i interface{}) (err error) {
defer s.Unlock()
guild.Emojis = t.Emojis
}
case *GuildStickersUpdate:
if s.TrackStickers {
var guild *Guild
guild, err = s.Guild(t.GuildID)
if err != nil {
return err
}
s.Lock()
defer s.Unlock()
guild.Stickers = t.Stickers
}
case *ChannelCreate:
if s.TrackChannels {
err = s.ChannelAdd(t.Channel)
}
case *ChannelUpdate:
if s.TrackChannels {
old, err := s.Channel(t.ID)
if err == nil {
oldCopy := *old
t.BeforeUpdate = &oldCopy
}
err = s.ChannelAdd(t.Channel)
}
case *ChannelDelete: