@@ -109,34 +109,52 @@ interface PageInfo {
109
109
110
110
// todo doesn't handle pagination
111
111
112
+ const GUILD_IDS = [
113
+ 'svelte-society-london' ,
114
+ 'svelte-society-stockholm' ,
115
+ 'svelte-society-zurich' ,
116
+ 'svelte-society-melbourne' ,
117
+ 'svelte-society-portugal' ,
118
+ 'san-diego-svelte' ,
119
+ 'svelte-society-austria' ,
120
+ 'svelte-society-bangalore' ,
121
+ 'svelte-society-bay-area' ,
122
+ ] ;
123
+
124
+ function log ( ...messages :any [ ] ) {
125
+ console . log ( '[guild-events-sync]' , ...messages ) ;
126
+ }
127
+
112
128
export const guildEventsTask :ScheduledTask = {
113
129
interval :86400 ,
114
130
name :'guild-events' ,
115
131
async handle ( client ) {
116
- try {
117
- console . log ( 'Fetching guild events' ) ;
132
+ log ( 'Running' ) ;
133
+
134
+ const discord_server = await client . guilds . fetch (
135
+ DEV_MODE ?TEST_GUILD_ID :'457912077277855764' ,
136
+ ) ;
137
+
138
+ if ( ! discord_server ) {
139
+ throw new Error ( 'Failed to fetch svelte/testing guild' ) ;
140
+ }
141
+
142
+ for ( const guild_id of GUILD_IDS ) {
143
+ log ( `Fetching events for${ guild_id } ` ) ;
118
144
119
145
const response = await fetch (
120
- ' https://guild.host/api/next/svelte-society-london /events/upcoming' ,
146
+ ` https://guild.host/api/next/${ guild_id } /events/upcoming` ,
121
147
{
122
148
headers :{
149
+ Accept :'application/json' ,
123
150
'User-Agent' :
124
151
'Svelte Bot (+https://github.com/sveltejs/discord-bot)' ,
125
- Accept :'application/json' ,
126
152
} ,
127
153
} ,
128
154
) ;
129
155
130
156
const data :ResponseData = await response . json ( ) ;
131
157
132
- const guild = await client . guilds . fetch (
133
- DEV_MODE ?TEST_GUILD_ID :'457912077277855764' ,
134
- ) ;
135
-
136
- if ( ! guild ) {
137
- throw new Error ( 'Failed to fetch guild' ) ;
138
- }
139
-
140
158
for ( const event of data . events . edges ) {
141
159
const event_slug = event . node . prettyUrl ;
142
160
@@ -153,35 +171,34 @@ export const guildEventsTask: ScheduledTask = {
153
171
154
172
if ( exists ) {
155
173
// prettier-ignore
156
- console . log ( ` Skipping${ event . node . name } as it already exists` ) ;
174
+ log ( ` Skipping${ event . node . name } as it already exists` ) ;
157
175
continue ;
158
176
}
159
177
160
- console . log ( ` Creating${ event . node . name } ` ) ;
161
-
162
- const discordEvent = await guild . scheduledEvents . create ( {
163
- name :event . node . name ,
164
- image :event . node . generatedSocialCardURL . replace (
165
- / \. s v g $ / ,
166
- '.png' ,
167
- ) ,
168
- description :event . node . description ,
169
- scheduledStartTime :event . node . startAt ,
170
- scheduledEndTime :event . node . endAt ,
171
- entityType :GuildScheduledEventEntityType . External ,
172
- privacyLevel :GuildScheduledEventPrivacyLevel . GuildOnly ,
173
- entityMetadata :{
174
- location :event . node . fullUrl ,
175
- } ,
176
- } ) ;
178
+ log ( ` Creating${ event . node . name } ` ) ;
179
+
180
+ const discordEvent =
181
+ await discord_server . scheduledEvents . create ( {
182
+ name :event . node . name ,
183
+ image :event . node . generatedSocialCardURL . replace (
184
+ / \. s v g $ / ,
185
+ '.png' ,
186
+ ) ,
187
+ description :event . node . description ,
188
+ scheduledStartTime :event . node . startAt ,
189
+ scheduledEndTime :event . node . endAt ,
190
+ entityType :GuildScheduledEventEntityType . External ,
191
+ privacyLevel :GuildScheduledEventPrivacyLevel . GuildOnly ,
192
+ entityMetadata :{
193
+ location :event . node . fullUrl ,
194
+ } ,
195
+ } ) ;
177
196
178
197
await pb . collection ( 'guildEventSync' ) . create ( {
179
198
event_slug,
180
199
discord_event_id :discordEvent . id ,
181
200
} ) ;
182
201
}
183
- } catch ( error ) {
184
- console . error ( 'failed to save analytics' , error ) ;
185
202
}
186
203
} ,
187
204
} ;