@@ -125,108 +125,109 @@ export default class GameBridge extends Service {
125125 . catch ( ) ;
126126
127127 con . on ( "ReceiveSessionUpdate" , async ( session : ResoniteSession ) => {
128- const server = this . servers [ id ] ;
129- if ( ! server ) return ;
130- if ( session . hostUserId === resonite . UserID ) {
131- const discord = server . discord ;
132- if ( discord . ready ) {
133- const guild = discord . guilds . cache . get ( discord . config . bot . primaryGuildId ) ;
134- if ( ! guild ) return ;
135- const channel = guild . channels . cache . get (
136- config . serverInfoChannelId
137- ) as Discord . TextChannel ;
138- if ( ! channel ) return ;
139-
140- const count = session . activeUsers ;
141-
142- const presence : Discord . PresenceData =
143- count > 0
144- ? {
145- status : "online" ,
146- activities : [
147- {
148- name : `${ count } player${ count !== 1 ? "s" : "" } ` ,
149- type : 3 ,
150- } ,
151- ] ,
152- }
153- : {
154- status : "idle" ,
155- afk : true ,
156- activities : [ ] ,
128+ try {
129+ const server = this . servers [ id ] ;
130+ if ( ! server ) throw new Error ( "Server not found" ) ;
131+ if ( session . hostUserId === resonite . UserID ) {
132+ const discord = server . discord ;
133+ if ( discord . ready ) {
134+ const guild = discord . guilds . cache . get ( discord . config . bot . primaryGuildId ) ;
135+ if ( ! guild ) throw new Error ( "Guild not found" ) ;
136+
137+ const channel = guild . channels . cache . get (
138+ config . serverInfoChannelId
139+ ) as Discord . TextChannel ;
140+ if ( ! channel ) throw new Error ( "Channel not found" ) ;
141+
142+ const count = session . activeUsers ;
143+
144+ const presence : Discord . PresenceData =
145+ count > 0
146+ ? {
147+ status : "online" ,
148+ activities : [
149+ {
150+ name : `${ count } player${ count !== 1 ? "s" : "" } ` ,
151+ type : 3 ,
152+ } ,
153+ ] ,
154+ }
155+ : {
156+ status : "idle" ,
157+ afk : true ,
158+ activities : [ ] ,
159+ } ;
160+
161+ discord . user ?. setPresence ( presence ) ;
162+
163+ const mapThumbnail = session . thumbnailUrl ;
164+ server . changeBanner ( mapThumbnail ) ;
165+ server . status . mapThumbnail = mapThumbnail ;
166+
167+ server . status . players = session . sessionUsers
168+ . filter ( u => u . userID !== resonite . UserID )
169+ . map ( sessionUser => {
170+ return {
171+ nick : sessionUser . username ,
172+ isAfk : ! sessionUser . isPresent ,
173+ accountId : 0 ,
174+ isAdmin : false ,
175+ isBanned : false ,
176+ ip : sessionUser . userID ,
177+ avatar : undefined ,
157178 } ;
179+ } ) ;
158180
159- discord . user ?. setPresence ( presence ) ;
160-
161- const mapThumbnail = session . thumbnailUrl ;
162- server . changeBanner ( mapThumbnail ) ;
163- server . status . mapThumbnail = mapThumbnail ;
164-
165- server . status . players = session . sessionUsers
166- . filter ( u => u . userID !== resonite . UserID )
167- . map ( sessionUser => {
168- return {
169- nick : sessionUser . username ,
170- isAfk : ! sessionUser . isPresent ,
171- accountId : 0 ,
172- isAdmin : false ,
173- isBanned : false ,
174- ip : sessionUser . userID ,
175- avatar : undefined ,
176- } ;
177- } ) ;
178-
179- server . status . players . forEach (
180- async u => ( u . avatar = await resonite . GetResoniteUserAvatarURL ( u . ip ) )
181- ) ;
182-
183- const container = new Discord . ContainerBuilder ( ) ;
184-
185- container . setAccentColor ( 4796260 ) ;
186-
187- const desc =
188- `### ${ session . tags [ 0 ] ?? session . name } \n` +
189- `:busts_in_silhouette: Player${
190- count > 1 || count == 0 ? "s" : ""
191- } : **${ count } **\n` +
192- `:repeat: Last Update: <t:${
193- ( new Date ( session . lastUpdate ) . getTime ( ) / 1000 ) | 0
194- } :R\n` +
195- `:file_cabinet: Server up since: <t:${ ( new Date ( session . sessionBeginTime ) . getTime ( ) / 1000 ) | 0 } :R>` ;
196-
197- container . addSectionComponents ( section =>
198- section
199- . addTextDisplayComponents ( text => text . setContent ( desc ) )
200- . setThumbnailAccessory ( accessory =>
201- accessory
202- . setURL ( "attachment://thumb.png" )
203- . setDescription ( session . tags . join ( ) )
204- )
205- ) ;
181+ server . status . players . forEach (
182+ async u => ( u . avatar = await resonite . GetResoniteUserAvatarURL ( u . ip ) )
183+ ) ;
206184
207- if ( count > 0 ) {
208- container . addSeparatorComponents ( ) ;
209- container . addMediaGalleryComponents ( gallery =>
210- gallery . addItems ( item => item . setURL ( "attachment://players.png" ) )
185+ const container = new Discord . ContainerBuilder ( ) ;
186+
187+ container . setAccentColor ( 4796260 ) ;
188+
189+ const desc =
190+ `### ${ session . tags [ 0 ] ?? session . name } \n` +
191+ `:busts_in_silhouette: Player${
192+ count > 1 || count == 0 ? "s" : ""
193+ } : **${ count } **\n` +
194+ `:repeat: Last Update: <t:${
195+ ( new Date ( session . lastUpdate ) . getTime ( ) / 1000 ) | 0
196+ } :R\n` +
197+ `:file_cabinet: Server up since: <t:${ ( new Date ( session . sessionBeginTime ) . getTime ( ) / 1000 ) | 0 } :R>` ;
198+
199+ container . addSectionComponents ( section =>
200+ section
201+ . addTextDisplayComponents ( text => text . setContent ( desc ) )
202+ . setThumbnailAccessory ( accessory =>
203+ accessory
204+ . setURL ( "attachment://thumb.png" )
205+ . setDescription ( session . tags . join ( ) )
206+ )
211207 ) ;
212- }
213208
214- container . addActionRowComponents ( row =>
215- row . setComponents (
216- new Discord . ButtonBuilder ( )
217- . setStyle ( Discord . ButtonStyle . Link )
218- . setLabel ( "Connect" )
219- . setURL ( `https://go.resonite.com/session/${ session . sessionId } ` )
220- )
221- ) ;
209+ if ( count > 0 ) {
210+ container . addSeparatorComponents ( ) ;
211+ container . addMediaGalleryComponents ( gallery =>
212+ gallery . addItems ( item => item . setURL ( "attachment://players.png" ) )
213+ ) ;
214+ }
215+
216+ container . addActionRowComponents ( row =>
217+ row . setComponents (
218+ new Discord . ButtonBuilder ( )
219+ . setStyle ( Discord . ButtonStyle . Link )
220+ . setLabel ( "Connect" )
221+ . setURL ( `https://go.resonite.com/session/${ session . sessionId } ` )
222+ )
223+ ) ;
222224
223- container . addSectionComponents ( ) ;
225+ container . addSectionComponents ( ) ;
224226
225- container . addTextDisplayComponents ( text =>
226- text . setContent ( "-# metastruct @ Resonite" )
227- ) ;
227+ container . addTextDisplayComponents ( text =>
228+ text . setContent ( "-# metastruct @ Resonite" )
229+ ) ;
228230
229- try {
230231 const html = pug . renderFile (
231232 path . join ( process . cwd ( ) , "resources/game-server-status/view.pug" ) ,
232233 {
@@ -250,40 +251,36 @@ export default class GameBridge extends Service {
250251 . filter ( ( msg : Discord . Message ) => msg . author . id == discord . user ?. id )
251252 . first ( ) ;
252253 if ( message ) {
253- await message
254- . edit ( {
255- components : [ container ] ,
256- files : [
257- new Discord . AttachmentBuilder (
258- server . playerListImage
259- ) . setName ( "players.png" ) ,
260- new Discord . AttachmentBuilder ( mapThumbnail ) . setName (
261- "thumb.png"
262- ) ,
263- ] ,
264- flags : Discord . MessageFlags . IsComponentsV2 ,
265- } )
266- . catch ( ) ;
254+ await message . edit ( {
255+ components : [ container ] ,
256+ files : [
257+ new Discord . AttachmentBuilder ( server . playerListImage ) . setName (
258+ "players.png"
259+ ) ,
260+ new Discord . AttachmentBuilder ( mapThumbnail ) . setName (
261+ "thumb.png"
262+ ) ,
263+ ] ,
264+ flags : Discord . MessageFlags . IsComponentsV2 ,
265+ } ) ;
267266 } else {
268- channel
269- . send ( {
270- components : [ container ] ,
271- files : [
272- new Discord . AttachmentBuilder (
273- server . playerListImage
274- ) . setName ( "players.png" ) ,
275- new Discord . AttachmentBuilder ( mapThumbnail ) . setName (
276- "thumb.png"
277- ) ,
278- ] ,
279- flags : Discord . MessageFlags . IsComponentsV2 ,
280- } )
281- . catch ( ) ;
267+ channel . send ( {
268+ components : [ container ] ,
269+ files : [
270+ new Discord . AttachmentBuilder ( server . playerListImage ) . setName (
271+ "players.png"
272+ ) ,
273+ new Discord . AttachmentBuilder ( mapThumbnail ) . setName (
274+ "thumb.png"
275+ ) ,
276+ ] ,
277+ flags : Discord . MessageFlags . IsComponentsV2 ,
278+ } ) ;
282279 }
283- } catch ( error ) {
284- console . error ( "GameBridge:Resonite" , error ) ;
285280 }
286281 }
282+ } catch ( error ) {
283+ console . log ( "GameBridge:Resonite" , error ) ;
287284 }
288285 } ) ;
289286
0 commit comments