Skip to content

Commit fcbf484

Browse files
committed
1 parent a979bbb commit fcbf484

12 files changed

+218
-9
lines changed

discord/subscription.go

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
package discord
2+
3+
import (
4+
"time"
5+
6+
"github.com/disgoorg/snowflake/v2"
7+
)
8+
9+
type Subscription struct {
10+
ID snowflake.ID `json:"id"`
11+
UserID snowflake.ID `json:"user_id"`
12+
SkuIDs []snowflake.ID `json:"sku_ids"`
13+
EntitlementIDs []snowflake.ID `json:"entitlement_ids"`
14+
CurrentPeriodStart time.Time `json:"current_period_start"`
15+
CurrentPeriodEnd time.Time `json:"current_period_end"`
16+
Status SubscriptionStatus `json:"status"`
17+
CanceledAt *time.Time `json:"canceled_at"`
18+
Country *string `json:"country"`
19+
}
20+
21+
type SubscriptionStatus int
22+
23+
const (
24+
SubscriptionStatusActive SubscriptionStatus = iota + 1
25+
SubscriptionStatusEnding
26+
SubscriptionStatusInactive
27+
)

events/listener_adapter.go

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,11 @@ type ListenerAdapter struct {
6969
OnEntitlementUpdate func(event *EntitlementUpdate)
7070
OnEntitlementDelete func(event *EntitlementDelete)
7171

72+
// Subscription Events
73+
OnSubscriptionCreate func(event *SubscriptionCreate)
74+
OnSubscriptionUpdate func(event *SubscriptionUpdate)
75+
OnSubscriptionDelete func(event *SubscriptionDelete)
76+
7277
// Sticker Events
7378
OnStickersUpdate func(event *StickersUpdate)
7479
OnStickerCreate func(event *StickerCreate)
@@ -353,6 +358,20 @@ func (l *ListenerAdapter) OnEvent(event bot.Event) {
353358
listener(e)
354359
}
355360

361+
// Subscription Events
362+
case *SubscriptionCreate:
363+
if listener := l.OnSubscriptionCreate; listener != nil {
364+
listener(e)
365+
}
366+
case *SubscriptionUpdate:
367+
if listener := l.OnSubscriptionUpdate; listener != nil {
368+
listener(e)
369+
}
370+
case *SubscriptionDelete:
371+
if listener := l.OnSubscriptionDelete; listener != nil {
372+
listener(e)
373+
}
374+
356375
// Sticker Events
357376
case *StickersUpdate:
358377
if listener := l.OnStickersUpdate; listener != nil {

events/subscription_events.go

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
package events
2+
3+
import "github.com/disgoorg/disgo/discord"
4+
5+
type GenericSubscriptionEvent struct {
6+
*GenericEvent
7+
discord.Subscription
8+
}
9+
10+
type SubscriptionCreate struct {
11+
*GenericSubscriptionEvent
12+
}
13+
14+
type SubscriptionUpdate struct {
15+
*GenericSubscriptionEvent
16+
}
17+
18+
type SubscriptionDelete struct {
19+
*GenericSubscriptionEvent
20+
}

gateway/gateway_event_type.go

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,9 @@ const (
6969
EventTypeStageInstanceCreate EventType = "STAGE_INSTANCE_CREATE"
7070
EventTypeStageInstanceDelete EventType = "STAGE_INSTANCE_DELETE"
7171
EventTypeStageInstanceUpdate EventType = "STAGE_INSTANCE_UPDATE"
72+
EventTypeSubscriptionCreate EventType = "SUBSCRIPTION_CREATE"
73+
EventTypeSubscriptionUpdate EventType = "SUBSCRIPTION_UPDATE"
74+
EventTypeSubscriptionDelete EventType = "SUBSCRIPTION_DELETE"
7275
EventTypeTypingStart EventType = "TYPING_START"
7376
EventTypeUserUpdate EventType = "USER_UPDATE"
7477
EventTypeVoiceChannelEffectSend EventType = "VOICE_CHANNEL_EFFECT_SEND"

gateway/gateway_events.go

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -796,3 +796,24 @@ type EventEntitlementDelete struct {
796796

797797
func (EventEntitlementDelete) messageData() {}
798798
func (EventEntitlementDelete) eventData() {}
799+
800+
type EventSubscriptionCreate struct {
801+
discord.Subscription
802+
}
803+
804+
func (EventSubscriptionCreate) messageData() {}
805+
func (EventSubscriptionCreate) eventData() {}
806+
807+
type EventSubscriptionUpdate struct {
808+
discord.Subscription
809+
}
810+
811+
func (EventSubscriptionUpdate) messageData() {}
812+
func (EventSubscriptionUpdate) eventData() {}
813+
814+
type EventSubscriptionDelete struct {
815+
discord.Subscription
816+
}
817+
818+
func (EventSubscriptionDelete) messageData() {}
819+
func (EventSubscriptionDelete) eventData() {}

gateway/gateway_messages.go

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -401,6 +401,21 @@ func UnmarshalEventData(data []byte, eventType EventType) (EventData, error) {
401401
err = json.Unmarshal(data, &d)
402402
eventData = d
403403

404+
case EventTypeSubscriptionCreate:
405+
var d EventSubscriptionCreate
406+
err = json.Unmarshal(data, &d)
407+
eventData = d
408+
409+
case EventTypeSubscriptionUpdate:
410+
var d EventSubscriptionUpdate
411+
err = json.Unmarshal(data, &d)
412+
eventData = d
413+
414+
case EventTypeSubscriptionDelete:
415+
var d EventSubscriptionDelete
416+
err = json.Unmarshal(data, &d)
417+
eventData = d
418+
404419
case EventTypeTypingStart:
405420
var d EventTypingStart
406421
err = json.Unmarshal(data, &d)

handlers/all_handlers.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -115,6 +115,10 @@ var allEventHandlers = []bot.GatewayEventHandler{
115115
bot.NewGatewayEventHandler(gateway.EventTypeStageInstanceUpdate, gatewayHandlerStageInstanceUpdate),
116116
bot.NewGatewayEventHandler(gateway.EventTypeStageInstanceDelete, gatewayHandlerStageInstanceDelete),
117117

118+
bot.NewGatewayEventHandler(gateway.EventTypeSubscriptionCreate, gatewayHandlerSubscriptionCreate),
119+
bot.NewGatewayEventHandler(gateway.EventTypeSubscriptionUpdate, gatewayHandlerSubscriptionUpdate),
120+
bot.NewGatewayEventHandler(gateway.EventTypeSubscriptionDelete, gatewayHandlerSubscriptionDelete),
121+
118122
bot.NewGatewayEventHandler(gateway.EventTypeTypingStart, gatewayHandlerTypingStart),
119123
bot.NewGatewayEventHandler(gateway.EventTypeUserUpdate, gatewayHandlerUserUpdate),
120124

handlers/subscription_handlers.go

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
package handlers
2+
3+
import (
4+
"github.com/disgoorg/disgo/bot"
5+
"github.com/disgoorg/disgo/events"
6+
"github.com/disgoorg/disgo/gateway"
7+
)
8+
9+
func gatewayHandlerSubscriptionCreate(client bot.Client, sequenceNumber int, shardID int, event gateway.EventSubscriptionCreate) {
10+
client.EventManager().DispatchEvent(&events.SubscriptionCreate{
11+
GenericSubscriptionEvent: &events.GenericSubscriptionEvent{
12+
GenericEvent: events.NewGenericEvent(client, sequenceNumber, shardID),
13+
Subscription: event.Subscription,
14+
},
15+
})
16+
}
17+
18+
func gatewayHandlerSubscriptionUpdate(client bot.Client, sequenceNumber int, shardID int, event gateway.EventSubscriptionUpdate) {
19+
client.EventManager().DispatchEvent(&events.SubscriptionUpdate{
20+
GenericSubscriptionEvent: &events.GenericSubscriptionEvent{
21+
GenericEvent: events.NewGenericEvent(client, sequenceNumber, shardID),
22+
Subscription: event.Subscription,
23+
},
24+
})
25+
}
26+
27+
func gatewayHandlerSubscriptionDelete(client bot.Client, sequenceNumber int, shardID int, event gateway.EventSubscriptionDelete) {
28+
client.EventManager().DispatchEvent(&events.SubscriptionDelete{
29+
GenericSubscriptionEvent: &events.GenericSubscriptionEvent{
30+
GenericEvent: events.NewGenericEvent(client, sequenceNumber, shardID),
31+
Subscription: event.Subscription,
32+
},
33+
})
34+
}

rest/applications.go

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -42,8 +42,6 @@ type Applications interface {
4242
DeleteTestEntitlement(applicationID snowflake.ID, entitlementID snowflake.ID, opts ...RequestOpt) error
4343
ConsumeEntitlement(applicationID snowflake.ID, entitlementID snowflake.ID, opts ...RequestOpt) error
4444

45-
GetSKUs(applicationID snowflake.ID, opts ...RequestOpt) ([]discord.SKU, error)
46-
4745
GetApplicationEmojis(applicationID snowflake.ID, opts ...RequestOpt) ([]discord.Emoji, error)
4846
GetApplicationEmoji(applicationID snowflake.ID, emojiID snowflake.ID, opts ...RequestOpt) (*discord.Emoji, error)
4947
CreateApplicationEmoji(applicationID snowflake.ID, emojiCreate discord.EmojiCreate, opts ...RequestOpt) (*discord.Emoji, error)
@@ -222,11 +220,6 @@ func (s *applicationsImpl) ConsumeEntitlement(applicationID snowflake.ID, entitl
222220
return s.client.Do(ConsumeEntitlement.Compile(nil, applicationID, entitlementID), nil, nil, opts...)
223221
}
224222

225-
func (s *applicationsImpl) GetSKUs(applicationID snowflake.ID, opts ...RequestOpt) (skus []discord.SKU, err error) {
226-
err = s.client.Do(GetSKUs.Compile(nil, applicationID), nil, &skus, opts...)
227-
return
228-
}
229-
230223
func (s *applicationsImpl) GetApplicationEmojis(applicationID snowflake.ID, opts ...RequestOpt) (emojis []discord.Emoji, err error) {
231224
var rs emojisResponse
232225
err = s.client.Do(GetApplicationEmojis.Compile(nil, applicationID), nil, &rs, opts...)

rest/rest.go

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ type Rest interface {
2121
StageInstances
2222
Emojis
2323
Stickers
24+
SKUs
2425
GuildScheduledEvents
2526
}
2627

@@ -47,6 +48,7 @@ func New(client Client) Rest {
4748
StageInstances: NewStageInstances(client),
4849
Emojis: NewEmojis(client),
4950
Stickers: NewStickers(client),
51+
SKUs: NewSKUs(client),
5052
GuildScheduledEvents: NewGuildScheduledEvents(client),
5153
}
5254
}
@@ -71,5 +73,6 @@ type restImpl struct {
7173
StageInstances
7274
Emojis
7375
Stickers
76+
SKUs
7477
GuildScheduledEvents
7578
}

0 commit comments

Comments
 (0)