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"
|
guildScheduledEventUpdateEventType = "GUILD_SCHEDULED_EVENT_UPDATE"
|
||||||
guildScheduledEventUserAddEventType = "GUILD_SCHEDULED_EVENT_USER_ADD"
|
guildScheduledEventUserAddEventType = "GUILD_SCHEDULED_EVENT_USER_ADD"
|
||||||
guildScheduledEventUserRemoveEventType = "GUILD_SCHEDULED_EVENT_USER_REMOVE"
|
guildScheduledEventUserRemoveEventType = "GUILD_SCHEDULED_EVENT_USER_REMOVE"
|
||||||
|
guildStickersUpdateEventType = "GUILD_STICKERS_UPDATE"
|
||||||
guildUpdateEventType = "GUILD_UPDATE"
|
guildUpdateEventType = "GUILD_UPDATE"
|
||||||
integrationCreateEventType = "INTEGRATION_CREATE"
|
integrationCreateEventType = "INTEGRATION_CREATE"
|
||||||
integrationDeleteEventType = "INTEGRATION_DELETE"
|
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.
|
// guildUpdateEventHandler is an event handler for GuildUpdate events.
|
||||||
type guildUpdateEventHandler func(*Session, *GuildUpdate)
|
type guildUpdateEventHandler func(*Session, *GuildUpdate)
|
||||||
|
|
||||||
@@ -1573,6 +1594,8 @@ func handlerForInterface(handler interface{}) EventHandler {
|
|||||||
return guildScheduledEventUserAddEventHandler(v)
|
return guildScheduledEventUserAddEventHandler(v)
|
||||||
case func(*Session, *GuildScheduledEventUserRemove):
|
case func(*Session, *GuildScheduledEventUserRemove):
|
||||||
return guildScheduledEventUserRemoveEventHandler(v)
|
return guildScheduledEventUserRemoveEventHandler(v)
|
||||||
|
case func(*Session, *GuildStickersUpdate):
|
||||||
|
return guildStickersUpdateEventHandler(v)
|
||||||
case func(*Session, *GuildUpdate):
|
case func(*Session, *GuildUpdate):
|
||||||
return guildUpdateEventHandler(v)
|
return guildUpdateEventHandler(v)
|
||||||
case func(*Session, *IntegrationCreate):
|
case func(*Session, *IntegrationCreate):
|
||||||
@@ -1686,6 +1709,7 @@ func init() {
|
|||||||
registerInterfaceProvider(guildScheduledEventUpdateEventHandler(nil))
|
registerInterfaceProvider(guildScheduledEventUpdateEventHandler(nil))
|
||||||
registerInterfaceProvider(guildScheduledEventUserAddEventHandler(nil))
|
registerInterfaceProvider(guildScheduledEventUserAddEventHandler(nil))
|
||||||
registerInterfaceProvider(guildScheduledEventUserRemoveEventHandler(nil))
|
registerInterfaceProvider(guildScheduledEventUserRemoveEventHandler(nil))
|
||||||
|
registerInterfaceProvider(guildStickersUpdateEventHandler(nil))
|
||||||
registerInterfaceProvider(guildUpdateEventHandler(nil))
|
registerInterfaceProvider(guildUpdateEventHandler(nil))
|
||||||
registerInterfaceProvider(integrationCreateEventHandler(nil))
|
registerInterfaceProvider(integrationCreateEventHandler(nil))
|
||||||
registerInterfaceProvider(integrationDeleteEventHandler(nil))
|
registerInterfaceProvider(integrationDeleteEventHandler(nil))
|
||||||
|
|||||||
@@ -181,6 +181,12 @@ type GuildEmojisUpdate struct {
|
|||||||
Emojis []*Emoji `json:"emojis"`
|
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.
|
// A GuildMembersChunk is the data for a GuildMembersChunk event.
|
||||||
type GuildMembersChunk struct {
|
type GuildMembersChunk struct {
|
||||||
GuildID string `json:"guild_id"`
|
GuildID string `json:"guild_id"`
|
||||||
|
|||||||
17
state.go
17
state.go
@@ -42,6 +42,7 @@ type State struct {
|
|||||||
TrackChannels bool
|
TrackChannels bool
|
||||||
TrackThreads bool
|
TrackThreads bool
|
||||||
TrackEmojis bool
|
TrackEmojis bool
|
||||||
|
TrackStickers bool
|
||||||
TrackMembers bool
|
TrackMembers bool
|
||||||
TrackThreadMembers bool
|
TrackThreadMembers bool
|
||||||
TrackRoles bool
|
TrackRoles bool
|
||||||
@@ -63,6 +64,7 @@ func NewState() *State {
|
|||||||
TrackChannels: true,
|
TrackChannels: true,
|
||||||
TrackThreads: true,
|
TrackThreads: true,
|
||||||
TrackEmojis: true,
|
TrackEmojis: true,
|
||||||
|
TrackStickers: true,
|
||||||
TrackMembers: true,
|
TrackMembers: true,
|
||||||
TrackThreadMembers: true,
|
TrackThreadMembers: true,
|
||||||
TrackRoles: true,
|
TrackRoles: true,
|
||||||
@@ -175,8 +177,8 @@ func (s *State) GuildRemove(guild *Guild) error {
|
|||||||
|
|
||||||
// Guild gets a guild by ID.
|
// Guild gets a guild by ID.
|
||||||
// Useful for querying if @me is in a guild:
|
// Useful for querying if @me is in a guild:
|
||||||
// _, err := discordgo.Session.State.Guild(guildID)
|
// _, err := discordgo.Session.State.Guild(guildID)
|
||||||
// isInGuild := err == nil
|
// isInGuild := err == nil
|
||||||
func (s *State) Guild(guildID string) (*Guild, error) {
|
func (s *State) Guild(guildID string) (*Guild, error) {
|
||||||
if s == nil {
|
if s == nil {
|
||||||
return nil, ErrNilState
|
return nil, ErrNilState
|
||||||
@@ -1050,6 +1052,17 @@ func (s *State) OnInterface(se *Session, i interface{}) (err error) {
|
|||||||
defer s.Unlock()
|
defer s.Unlock()
|
||||||
guild.Emojis = t.Emojis
|
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:
|
case *ChannelCreate:
|
||||||
if s.TrackChannels {
|
if s.TrackChannels {
|
||||||
err = s.ChannelAdd(t.Channel)
|
err = s.ChannelAdd(t.Channel)
|
||||||
|
|||||||
Reference in New Issue
Block a user