Skip to content

Commit fbfbc6b

Browse files
authored
feat: recurring scheduled events (#1058)
1 parent 906dd8e commit fbfbc6b

File tree

8 files changed

+452
-4
lines changed

8 files changed

+452
-4
lines changed

deno/payloads/v10/guildScheduledEvent.ts

Lines changed: 107 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,113 @@ interface APIGuildScheduledEventBase<Type extends GuildScheduledEventEntityType>
6767
* The cover image of the scheduled event
6868
*/
6969
image?: string | null;
70+
/**
71+
* The definition for how often this event should recur
72+
*/
73+
recurrence_rule: APIGuildScheduledEventRecurrenceRule | null;
74+
}
75+
76+
/**
77+
* https://discord.com/developers/docs/resources/guild-scheduled-event#guild-scheduled-event-recurrence-rule-object-guild-scheduled-event-recurrence-rule-structure
78+
*/
79+
export interface APIGuildScheduledEventRecurrenceRule {
80+
/**
81+
* Starting time of the recurrence interval
82+
*/
83+
start: string;
84+
/**
85+
* Ending time of the recurrence interval
86+
*/
87+
end: string | null;
88+
/**
89+
* How often the event occurs
90+
*/
91+
frequency: GuildScheduledEventRecurrenceRuleFrequency;
92+
/**
93+
* The spacing between the events, defined by `frequency`.
94+
* For example, `frequency` of {@apilink GuildScheduledEventRecurrenceRuleFrequency#Weekly} and an `interval` of `2`
95+
* would be "every-other week"
96+
*/
97+
interval: number;
98+
/**
99+
* Set of specific days within a week for the event to recur on
100+
*/
101+
by_weekday: GuildScheduledEventRecurrenceRuleWeekday[] | null;
102+
/**
103+
* List of specific days within a specific week (1-5) to recur on
104+
*/
105+
by_n_weekday: GuildScheduledEventRecurrenceRuleNWeekdayStructure[] | null;
106+
/**
107+
* Set of specific months to recur on
108+
*/
109+
by_month: GuildScheduledEventRecurrenceRuleMonth[] | null;
110+
/**
111+
* Set of specific dates within a month to recur on
112+
*/
113+
by_month_day: number[] | null;
114+
/**
115+
* Set of days within a year to recur on (1-364)
116+
*/
117+
by_year_day: number[] | null;
118+
/**
119+
* The total amount of times that the event is allowed to recur before stopping
120+
*/
121+
count: number | null;
122+
}
123+
124+
/**
125+
* https://discord.com/developers/docs/resources/guild-scheduled-event#guild-scheduled-event-recurrence-rule-object-guild-scheduled-event-recurrence-rule-frequency
126+
*/
127+
export enum GuildScheduledEventRecurrenceRuleFrequency {
128+
Yearly,
129+
Monthly,
130+
Weekly,
131+
Daily,
132+
}
133+
134+
/**
135+
* https://discord.com/developers/docs/resources/guild-scheduled-event#guild-scheduled-event-recurrence-rule-object-guild-scheduled-event-recurrence-rule-weekday
136+
*/
137+
export enum GuildScheduledEventRecurrenceRuleWeekday {
138+
Monday,
139+
Tuesday,
140+
Wednesday,
141+
Thursday,
142+
Friday,
143+
Saturday,
144+
Sunday,
145+
}
146+
147+
/**
148+
* https://discord.com/developers/docs/resources/guild-scheduled-event#guild-scheduled-event-recurrence-rule-object-guild-scheduled-event-recurrence-rule-month
149+
*/
150+
export enum GuildScheduledEventRecurrenceRuleMonth {
151+
January = 1,
152+
February,
153+
March,
154+
April,
155+
May,
156+
June,
157+
July,
158+
August,
159+
September,
160+
October,
161+
November,
162+
December,
163+
}
164+
165+
/**
166+
* https://discord.com/developers/docs/resources/guild-scheduled-event#guild-scheduled-event-recurrence-rule-object-guild-scheduled-event-recurrence-rule-nweekday-structure
167+
*/
168+
export interface GuildScheduledEventRecurrenceRuleNWeekdayStructure {
169+
/**
170+
* The week to reoccur on.
171+
*/
172+
n: 1 | 2 | 3 | 4 | 5;
173+
/**
174+
* The day within the week to reoccur on
175+
*/
176+
day: GuildScheduledEventRecurrenceRuleWeekday;
70177
}
71178

72179
export interface APIStageInstanceGuildScheduledEvent

deno/payloads/v9/guildScheduledEvent.ts

