@@ -9,22 +9,23 @@ import (
9
9
10
10
// GuildScheduledEvent a representation of a scheduled event in a Guild (https://discord.com/developers/docs/resources/guild-scheduled-event#guild-scheduled-event-object)
11
11
type GuildScheduledEvent struct {
12
- ID snowflake.ID `json:"id"`
13
- GuildID snowflake.ID `json:"guild_id"`
14
- ChannelID * snowflake.ID `json:"channel_id"`
15
- CreatorID snowflake.ID `json:"creator_id"`
16
- Name string `json:"name"`
17
- Description string `json:"description"`
18
- ScheduledStartTime time.Time `json:"scheduled_start_time"`
19
- ScheduledEndTime * time.Time `json:"scheduled_end_time"`
20
- PrivacyLevel ScheduledEventPrivacyLevel `json:"privacy_level"`
21
- Status ScheduledEventStatus `json:"status"`
22
- EntityType ScheduledEventEntityType `json:"entity_type"`
23
- EntityID * snowflake.ID `json:"entity_id"`
24
- EntityMetaData * EntityMetaData `json:"entity_metadata"`
25
- Creator User `json:"creator"`
26
- UserCount int `json:"user_count"`
27
- Image * string `json:"image"`
12
+ ID snowflake.ID `json:"id"`
13
+ GuildID snowflake.ID `json:"guild_id"`
14
+ ChannelID * snowflake.ID `json:"channel_id"`
15
+ CreatorID snowflake.ID `json:"creator_id"`
16
+ Name string `json:"name"`
17
+ Description string `json:"description"`
18
+ ScheduledStartTime time.Time `json:"scheduled_start_time"`
19
+ ScheduledEndTime * time.Time `json:"scheduled_end_time"`
20
+ PrivacyLevel ScheduledEventPrivacyLevel `json:"privacy_level"`
21
+ Status ScheduledEventStatus `json:"status"`
22
+ EntityType ScheduledEventEntityType `json:"entity_type"`
23
+ EntityID * snowflake.ID `json:"entity_id"`
24
+ EntityMetaData * EntityMetaData `json:"entity_metadata"`
25
+ Creator User `json:"creator"`
26
+ UserCount int `json:"user_count"`
27
+ Image * string `json:"image"`
28
+ RecurrenceRule * ScheduledEventRecurrenceRule `json:"recurrence_rule"`
28
29
}
29
30
30
31
func (e GuildScheduledEvent ) CreatedAt () time.Time {
@@ -41,28 +42,30 @@ func (e GuildScheduledEvent) CoverURL(opts ...CDNOpt) *string {
41
42
}
42
43
43
44
type GuildScheduledEventCreate struct {
44
- ChannelID snowflake.ID `json:"channel_id,omitempty"`
45
- EntityMetaData * EntityMetaData `json:"entity_metadata,omitempty"`
46
- Name string `json:"name"`
47
- PrivacyLevel ScheduledEventPrivacyLevel `json:"privacy_level"`
48
- ScheduledStartTime time.Time `json:"scheduled_start_time"`
49
- ScheduledEndTime * time.Time `json:"scheduled_end_time,omitempty"`
50
- Description string `json:"description,omitempty"`
51
- EntityType ScheduledEventEntityType `json:"entity_type"`
52
- Image * Icon `json:"image,omitempty"`
45
+ ChannelID snowflake.ID `json:"channel_id,omitempty"`
46
+ EntityMetaData * EntityMetaData `json:"entity_metadata,omitempty"`
47
+ Name string `json:"name"`
48
+ PrivacyLevel ScheduledEventPrivacyLevel `json:"privacy_level"`
49
+ ScheduledStartTime time.Time `json:"scheduled_start_time"`
50
+ ScheduledEndTime * time.Time `json:"scheduled_end_time,omitempty"`
51
+ Description string `json:"description,omitempty"`
52
+ EntityType ScheduledEventEntityType `json:"entity_type"`
53
+ Image * Icon `json:"image,omitempty"`
54
+ RecurrenceRule * ScheduledEventRecurrenceRule `json:"recurrence_rule,omitempty"`
53
55
}
54
56
55
57
type GuildScheduledEventUpdate struct {
56
- ChannelID * snowflake.ID `json:"channel_id,omitempty"`
57
- EntityMetaData * EntityMetaData `json:"entity_metadata,omitempty"`
58
- Name string `json:"name,omitempty"`
59
- PrivacyLevel * ScheduledEventPrivacyLevel `json:"privacy_level,omitempty"`
60
- ScheduledStartTime * time.Time `json:"scheduled_start_time,omitempty"`
61
- ScheduledEndTime * time.Time `json:"scheduled_end_time,omitempty"`
62
- Description * string `json:"description,omitempty"`
63
- EntityType * ScheduledEventEntityType `json:"entity_type,omitempty"`
64
- Status * ScheduledEventStatus `json:"status,omitempty"`
65
- Image * json.Nullable [Icon ] `json:"image,omitempty"`
58
+ ChannelID * snowflake.ID `json:"channel_id,omitempty"`
59
+ EntityMetaData * EntityMetaData `json:"entity_metadata,omitempty"`
60
+ Name string `json:"name,omitempty"`
61
+ PrivacyLevel * ScheduledEventPrivacyLevel `json:"privacy_level,omitempty"`
62
+ ScheduledStartTime * time.Time `json:"scheduled_start_time,omitempty"`
63
+ ScheduledEndTime * time.Time `json:"scheduled_end_time,omitempty"`
64
+ Description * string `json:"description,omitempty"`
65
+ EntityType * ScheduledEventEntityType `json:"entity_type,omitempty"`
66
+ Status * ScheduledEventStatus `json:"status,omitempty"`
67
+ Image * json.Nullable [Icon ] `json:"image,omitempty"`
68
+ RecurrenceRule * json.Nullable [ScheduledEventRecurrenceRule ] `json:"recurrence_rule,omitempty"`
66
69
}
67
70
68
71
type GuildScheduledEventUser struct {
@@ -98,6 +101,62 @@ const (
98
101
ScheduledEventEntityTypeExternal
99
102
)
100
103
104
+ type ScheduledEventRecurrenceRule struct {
105
+ Start time.Time `json:"start"`
106
+ End * time.Time `json:"end"`
107
+ Frequency ScheduledEventRecurrenceRuleFrequency `json:"frequency"`
108
+ Interval int `json:"interval"`
109
+ ByWeekday []ScheduledEventRecurrenceRuleWeekday `json:"by_weekday"`
110
+ ByNWeekday []ScheduledEventRecurrenceRuleNWeekday `json:"by_n_weekday"`
111
+ ByMonth []ScheduledEventRecurrenceRuleMonth `json:"by_month"`
112
+ ByMonthDay []int `json:"by_month_day"`
113
+ ByYearDay []int `json:"by_year_day"`
114
+ Count * int `json:"count"`
115
+ }
116
+
117
+ type ScheduledEventRecurrenceRuleFrequency int
118
+
119
+ const (
120
+ ScheduledEventRecurrenceRuleFrequencyYearly ScheduledEventRecurrenceRuleFrequency = iota
121
+ ScheduledEventRecurrenceRuleFrequencyMonthly
122
+ ScheduledEventRecurrenceRuleFrequencyWeekly
123
+ ScheduledEventRecurrenceRuleFrequencyDaily
124
+ )
125
+
126
+ type ScheduledEventRecurrenceRuleWeekday int
127
+
128
+ const (
129
+ ScheduledEventRecurrenceRuleWeekdayMonday ScheduledEventRecurrenceRuleWeekday = iota
130
+ ScheduledEventRecurrenceRuleWeekdayTuesday
131
+ ScheduledEventRecurrenceRuleWeekdayWednesday
132
+ ScheduledEventRecurrenceRuleWeekdayThursday
133
+ ScheduledEventRecurrenceRuleWeekdayFriday
134
+ ScheduledEventRecurrenceRuleWeekdaySaturday
135
+ ScheduledEventRecurrenceRuleWeekdaySunday
136
+ )
137
+
138
+ type ScheduledEventRecurrenceRuleNWeekday struct {
139
+ N int `json:"n"`
140
+ Day ScheduledEventRecurrenceRuleWeekday `json:"day"`
141
+ }
142
+
143
+ type ScheduledEventRecurrenceRuleMonth int
144
+
145
+ const (
146
+ ScheduledEventRecurrenceRuleMonthJanuary ScheduledEventRecurrenceRuleMonth = iota + 1
147
+ ScheduledEventRecurrenceRuleMonthFebruary
148
+ ScheduledEventRecurrenceRuleMonthMarch
149
+ ScheduledEventRecurrenceRuleMonthApril
150
+ ScheduledEventRecurrenceRuleMonthMay
151
+ ScheduledEventRecurrenceRuleMonthJune
152
+ ScheduledEventRecurrenceRuleMonthJuly
153
+ ScheduledEventRecurrenceRuleMonthAugust
154
+ ScheduledEventRecurrenceRuleMonthSeptember
155
+ ScheduledEventRecurrenceRuleMonthOctober
156
+ ScheduledEventRecurrenceRuleMonthNovember
157
+ ScheduledEventRecurrenceRuleMonthDecember
158
+ )
159
+
101
160
// EntityMetaData additional metadata for the scheduled event (https://discord.com/developers/docs/resources/guild-scheduled-event#guild-scheduled-event-object-guild-scheduled-event-entity-metadata)
102
161
type EntityMetaData struct {
103
162
Location string `json:"location"`
0 commit comments