diff --git a/src/gateway/listener/listener.ts b/src/gateway/listener/listener.ts index b51b372..fc28211 100644 --- a/src/gateway/listener/listener.ts +++ b/src/gateway/listener/listener.ts @@ -28,6 +28,7 @@ Relationship, Message, NewUrlUserSignatureData, + GuildMemberAddEvent, } from "@spacebar/util"; import { OPCODES } from "../util/Constants"; import { Send } from "../util/Send"; @@ -35,7 +36,8 @@ import { Channel as AMQChannel } from "amqplib"; import { Recipient } from "@spacebar/util"; import * as console from "node:console"; -import { RelationshipType } from "@spacebar/schemas" +import { PublicMember, RelationshipType } from "@spacebar/schemas" +import { bgRedBright } from "picocolors"; // TODO: close connection on Invalidated Token // TODO: check intent @@ -305,6 +307,13 @@ break; } + if(event === "GUILD_MEMBER_ADD") { + if ((data as PublicMember).roles === undefined || (data as PublicMember).roles === null) { + console.log(bgRedBright("[Gateway]"), "[GUILD_MEMBER_ADD] roles is undefined, setting to empty array!"); + (data as PublicMember).roles = []; + } + } + await Send(this, { op: OPCODES.Dispatch, t: event, diff --git a/src/util/entities/Member.ts b/src/util/entities/Member.ts index 404d2ce..99aa19e 100644 --- a/src/util/entities/Member.ts +++ b/src/util/entities/Member.ts @@ -382,6 +382,7 @@ guild_id, }, guild_id, + origin: "util/entities/Member.ts:377/addToGuild(user_id, guild_id)", } as GuildMemberAddEvent), emitEvent({ event: "GUILD_CREATE", diff --git a/src/util/interfaces/Event.ts b/src/util/interfaces/Event.ts index ac0d544..b70b92f 100644 --- a/src/util/interfaces/Event.ts +++ b/src/util/interfaces/Event.ts @@ -48,6 +48,7 @@ event: EVENT; // eslint-disable-next-line @typescript-eslint/no-explicit-any data?: any; + origin?: string; } // ! Custom Events that shouldn't get sent to the client but processed by the server