Lines changed: 107 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,113 @@ interface APIGuildScheduledEventBase<Type extends GuildScheduledEventEntityType>
6767
* The cover image of the scheduled event
6868
*/
6969
image?: string | null;
70+
/**
71+
* The definition for how often this event should recur
72+
*/
73+
recurrence_rule: APIGuildScheduledEventRecurrenceRule | null;
74+
}
75+
76+
/**
77+
* https://discord.com/developers/docs/resources/guild-scheduled-event#guild-scheduled-event-recurrence-rule-object-guild-scheduled-event-recurrence-rule-structure
78+
*/
79+
export interface APIGuildScheduledEventRecurrenceRule {
80+
/**
81+
* Starting time of the recurrence interval
82+
*/
83+
start: string;
84+
/**
85+
* Ending time of the recurrence interval
86+
*/
87+
end: string | null;
88+
/**
89+
* How often the event occurs
90+
*/
91+
frequency: GuildScheduledEventRecurrenceRuleFrequency;
92+
/**
93+
* The spacing between the events, defined by `frequency`.
94+
* For example, `frequency` of {@apilink GuildScheduledEventRecurrenceRuleFrequency#Weekly} and an `interval` of `2`
95+
* would be "every-other week"
96+
*/
97+
interval: number;
98+
/**
99+
* Set of specific days within a week for the event to recur on
100+
*/
101+
by_weekday: GuildScheduledEventRecurrenceRuleWeekday[] | null;
102+
/**
103+
* List of specific days within a specific week (1-5) to recur on
104+
*/
105+
by_n_weekday: GuildScheduledEventRecurrenceRuleNWeekdayStructure[] | null;
106+
/**
107+
* Set of specific months to recur on
108+
*/
109+
by_month: GuildScheduledEventRecurrenceRuleMonth[] | null;
110+
/**
111+
* Set of specific dates within a month to recur on
112+
*/
113+
by_month_day: number[] | null;
114+
/**
115+
* Set of days within a year to recur on (1-364)
116+
*/
117+
by_year_day: number[] | null;
118+
/**
119+
* The total amount of times that the event is allowed to recur before stopping
120+
*/
121+
count: number | null;
122+
}
123+
124+
/**
125+
* https://discord.com/developers/docs/resources/guild-scheduled-event#guild-scheduled-event-recurrence-rule-object-guild-scheduled-event-recurrence-rule-frequency
126+
*/
127+
export enum GuildScheduledEventRecurrenceRuleFrequency {
128+
Yearly,
129+
Monthly,
130+
Weekly,
131+
Daily,
132+
}
133+
134+
/**
135+
* https://discord.com/developers/docs/resources/guild-scheduled-event#guild-scheduled-event-recurrence-rule-object-guild-scheduled-event-recurrence-rule-weekday
136+
*/
137+
export enum GuildScheduledEventRecurrenceRuleWeekday {
138+
Monday,
139+
Tuesday,
140+
Wednesday,
141+
Thursday,
142+
Friday,
143+
Saturday,
144+
Sunday,
145+
}
146+
147+
/**
148+
* https://discord.com/developers/docs/resources/guild-scheduled-event#guild-scheduled-event-recurrence-rule-object-guild-scheduled-event-recurrence-rule-month
149+
*/
150+
export enum GuildScheduledEventRecurrenceRuleMonth {
151+
January = 1,
152+
February,
153+
March,
154+
April,
155+
May,
156+
June,
157+
July,
158+
August,
159+
September,
160+
October,
161+
November,
162+
December,
163+
}
164+
165+
/**
166+
* https://discord.com/developers/docs/resources/guild-scheduled-event#guild-scheduled-event-recurrence-rule-object-guild-scheduled-event-recurrence-rule-nweekday-structure
167+
*/
168+
export interface GuildScheduledEventRecurrenceRuleNWeekdayStructure {
169+
/**
170+
* The week to reoccur on.
171+
*/
172+
n: 1 | 2 | 3 | 4 | 5;
173+
/**
174+
* The day within the week to reoccur on
175+
*/
176+
day: GuildScheduledEventRecurrenceRuleWeekday;
70177
}
71178

72179
export interface APIStageInstanceGuildScheduledEvent

deno/rest/v10/guildScheduledEvent.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ import type { StrictPartial } from '../../utils/internals.ts';
33
import type {
44
APIGuildScheduledEvent,
55
APIGuildScheduledEventEntityMetadata,
6+
APIGuildScheduledEventRecurrenceRule,
67
APIGuildScheduledEventUser,
78
GuildScheduledEventEntityType,
89
GuildScheduledEventPrivacyLevel,
@@ -64,6 +65,10 @@ export interface RESTPostAPIGuildScheduledEventJSONBody {
6465
* The cover image of the scheduled event
6566
*/
6667
image?: string | null | undefined;
68+
/**
69+
* The definition for how often this event should recur
70+
*/
71+
recurrence_rule?: APIGuildScheduledEventRecurrenceRule | undefined;
6772
}
6873

6974
/**

deno/rest/v9/guildScheduledEvent.ts

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,12 @@ import type { Snowflake } from '../../globals.ts';
22
import type { StrictPartial } from '../../utils/internals.ts';
33
import type {
44
APIGuildScheduledEvent,
5+
APIGuildScheduledEventEntityMetadata,
6+
APIGuildScheduledEventRecurrenceRule,
7+
APIGuildScheduledEventUser,
58
GuildScheduledEventEntityType,
69
GuildScheduledEventPrivacyLevel,
7-
APIGuildScheduledEventEntityMetadata,
810
GuildScheduledEventStatus,
9-
APIGuildScheduledEventUser,
1011
} from '../../v9.ts';
1112

1213
/**
@@ -64,6 +65,10 @@ export interface RESTPostAPIGuildScheduledEventJSONBody {
6465
* The cover image of the scheduled event
6566
*/
6667
image?: string | null | undefined;
68+
/**
69+
* The definition for how often this event should recur
70+
*/
71+
recurrence_rule?: APIGuildScheduledEventRecurrenceRule | undefined;
6772
}
6873

