mirror of
https://github.com/bwmarrin/discordgo.git
synced 2025-12-23 23:17:45 -05:00
feat: implement GuildStickersUpdate event (#1614)
--------- Co-authored-by: Fedor Lapshin <fe.lap.prog@gmail.com>
This commit is contained in:
@@ -41,6 +41,7 @@ const (
|
||||
guildScheduledEventUpdateEventType = "GUILD_SCHEDULED_EVENT_UPDATE"
|
||||
guildScheduledEventUserAddEventType = "GUILD_SCHEDULED_EVENT_USER_ADD"
|
||||
guildScheduledEventUserRemoveEventType = "GUILD_SCHEDULED_EVENT_USER_REMOVE"
|
||||
guildStickersUpdateEventType = "GUILD_STICKERS_UPDATE"
|
||||
guildUpdateEventType = "GUILD_UPDATE"
|
||||
integrationCreateEventType = "INTEGRATION_CREATE"
|
||||
integrationDeleteEventType = "INTEGRATION_DELETE"
|
||||
@@ -746,6 +747,26 @@ func (eh guildScheduledEventUserRemoveEventHandler) Handle(s *Session, i interfa
|
||||
}
|
||||
}
|
||||
|
||||
// guildStickersUpdateEventHandler is an event handler for GuildStickersUpdate events.
|
||||
type guildStickersUpdateEventHandler func(*Session, *GuildStickersUpdate)
|
||||
|
||||
// Type returns the event type for GuildStickersUpdate events.
|
||||
func (eh guildStickersUpdateEventHandler) Type() string {
|
||||
return guildStickersUpdateEventType
|
||||
}
|
||||
|
||||
// New returns a new instance of GuildStickersUpdate.
|
||||
func (eh guildStickersUpdateEventHandler) New() interface{} {
|
||||
return &GuildStickersUpdate{}
|
||||
}
|
||||
|
||||
// Handle is the handler for GuildStickersUpdate events.
|
||||
func (eh guildStickersUpdateEventHandler) Handle(s *Session, i interface{}) {
|
||||
if t, ok := i.(*GuildStickersUpdate); ok {
|
||||
eh(s, t)
|
||||
}
|
||||
}
|
||||
|
||||
// guildUpdateEventHandler is an event handler for GuildUpdate events.
|
||||
type guildUpdateEventHandler func(*Session, *GuildUpdate)
|
||||
|
||||
@@ -1573,6 +1594,8 @@ func handlerForInterface(handler interface{}) EventHandler {
|
||||
return guildScheduledEventUserAddEventHandler(v)
|
||||
case func(*Session, *GuildScheduledEventUserRemove):
|
||||
return guildScheduledEventUserRemoveEventHandler(v)
|
||||
case func(*Session, *GuildStickersUpdate):
|
||||
return guildStickersUpdateEventHandler(v)
|
||||
case func(*Session, *GuildUpdate):
|
||||
return guildUpdateEventHandler(v)
|
||||
case func(*Session, *IntegrationCreate):
|
||||
@@ -1686,6 +1709,7 @@ func init() {
|
||||
registerInterfaceProvider(guildScheduledEventUpdateEventHandler(nil))
|
||||
registerInterfaceProvider(guildScheduledEventUserAddEventHandler(nil))
|
||||
registerInterfaceProvider(guildScheduledEventUserRemoveEventHandler(nil))
|
||||
registerInterfaceProvider(guildStickersUpdateEventHandler(nil))
|
||||
registerInterfaceProvider(guildUpdateEventHandler(nil))
|
||||
registerInterfaceProvider(integrationCreateEventHandler(nil))
|
||||
registerInterfaceProvider(integrationDeleteEventHandler(nil))
|
||||
|
||||
@@ -181,6 +181,12 @@ type GuildEmojisUpdate struct {
|
||||
Emojis []*Emoji `json:"emojis"`
|
||||
}
|
||||
|
||||
// A GuildStickersUpdate is the data for a GuildStickersUpdate event.
|
||||
type GuildStickersUpdate struct {
|
||||
GuildID string `json:"guild_id"`
|
||||
Stickers []*Sticker `json:"stickers"`
|
||||
}
|
||||
|
||||
// A GuildMembersChunk is the data for a GuildMembersChunk event.
|
||||
type GuildMembersChunk struct {
|
||||
GuildID string `json:"guild_id"`
|
||||
|
||||
17
state.go
17
state.go
@@ -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,6 +1052,17 @@ 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)
|
||||
|
||||
Reference in New Issue
Block a user