|
1 | 1 | import type { Server as SocketIOServer } from 'socket.io'; |
| 2 | +import type { User, GuildScheduledEvent } from 'discord.js'; |
2 | 3 | import { discordClient } from '../client.js'; |
3 | 4 | import { |
4 | 5 | serializeMessage, |
@@ -267,7 +268,8 @@ export function registerDiscordEvents(): void { |
267 | 268 |
|
268 | 269 | discordClient.on('userUpdate', (oldUser, newUser) => { |
269 | 270 | // oldUser may be partial, so we only serialize if not partial |
270 | | - const oldSerialized = oldUser.partial ? null : serializeUser(oldUser as any); |
| 271 | + // Type assertion is safe here because we've checked partial === false |
| 272 | + const oldSerialized = oldUser.partial ? null : serializeUser(oldUser as User); |
271 | 273 | broadcastEvent({ |
272 | 274 | event: 'userUpdate', |
273 | 275 | guildId: null, |
@@ -605,25 +607,40 @@ export function registerDiscordEvents(): void { |
605 | 607 |
|
606 | 608 | discordClient.on('guildScheduledEventUpdate', (oldEvent, newEvent) => { |
607 | 609 | // oldEvent may be partial |
| 610 | + // Type assertions are safe here because we've checked partial === false |
608 | 611 | const oldSerialized = oldEvent && !oldEvent.partial |
609 | | - ? serializeScheduledEvent(oldEvent as any) |
| 612 | + ? serializeScheduledEvent(oldEvent as GuildScheduledEvent) |
610 | 613 | : null; |
611 | 614 | broadcastEvent({ |
612 | 615 | event: 'guildScheduledEventUpdate', |
613 | 616 | guildId: newEvent.guildId, |
614 | 617 | data: { |
615 | 618 | old: oldSerialized, |
616 | | - new: serializeScheduledEvent(newEvent as any), |
| 619 | + new: serializeScheduledEvent(newEvent as GuildScheduledEvent), |
617 | 620 | }, |
618 | 621 | }); |
619 | 622 | }); |
620 | 623 |
|
621 | 624 | discordClient.on('guildScheduledEventDelete', (event) => { |
622 | | - // event may be partial, but we still want to broadcast the deletion |
| 625 | + // For partial events, only broadcast minimal deletion info |
| 626 | + // Full serialization would fail as many properties are undefined |
| 627 | + if (event.partial) { |
| 628 | + broadcastEvent({ |
| 629 | + event: 'guildScheduledEventDelete', |
| 630 | + guildId: event.guildId, |
| 631 | + data: { |
| 632 | + id: event.id, |
| 633 | + guildId: event.guildId, |
| 634 | + partial: true, |
| 635 | + }, |
| 636 | + }); |
| 637 | + return; |
| 638 | + } |
| 639 | + |
623 | 640 | broadcastEvent({ |
624 | 641 | event: 'guildScheduledEventDelete', |
625 | 642 | guildId: event.guildId, |
626 | | - data: serializeScheduledEvent(event as any), |
| 643 | + data: serializeScheduledEvent(event as GuildScheduledEvent), |
627 | 644 | }); |
628 | 645 | }); |
629 | 646 |
|
|
0 commit comments