From 0ed7a8af77f2e4a2733cef2e61250e1fae032b8d Mon Sep 17 00:00:00 2001 From: dank074 Date: Sat, 12 Apr 2025 05:01:37 -0500 Subject: [PATCH] add ophandler for GuildSubscriptionsBulk message --- assets/schemas.json | Bin 25538096 -> 26102937 bytes src/gateway/opcodes/GuildSubscriptionsBulk.ts | 24 ++++++++++++++++++ src/gateway/opcodes/index.ts | 2 ++ .../schemas/GuildSubscriptionsBulkSchema.ts | 11 ++++++++ src/util/schemas/LazyRequestSchema.ts | 2 ++ src/util/schemas/index.ts | 1 + 6 files changed, 40 insertions(+) create mode 100644 src/gateway/opcodes/GuildSubscriptionsBulk.ts create mode 100644 src/util/schemas/GuildSubscriptionsBulkSchema.ts diff --git a/assets/schemas.json b/assets/schemas.json index 7af779535068048987981de23aae8abc93fe91ae..ef00cc31a03b2bbbed7787bb36e74a535263f7d0 100755 GIT binary patch delta 34351 zcmds=|5MZV9mnrYAV5q=!q)%_K@eP!uiN-mS#ydCl7h=RM9Gk|A}E4^fI90JJlj$> zE8)22rIY$eXR-7Pl>z#`GW8Q+l~D(Tf~-Zyf}Pk=QCE9-UhUjFiBPY%zu@&l?)Y%Y z`|`;1^?JQu@7McV`wf%$wG2XA|vDKyzO6!(GK$}19yjE3-(N}hi;3TG5Xgh#*j}ia$O7#^T5b8 z*AhMwgwVep{WKCV>eYLB`4<@D{9tCZ0HI!xJ9k7*eMVzUXyNYsCSHLMjwXGTID(NY z)$nr*#t0JqeKN)oCfxg-*^Nr;()uwDTP(XZ*94$`u5qE-7YLS-kPtA-%49I8D|Dx< z152R;Xr(Z^q<`sJqXQ`ewMNBTr@(xI={@i zjxncr{5U5OBUjPuziday1&m8fb9`TX4dZA_$mJDc{1DJcy@XzFF7L-E8iVV^ z$kp6l^)5PNjI2PIMlB!Qn~N^Yw`u90Htx?s=vly)=lRk#QwOdfgrn(Yhi&MLk*y(O zbIa=yayjSBZ`8i>DMn-bTvRuSvHJTJ)NjP7S7q3-UW8oEY2}?C9FIkpP_Z2zjydz; zl*a4f_;M>J+|+PWUno|%>sw7(7&|tHSr*Km(4h?|clVq^3wQp=>6Hkrk}|8DLu!y- zbeZ3oe1vfH-07A9jPajwEu!ZWTHiqEY2Y6#meE%(zJCkh3=^>BA9DKPnzjQ7m7|-j z=T2ediYn;1gK)JKU2~`FF2c1Ew0IxwL0CPouK^L#LbvV?jH0b-yjY4c2e}c%r(@*G zey3*=qa7B+|0QZMzM28;;;+mg%&4d}b6^;ue*xoiqvM}lML94l(hVh{%M@F+oJHV8 z+^BWhnkTgH*AbcwnvGynT~&a2tt+!q`&JZneVPn*s~cw_);ln`N$nN`AMFiRI{p~4 zdM<(ZgWh5GlY-dDb+4Fh>!1G+Jq0JKX(nQza(5enU0mfPFA zkk%OE0@m-W?jTEy@cr?pjPHao5uScZ4o?(<#Xo+Fy26KLQVR{=-6;;?;y0I&5Rj!e zDnK71h;lwt_S{Y2@SZ>s*djdro&Rl$_mFXM>vs_ksQsJr|D!p!=BQ^9Ux1-q8Nsxi zeOq+>N~@N>_uA+gbn%yQ9g&Xf(bZTMTsiuWpO0fyEh+l?ml(Nny8dw!9aoE%vl>+sz)py?reR8&ko|*EykN4Zt|fc0+Jqqt@_-meORm_L5NbnAbILkR8pPpyuYBei3JTAR@)owzj{6Q0v##Yy#@c zw1IS?GerhguirzyL8zFsvxe9~xpQU>j_3O>v2Ty$%&h-T<&>iWB7@uvX@LD!HF=Zq zlsA|wX$aW5#ePt$bPeG{zu!l0W7IsQ?q$-55X^B_22bRNP*#liH~vsd@({|#`$Zfj N_^zrrt#uI{{2!x@+3NrR delta 11262 zcmb`Ne^^uJ6~~`9=8_l^jFBH9gb)Q`7WpN^N&$n;LSaKOTC7emB0@!~Vbs<-K`d4$ zJi-Por)u%KO2;D=h%kNUy7Hp*hqe~dQeed@)Xw?~k!q`5>vZ?#+UfrF@CVNmlAF){ zo*(af&U?q>d|9h@^!V+FJQyteh0w@@zv$Ib^P<6%D&9O4L6lIsN&P8bI-E~d z)5PcQv=Y8Fe30aUyXg$#r_l8g=PSHW z@*NZAleJ(s-!p*LkYK8bRBHLEn?ZyF$1T-E?+pd$i5wC)Ob+_rbzu5?sQ-iiSTLum zt(Tbv?0DXMV;R}b+f(!;5S+^vOyg~Z6N$0fsNmD}HWC1~-zxpV{(&M&`T%S{BnLmZ z&{P{XP5K@T=@j9$J#%M3`qsy$z)+T&6R&lH^kKCD_`F^-tdIK81VaaA`cw-7wY_Rx z?V_9jsEQ8pcljZrRY~T7sfY80jtiwGaHQsFVc!#6fcPn8M|{gs=^%xoIM00&U7uup z8O5SPSl`DHy7DF~Q3Mb+FfF}tJMg#xvu{vV5ezsX0zpL!jMKVNONAyM3LS?Kl4_-S z@!_=yLiUN;A4Y<=e^ztD!WLesyo0cS-= z{_nSif6`8a0?N16c~VYK-b%vn)rO|Dt~5Q}ieVk=E^mUrN+ z@U`tahpU3)ZdNV9X~=!K`UHv~74%r$YvHK;7BTLiO;>xtAIs|>=cU7k?P9WUlG^NM z1baxK4kDYmVDaz)&5L~v4;@OJH~ZymD9N3?rUv0FT#Yu)1Fi*VJ)zDhGturg*oNB9 zB^z_*?&%D`R0S6Xu5Oll(4;eO#39n}=RT@>Ex&vWqId7dKaT~bpu9dFZxqDk29BpE z3=NmYz_NE553U>oOxP2L-ouBU%6gh>a1P21QE2JmRfjL2@|nJQqiq*T2#qT{x)(<{ zKk3*o>L@`68s8Z~^{n*s`1a$d9a!vo-DpF1M=MUq>Xn_(qVkk}G5UT2iU5{|Pn6(c zQT*Qy++|U?=3e|zcL0%Br+K>e-;tP5z3auf7+<67Mb`=agP9j(#moI3%(uDLUE8*^OA`K6l(}_Q%&)eY#i940v&>g}pfvj_0K41Zv8|~lL7+`w5t~a1CbbI}` z7jcA_qQ5(fBV?brHHagmE&Ml^D*Yo2$`_9t?7S5C+oloavcD`%H$ z#*uy$hn=3{MsTrZM-D5=Lex=9+J>0nNq3SEgejD4)p-s10_73@Y>R=Yn6*$#dQqTv zqbHHCPy{B{EL_Smy-81wp*le(Is~_YFfr{<;e7GdCjq1l*8;c-1ba4X3Neob==G5x za%UuH%zno$iK+hvI$xbY@?t~-iEq0C{8wqKG6 zlxx|A(V1kxj0*6_<*{TL&Ye+)c=9$5ap~Y}EP{`nL-yiSB%S&dDa1vjb7>M8Kp~_q zku_a;ir@xJ5(pY!)NA#@BS*(z)hrY{izXqzmPJ7VEK%{0ZeY*Swg0S+^ZoDcIbwog@P# Sh1LI~f?ysom|>NvivJ6bD#i5x diff --git a/src/gateway/opcodes/GuildSubscriptionsBulk.ts b/src/gateway/opcodes/GuildSubscriptionsBulk.ts new file mode 100644 index 00000000..f0a431c8 --- /dev/null +++ b/src/gateway/opcodes/GuildSubscriptionsBulk.ts @@ -0,0 +1,24 @@ +import { WebSocket, Payload } from "@spacebar/gateway"; +import { onLazyRequest } from "./LazyRequest"; +import { GuildSubscriptionsBulkSchema } from "@spacebar/util"; +import { check } from "./instanceOf"; + +export async function onGuildSubscriptionsBulk( + this: WebSocket, + payload: Payload, +) { + check.call(this, GuildSubscriptionsBulkSchema, payload.d); + const body = payload.d as GuildSubscriptionsBulkSchema; + + let guildId: keyof GuildSubscriptionsBulkSchema["subscriptions"]; + + for (guildId in body.subscriptions) { + await onLazyRequest.call(this, { + ...payload, + d: { + guild_id: guildId, + ...body.subscriptions[guildId], + }, + }); + } +} diff --git a/src/gateway/opcodes/index.ts b/src/gateway/opcodes/index.ts index cf2338e6..e925134d 100644 --- a/src/gateway/opcodes/index.ts +++ b/src/gateway/opcodes/index.ts @@ -24,6 +24,7 @@ import { onPresenceUpdate } from "./PresenceUpdate"; import { onRequestGuildMembers } from "./RequestGuildMembers"; import { onResume } from "./Resume"; import { onVoiceStateUpdate } from "./VoiceStateUpdate"; +import { onGuildSubscriptionsBulk } from "./GuildSubscriptionsBulk"; export type OPCodeHandler = (this: WebSocket, data: Payload) => unknown; @@ -40,4 +41,5 @@ export default { // 10: Hello // 13: Dm_update 14: onLazyRequest, + 37: onGuildSubscriptionsBulk, } as { [key: number]: OPCodeHandler }; diff --git a/src/util/schemas/GuildSubscriptionsBulkSchema.ts b/src/util/schemas/GuildSubscriptionsBulkSchema.ts new file mode 100644 index 00000000..86f00a3d --- /dev/null +++ b/src/util/schemas/GuildSubscriptionsBulkSchema.ts @@ -0,0 +1,11 @@ +import { LazyRequestSchema } from "./LazyRequestSchema"; + +export interface GuildSubscriptionsBulkSchema { + subscriptions: { [key: string]: GuildSubscriptionSchema }; +} + +export type GuildSubscriptionSchema = Omit; + +export const GuildSubscriptionsBulkSchema = { + $subscriptions: Object, +}; diff --git a/src/util/schemas/LazyRequestSchema.ts b/src/util/schemas/LazyRequestSchema.ts index ee52d66c..ca07d37b 100644 --- a/src/util/schemas/LazyRequestSchema.ts +++ b/src/util/schemas/LazyRequestSchema.ts @@ -30,6 +30,7 @@ export interface LazyRequestSchema { threads?: boolean; typing?: true; members?: string[]; + member_updates?: boolean; thread_member_lists?: unknown[]; } @@ -40,5 +41,6 @@ export const LazyRequestSchema = { $typing: Boolean, $threads: Boolean, $members: [] as string[], + $member_updates: Boolean, $thread_member_lists: [] as unknown[], }; diff --git a/src/util/schemas/index.ts b/src/util/schemas/index.ts index ca473dce..f2d5844b 100644 --- a/src/util/schemas/index.ts +++ b/src/util/schemas/index.ts @@ -41,6 +41,7 @@ export * from "./EmojiModifySchema"; export * from "./ForgotPasswordSchema"; export * from "./GatewayPayloadSchema"; export * from "./GuildCreateSchema"; +export * from "./GuildSubscriptionsBulkSchema"; export * from "./GuildTemplateCreateSchema"; export * from "./GuildUpdateSchema"; export * from "./GuildUpdateWelcomeScreenSchema";