feat: add SubscriptionDelete event (#1607)

This commit is contained in:
Fedor Lapshin 2025-03-17 16:07:22 +03:00 committed by GitHub
parent 7f344fbe5e
commit 1270b0f9cf
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 78 additions and 48 deletions

View file

@ -62,11 +62,12 @@ const (
rateLimitEventType = "__RATE_LIMIT__"
readyEventType = "READY"
resumedEventType = "RESUMED"
subscriptionCreateEventType = "SUBSCRIPTION_CREATE"
subscriptionUpdateEventType = "SUBSCRIPTION_UPDATE"
stageInstanceEventCreateEventType = "STAGE_INSTANCE_EVENT_CREATE"
stageInstanceEventDeleteEventType = "STAGE_INSTANCE_EVENT_DELETE"
stageInstanceEventUpdateEventType = "STAGE_INSTANCE_EVENT_UPDATE"
subscriptionCreateEventType = "SUBSCRIPTION_CREATE"
subscriptionDeleteEventType = "SUBSCRIPTION_DELETE"
subscriptionUpdateEventType = "SUBSCRIPTION_UPDATE"
threadCreateEventType = "THREAD_CREATE"
threadDeleteEventType = "THREAD_DELETE"
threadListSyncEventType = "THREAD_LIST_SYNC"
@ -1160,46 +1161,6 @@ func (eh resumedEventHandler) Handle(s *Session, i interface{}) {
}
}
// subscriptionCreateEventHandler is an event handler for SubscriptionCreate events.
type subscriptionCreateEventHandler func(*Session, *SubscriptionCreate)
// Type returns the event type for SubscriptionCreate events.
func (eh subscriptionCreateEventHandler) Type() string {
return subscriptionCreateEventType
}
// New returns a new instance of SubscriptionCreate.
func (eh subscriptionCreateEventHandler) New() interface{} {
return &SubscriptionCreate{}
}
// Handle is the handler for SubscriptionCreate events.
func (eh subscriptionCreateEventHandler) Handle(s *Session, i interface{}) {
if t, ok := i.(*SubscriptionCreate); ok {
eh(s, t)
}
}
// subscriptionUpdateEventHandler is an event handler for SubscriptionUpdate events.
type subscriptionUpdateEventHandler func(*Session, *SubscriptionUpdate)
// Type returns the event type for SubscriptionCreate events.
func (eh subscriptionUpdateEventHandler) Type() string {
return subscriptionUpdateEventType
}
// New returns a new instance of SubscriptionUpdate.
func (eh subscriptionUpdateEventHandler) New() interface{} {
return &SubscriptionUpdate{}
}
// Handle is the handler for SubscriptionUpdate events.
func (eh subscriptionUpdateEventHandler) Handle(s *Session, i interface{}) {
if t, ok := i.(*SubscriptionUpdate); ok {
eh(s, t)
}
}
// stageInstanceEventCreateEventHandler is an event handler for StageInstanceEventCreate events.
type stageInstanceEventCreateEventHandler func(*Session, *StageInstanceEventCreate)
@ -1260,6 +1221,66 @@ func (eh stageInstanceEventUpdateEventHandler) Handle(s *Session, i interface{})
}
}
// subscriptionCreateEventHandler is an event handler for SubscriptionCreate events.
type subscriptionCreateEventHandler func(*Session, *SubscriptionCreate)
// Type returns the event type for SubscriptionCreate events.
func (eh subscriptionCreateEventHandler) Type() string {
return subscriptionCreateEventType
}
// New returns a new instance of SubscriptionCreate.
func (eh subscriptionCreateEventHandler) New() interface{} {
return &SubscriptionCreate{}
}
// Handle is the handler for SubscriptionCreate events.
func (eh subscriptionCreateEventHandler) Handle(s *Session, i interface{}) {
if t, ok := i.(*SubscriptionCreate); ok {
eh(s, t)
}
}
// subscriptionDeleteEventHandler is an event handler for SubscriptionDelete events.
type subscriptionDeleteEventHandler func(*Session, *SubscriptionDelete)
// Type returns the event type for SubscriptionDelete events.
func (eh subscriptionDeleteEventHandler) Type() string {
return subscriptionDeleteEventType
}
// New returns a new instance of SubscriptionDelete.
func (eh subscriptionDeleteEventHandler) New() interface{} {
return &SubscriptionDelete{}
}
// Handle is the handler for SubscriptionDelete events.
func (eh subscriptionDeleteEventHandler) Handle(s *Session, i interface{}) {
if t, ok := i.(*SubscriptionDelete); ok {
eh(s, t)
}
}
// subscriptionUpdateEventHandler is an event handler for SubscriptionUpdate events.
type subscriptionUpdateEventHandler func(*Session, *SubscriptionUpdate)
// Type returns the event type for SubscriptionUpdate events.
func (eh subscriptionUpdateEventHandler) Type() string {
return subscriptionUpdateEventType
}
// New returns a new instance of SubscriptionUpdate.
func (eh subscriptionUpdateEventHandler) New() interface{} {
return &SubscriptionUpdate{}
}
// Handle is the handler for SubscriptionUpdate events.
func (eh subscriptionUpdateEventHandler) Handle(s *Session, i interface{}) {
if t, ok := i.(*SubscriptionUpdate); ok {
eh(s, t)
}
}
// threadCreateEventHandler is an event handler for ThreadCreate events.
type threadCreateEventHandler func(*Session, *ThreadCreate)
@ -1594,16 +1615,18 @@ func handlerForInterface(handler interface{}) EventHandler {
return readyEventHandler(v)
case func(*Session, *Resumed):
return resumedEventHandler(v)
case func(*Session, *SubscriptionCreate):
return subscriptionCreateEventHandler(v)
case func(*Session, *SubscriptionUpdate):
return subscriptionUpdateEventHandler(v)
case func(*Session, *StageInstanceEventCreate):
return stageInstanceEventCreateEventHandler(v)
case func(*Session, *StageInstanceEventDelete):
return stageInstanceEventDeleteEventHandler(v)
case func(*Session, *StageInstanceEventUpdate):
return stageInstanceEventUpdateEventHandler(v)
case func(*Session, *SubscriptionCreate):
return subscriptionCreateEventHandler(v)
case func(*Session, *SubscriptionDelete):
return subscriptionDeleteEventHandler(v)
case func(*Session, *SubscriptionUpdate):
return subscriptionUpdateEventHandler(v)
case func(*Session, *ThreadCreate):
return threadCreateEventHandler(v)
case func(*Session, *ThreadDelete):
@ -1683,11 +1706,12 @@ func init() {
registerInterfaceProvider(presencesReplaceEventHandler(nil))
registerInterfaceProvider(readyEventHandler(nil))
registerInterfaceProvider(resumedEventHandler(nil))
registerInterfaceProvider(subscriptionCreateEventHandler(nil))
registerInterfaceProvider(subscriptionUpdateEventHandler(nil))
registerInterfaceProvider(stageInstanceEventCreateEventHandler(nil))
registerInterfaceProvider(stageInstanceEventDeleteEventHandler(nil))
registerInterfaceProvider(stageInstanceEventUpdateEventHandler(nil))
registerInterfaceProvider(subscriptionCreateEventHandler(nil))
registerInterfaceProvider(subscriptionDeleteEventHandler(nil))
registerInterfaceProvider(subscriptionUpdateEventHandler(nil))
registerInterfaceProvider(threadCreateEventHandler(nil))
registerInterfaceProvider(threadDeleteEventHandler(nil))
registerInterfaceProvider(threadListSyncEventHandler(nil))

View file

@ -473,3 +473,9 @@ type SubscriptionCreate struct {
type SubscriptionUpdate struct {
*Subscription
}
// SubscriptionDelete is the data for an SubscriptionDelete event.
// https://discord.com/developers/docs/monetization/implementing-app-subscriptions#using-subscription-events-for-the-subscription-lifecycle
type SubscriptionDelete struct {
*Subscription
}