6974
/**

payloads/v10/guildScheduledEvent.ts

Lines changed: 107 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,113 @@ interface APIGuildScheduledEventBase<Type extends GuildScheduledEventEntityType>
6767
* The cover image of the scheduled event
6868
*/
6969
image?: string | null;
70+
/**
71+
* The definition for how often this event should recur
72+
*/
73+
recurrence_rule: APIGuildScheduledEventRecurrenceRule | null;
74+
}
75+
76+
/**
77+
* https://discord.com/developers/docs/resources/guild-scheduled-event#guild-scheduled-event-recurrence-rule-object-guild-scheduled-event-recurrence-rule-structure
78+
*/
79+
export interface APIGuildScheduledEventRecurrenceRule {
80+
/**
81+
* Starting time of the recurrence interval
82+
*/
83+
start: string;
84+
/**
85+
* Ending time of the recurrence interval
86+
*/
87+
end: string | null;
88+
/**
89+
* How often the event occurs
90+
*/
91+
frequency: GuildScheduledEventRecurrenceRuleFrequency;
92+
/**
93+
* The spacing between the events, defined by `frequency`.
94+
* For example, `frequency` of {@apilink GuildScheduledEventRecurrenceRuleFrequency#Weekly} and an `interval` of `2`
95+
* would be "every-other week"
96+
*/
97+
interval: number;
98+
/**
99+
* Set of specific days within a week for the event to recur on
100+
*/
101+
by_weekday: GuildScheduledEventRecurrenceRuleWeekday[] | null;
102+
/**
103+
* List of specific days within a specific week (1-5) to recur on
104+
*/
105+
by_n_weekday: GuildScheduledEventRecurrenceRuleNWeekdayStructure[] | null;
106+
/**
107+
* Set of specific months to recur on
108+
*/
109+
by_month: GuildScheduledEventRecurrenceRuleMonth[] | null;
110+
/**
111+
* Set of specific dates within a month to recur on
112+
*/
113+
by_month_day: number[] | null;
114+
/**
115+
* Set of days within a year to recur on (1-364)
116+
*/
117+
by_year_day: number[] | null;
118+
/**
119+
* The total amount of times that the event is allowed to recur before stopping
120+
*/
121+
count: number | null;
122+
}
123+
124+
/**
125+
* https://discord.com/developers/docs/resources/guild-scheduled-event#guild-scheduled-event-recurrence-rule-object-guild-scheduled-event-recurrence-rule-frequency
126+
*/
127+
export enum GuildScheduledEventRecurrenceRuleFrequency {
128+
Yearly,
129+
Monthly,
130+
Weekly,
131+
Daily,
132+
}
133+
134+
/**
135+
* https://discord.com/developers/docs/resources/guild-scheduled-event#guild-scheduled-event-recurrence-rule-object-guild-scheduled-event-recurrence-rule-weekday
136+
*/
137+
export enum GuildScheduledEventRecurrenceRuleWeekday {
138+
Monday,
139+
Tuesday,
140+
Wednesday,
141+
Thursday,
142+
Friday,
143+
Saturday,
144+
Sunday,
145+
}
146+
147+
/**
148+
* https://discord.com/developers/docs/resources/guild-scheduled-event#guild-scheduled-event-recurrence-rule-object-guild-scheduled-event-recurrence-rule-month
149+
*/
150+
export enum GuildScheduledEventRecurrenceRuleMonth {
151+
January = 1,
152+
February,
153+
March,
154+
April,
155+
May,
156+
June,
157+
July,
158+
August,
159+
September,
160+
October,
161+
November,
162+
December,
163+
}
164+
165+
/**
166+
* https://discord.com/developers/docs/resources/guild-scheduled-event#guild-scheduled-event-recurrence-rule-object-guild-scheduled-event-recurrence-rule-nweekday-structure
167+
*/
168+
export interface GuildScheduledEventRecurrenceRuleNWeekdayStructure {
169+
/**
170+
* The week to reoccur on.
171+
*/
172+
n: 1 | 2 | 3 | 4 | 5;
173+
/**
174+
* The day within the week to reoccur on
175+
*/
176+
day: GuildScheduledEventRecurrenceRuleWeekday;
70177
}
71178

72179
export interface APIStageInstanceGuildScheduledEvent

0 commit comments

Comments
 (0)