From 5a20924477eae54c7353c0aecf7a56f4e052e3b5 Mon Sep 17 00:00:00 2001 From: aintDatCap Date: Wed, 24 Jul 2024 19:06:12 +0200 Subject: [PATCH 1/7] Implemented proposal described in the issue #1122 --- src/api/routes/guilds/#guild_id/bulk-ban.ts | 5 ++++- .../types/subconfigurations/limits/GlobalRateLimits.ts | 5 +++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/src/api/routes/guilds/#guild_id/bulk-ban.ts b/src/api/routes/guilds/#guild_id/bulk-ban.ts index f544103a..10505282 100644 --- a/src/api/routes/guilds/#guild_id/bulk-ban.ts +++ b/src/api/routes/guilds/#guild_id/bulk-ban.ts @@ -27,6 +27,7 @@ import { } from "@spacebar/util"; import { Request, Response, Router } from "express"; import { HTTPError } from "lambert-server"; +import { Config } from "@spacebar/util"; const router: Router = Router(); @@ -52,7 +53,9 @@ router.post( const userIds: Array = req.body.user_ids; if (!userIds) throw new HTTPError("The user_ids array is missing", 400); - if (userIds.length > 200) + + const bulkBanLimit = Config.get().limits.absoluteRate.bulkBan; + if (bulkBanLimit.enabled && userIds.length > bulkBanLimit.limit) throw new HTTPError( "The user_ids array must be between 1 and 200 in length", 400, diff --git a/src/util/config/types/subconfigurations/limits/GlobalRateLimits.ts b/src/util/config/types/subconfigurations/limits/GlobalRateLimits.ts index 835d7193..5a8a0d44 100644 --- a/src/util/config/types/subconfigurations/limits/GlobalRateLimits.ts +++ b/src/util/config/types/subconfigurations/limits/GlobalRateLimits.ts @@ -27,6 +27,11 @@ export class GlobalRateLimits { window: 60 * 1000, enabled: true, }; + bulkBan: GlobalRateLimit = { + limit: 200, + window: 0, + enabled: true, + }; } export class GlobalRateLimit { From e4a14d659a8c27d222d06711e1ba23b43d3ad0e2 Mon Sep 17 00:00:00 2001 From: aintDatCap Date: Wed, 24 Jul 2024 19:22:40 +0200 Subject: [PATCH 2/7] Refactored max limit for bulk-bans from AbsoluteRateLimits to GuildLimits as suggested by @devtomatocake --- assets/schemas.json | Bin 19589397 -> 19613632 bytes src/api/routes/guilds/#guild_id/bulk-ban.ts | 3 +-- .../limits/GlobalRateLimits.ts | 5 ----- .../subconfigurations/limits/GuildLimits.ts | 1 + 4 files changed, 2 insertions(+), 7 deletions(-) diff --git a/assets/schemas.json b/assets/schemas.json index 00f86b3604f19db3f1eb55db5e1432de30d7d2a5..2deec550758dc241fc8983fcf7a427b88c248967 100644 GIT binary patch delta 9149 zcmbuDeN@zC7RS$n0}LQAAcH95fJnqhgc7TU2&f2A2BHNfj$)x$E$Aj_yT(fa-U{KT zqCC3Aj;ui{i{-9zM@47SR$H`~6+`W1Wld!?FPBIQJ?%>toNqC`GhqsB7 z5%l_L2p{bA^X=paY{>TAkUgq3+pmF>L|wM8GhA!%BeZy}!M}=Q0rvO!6Qgl|Pe3t8 zK<;dAa)vdLV~DZ1CNfZtV{~*#CA}yR(u;JMUNr77-%Hw&agcUIk7-AO#)ojdNK$cu z!>+-^cs%SHV$w6DV8^@=Vgl}%7g{=rBe1YJ6c#o=gbSO)nmL7q*>}Q-hjI3u@Gn>? z7~>3JjGKtYxQLH9!xWa3M-Y$TlJdwhRtoylk)S{QDC$o~J$ zC$gU536#`7110s(Vo7~w1k1to%b9Tfau!~{ywJ)M2!9T)hcCkG;n{mRvq)-EpI5>8 zRoTR1Jip5L2*<{tiacEG?kTr*t$0$F?kiT;mB-RfakYMew7R>GmODRl@|QV9d3u=` zKW(gBof7D^t$V6Q)-+AfN!#7+dReynq_5mGvLO7wk3KT0VRle$nX_B1HBBpbdIW1^ zyl+CV^nP6%By)b=Jz3hex=nR_3Y6W2d);MU#F&Y--81x1U^Ws`b7#YXy;q)mI+T-0%`EH@rNBm5j-p?+o1qFB8AT?t=W%;jNfM?=nCtL;;%2tG;Db!(pScV|8W6 z?+$jna+kC2$Qf4^wJdR&6DBvMJpM|p#-|X1^PPwh7@V();%v&Wv96FP!i{xne_@q3 zA>{XJuzj_bSckT+UX9|Y0I3jvz=V+XZ*v4pMiPrQcyD~sRa$iStRVxj~u zwUq8)37GGcg85Dvn(w@x5zHCysqt?>YJ54S##aP!7FO6@Q9)GV?urdztQ5T3H-J|= zpjZ2wdszYl-fzKx_uDw&UG*U=1$$-{*fTexJ+pcrYX$5wRYRAl2D?nk!>kl&s=JDsXO=r4GaDn>e2Z)1Mzr3}OWh0}d6*5{7Gg{2kIAcTJ zsywQe$7ZUurqvDJ;x$=1OErcLyOE}yueyjivgQ{N;CPgeCdB9lKa}JKj2%22*RKA7 zPQvyPf&Y7|Nx$Uyk)DntnKEsoi@z-Xa+-gw=M-OAuk#o!Km90Rlr%mNT9b*?o$IPy zykvEGvIgS%&BP&$>pwi5b#%elBY?4Oh_Oe1WNo!n2e?&v3~yCh4znEC+bv*kx1zoM zBir8$A8G#}H|+4PZx0>L-$-L z=2#gNx!HRGZuVZpo4sF@vPD{>zl7H4udp@x>vbFv$Y1w0@h{9@cL`Ynxowvqx2+p< z+y33c637sjAwztF8RE(ZEP=%2E0CCc6%&)M@dTo(u0d2)4@Onl+gJ`FY<7sSUB?L9 zjhgX{nGQb%eoNfMp8|V%DcEy*!Jcyq?K$5yvr_16{0=%B`>?a|Hm{Ae%z*XAf6#j4 z&Uns+z~I6OhM4b(AJ7of-~Sk=l1sPr!_qB3;?gYxdpLzK_4W$k4)f0s5I^Dk^LHCL zGB8#5Gw};f)!p0A5g01Rq-FPD(z5$FY1xAV92E#{dQcVGBrJq@i*qiR0`JNw4=qwNjJ*&QxVnRgj<%EG(O<#*5E6l1k&*@q$8#ur!{XAeM1bla9AC zWo|&Ipzx5e%nb+=6FEXkt1(Pacvx6kjp2fI`KIW0g$oJ>VbSfHD2@%^N20;Wz4%vZ CG^BI@ delta 3734 zcmZvfdpy-?9>-sg`<-*hxL-<2XGNx{JtK5QJ5;2kmM)9kQ??AFDW@oWw@nTm_1ol9 zskTX>Azz!}XjW=ts#Q%zwVItx#&+9PN-pzYUY+N8nLplNm(TOPJkR&JoYSZ{r+=`m zOg}AyRBM#_3pYRUdWSE4y%xJcp-h9KiG?z)O?Iq6s!PAx z@18B|5fh*fF#!e`6JU7Ekr4zc=mN<$q!=N|HjZKAjj8Ky8N<3;Cb;gF>2WUTfVCM6 zSc`DLT6~KWuEvPrYK%Evjj=e!#)I{zEhrOk{b|cw&ZFnKCGY#qBGdsw+@ROVlQIK) zoxFm_W)5`wP(G&HXy$`(rf%WQk5WfruSbY24A;-3%);S%?;x8GLuj}_O&`i^4Ah*n zQ1U?tbOVT-L-{pAq%>8%!c-V6ky1Xv!4luK>dNT;4eRoy%*C)SzdW@E6&||#Qv&dz z`@Bp}h)S9VQAzVLDrvzocALVllthaw<)XeCAut!m^1tA&wZwQx0BEsQ$DEn;1E6x3y} z!Mg0Vo~(y(DA7g)uiMsAev7Z$qUBC(%`%4=kU6YFnZtS&w-G1BuZKzT8*ozm#_4Q4 z2rl19`5gwA$F^__X3`f6CVg>e(idMimCaEa{Cg-3{sWc<%e>i8LTJZkZMd5&qin*v zxtn)!y`(CHb|heE#~*vxL}PBVUADk%m#sM4C9$9Df+RT+B*~wlBspn5n+@XXk|@a- zSNHhM zrkGj4<=!j`;N{*w@l}LN_d>Yz&loPvNEfeN}%*1DgPgJrD> zCpH;0iE}A=*d#u1fD`ET3Zaoo42{g!WcxUJH3PkxDF< zB732+b-$1DhWP?v=%vU;nWpWo3|VD0@>9qeAY;Eg+NWbT_Mf5|HbUAuEeGY6*JeV) zA(8FqU&7I=_9DUWgrhAT<)AbZMF>MD94&>xmG+h;)8CmAb77~*)>3%bKf@gMd;X1b z5%+u6eWrem=+*l!xsLKRzDus}2)8JUhSy#>ew|- zwA|JKmfIen<+g_@tO!~44=Il@tNvfe3ErBW;H~)>y*0l-#|aMtzlR5b|HcP_KU8o+ zM$QkAk@FwS$a%sE0$l|y@Vxzm(uJP4pVo42kFC4mvGtGm*t#djnQcaVY!Af8{ukq8 zpKIA3$(BLu)*hll>g%fpI$5O<{Rx{YI-lE zroYD2^fzxlX3LOuz5!WhAIdu4e#vDsc6|rNuKj52`kt@vg6ut9kPYAk+2DE3gC>IL z^FtVYe)wxnu;?4!XVFJg6tb5+*aA&rpg8KML8#Frs-u2dgqxaTQKlB5Mw_S>W$KW_ zY*@v;YdVA)U81^oO^@thPlF;{tWT&hAgXY&A?an0kRl+`kWgbpQ~{C3JE9V= zvL_j8EznJoTWn9LaUiPPVn@P!mS5~P_JKp#xkfx;^ad3kndI7!+>xqB)X76bxT(}L z5#-ip<{;6ULYayZEjKA!mO#HJXqPO1;z%roRE-orMf3EDgqlf2)jZvW=&DQk`OAT# zHOYlgGnuGblU&I(^?=20iWe7M2{luQ>cz#W#Ff)bh#OIukZD9^LL{U?t@*oY7|4GD D3FNyg diff --git a/src/api/routes/guilds/#guild_id/bulk-ban.ts b/src/api/routes/guilds/#guild_id/bulk-ban.ts index 10505282..e5f7a0d8 100644 --- a/src/api/routes/guilds/#guild_id/bulk-ban.ts +++ b/src/api/routes/guilds/#guild_id/bulk-ban.ts @@ -54,8 +54,7 @@ router.post( const userIds: Array = req.body.user_ids; if (!userIds) throw new HTTPError("The user_ids array is missing", 400); - const bulkBanLimit = Config.get().limits.absoluteRate.bulkBan; - if (bulkBanLimit.enabled && userIds.length > bulkBanLimit.limit) + if (userIds.length > Config.get().limits.guild.maxBulkBanUsers) throw new HTTPError( "The user_ids array must be between 1 and 200 in length", 400, diff --git a/src/util/config/types/subconfigurations/limits/GlobalRateLimits.ts b/src/util/config/types/subconfigurations/limits/GlobalRateLimits.ts index 5a8a0d44..835d7193 100644 --- a/src/util/config/types/subconfigurations/limits/GlobalRateLimits.ts +++ b/src/util/config/types/subconfigurations/limits/GlobalRateLimits.ts @@ -27,11 +27,6 @@ export class GlobalRateLimits { window: 60 * 1000, enabled: true, }; - bulkBan: GlobalRateLimit = { - limit: 200, - window: 0, - enabled: true, - }; } export class GlobalRateLimit { diff --git a/src/util/config/types/subconfigurations/limits/GuildLimits.ts b/src/util/config/types/subconfigurations/limits/GuildLimits.ts index b64d9485..e77cf424 100644 --- a/src/util/config/types/subconfigurations/limits/GuildLimits.ts +++ b/src/util/config/types/subconfigurations/limits/GuildLimits.ts @@ -21,5 +21,6 @@ export class GuildLimits { maxEmojis: number = 2000; maxMembers: number = 25000000; maxChannels: number = 65535; + maxBulkBanUsers: number = 200; maxChannelsInCategory: number = 65535; } From 4e0ac5274c041ac63ab3c38d71fb3f726fd27647 Mon Sep 17 00:00:00 2001 From: aintDatCap Date: Wed, 24 Jul 2024 20:07:08 +0200 Subject: [PATCH 3/7] Updated the openapi schema --- assets/openapi.json | Bin 582218 -> 584496 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/assets/openapi.json b/assets/openapi.json index 2788cdb08bb2d9d7ee2a458cbee2a0f133cee203..6e719c2d9b07c292744063523b4a26cf93c3a34b 100644 GIT binary patch delta 548 zcmZvZO=uHQ6oq;B&D3co#z?dol3Mda7HZRKpe2YjF&kTyKo?pUB8eoZbPOX!T__l- z;6iMJPdo@B*}7^5iw_q<)CyLu?W(j1LZE_f#JX@J{*6V%f{U{`-{HdLdpQ%WEk*U9`gN zfT%WOBG(y!^^|WE*|&bwS1Bp22<_L~Gw00FOulq@3{NK6j@vsa&JqasQ3CgR$cLFY z$$vJ?!-D9FlN-qtGcXmWtzx{t13z|=E*_jUaHE@CSnMFb)O%?uz%%&*>?HFebc7-z zZN^Xz(J_?gSP}DI*l}*2E@96AZHIM*o4#=n3*vG#vUf}yIcgvs8`HJU1j2(!m@1#d>F>GltprKinfXK!A2d;7ZEj2pO6 z<>V$8+)8FjDxThD3GOA8ac&|JCg#nW^MC}2f`1Tb>ObOE4+XI*` zlub9d#HcxaeFP)t_W0vWzTyb}bRd7jbk1vxn$wb4__v*6TF$=Q`8m_m?E+_+-}8aU r4%W#NxVg5+Jz}054mKU+p~>rRE4Rm4vj8zG5VHX>`}R0%j!WwSlyGLA From b682f170b9e6156d7db66fc1527f451b734300db Mon Sep 17 00:00:00 2001 From: Cyber Date: Sun, 21 Jul 2024 20:00:14 +0200 Subject: [PATCH 4/7] fix: return an error on username change with no password --- src/api/routes/users/@me/index.ts | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/src/api/routes/users/@me/index.ts b/src/api/routes/users/@me/index.ts index ad11a428..95f572af 100644 --- a/src/api/routes/users/@me/index.ts +++ b/src/api/routes/users/@me/index.ts @@ -120,7 +120,7 @@ router.patch( if (!body.password) throw FieldErrors({ password: { - message: req.t("auth:register.INVALID_PASSWORD"), + message: req.t("auth:login.INVALID_PASSWORD"), code: "INVALID_PASSWORD", }, }); @@ -162,6 +162,15 @@ router.patch( } } + if (!body.password) { + throw FieldErrors({ + password: { + message: req.t("auth:login.INVALID_PASSWORD"), + code: "INVALID_PASSWORD", + }, + }); + } + if (body.discriminator) { if ( await User.findOne({ From f047f93b77f04a574380851cda5f361e6efb2310 Mon Sep 17 00:00:00 2001 From: Cyber Date: Thu, 25 Jul 2024 19:41:56 +0200 Subject: [PATCH 5/7] fix: check for password only if `username` is present in body --- src/api/routes/users/@me/index.ts | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/src/api/routes/users/@me/index.ts b/src/api/routes/users/@me/index.ts index 95f572af..cddc3a08 100644 --- a/src/api/routes/users/@me/index.ts +++ b/src/api/routes/users/@me/index.ts @@ -160,15 +160,15 @@ router.patch( }, }); } - } - if (!body.password) { - throw FieldErrors({ - password: { - message: req.t("auth:login.INVALID_PASSWORD"), - code: "INVALID_PASSWORD", - }, - }); + if (!body.password) { + throw FieldErrors({ + password: { + message: req.t("auth:login.INVALID_PASSWORD"), + code: "INVALID_PASSWORD", + }, + }); + } } if (body.discriminator) { From a887608d30a728e677b5a8595c695fc55788f89c Mon Sep 17 00:00:00 2001 From: TomatoCake <60300461+DEVTomatoCake@users.noreply.github.com> Date: Fri, 19 Jul 2024 15:09:02 +0200 Subject: [PATCH 6/7] Fix msg component typings --- assets/openapi.json | Bin 582218 -> 601458 bytes assets/schemas.json | Bin 19589397 -> 23000385 bytes src/util/entities/Message.ts | 77 +++++++++++++++++- src/util/schemas/MessageCreateSchema.ts | 4 +- .../responses/GuildMessagesSearchResponse.ts | 4 +- 5 files changed, 77 insertions(+), 8 deletions(-) diff --git a/assets/openapi.json b/assets/openapi.json index 2788cdb08bb2d9d7ee2a458cbee2a0f133cee203..f3ad32a91baffeb6a23de34cb69f65748e111e90 100644 GIT binary patch delta 3936 zcmeHKeN0=|71zD@y=NN;wL=2_AjUY5w8;W?+91*<#Q9o7+7JREt(Fk{Y#!joy!Wup z8rEn9X%cF?CWM=Dv^8moCN0|^TTMW7x~d)YBWjnfg{o3M=rUNhHL0`&(qz)QRoi{f z7;s6Y{<%q$Z0Y*m^YJ_9o^$Tczk6%>tt&Bgar1#Jfoe9W8yxpo+1W6p>-t zLRLfna>N@C?)R)&U%$Et##C+<#D{P(c>Zo!LCre~!1n^GPg+6Q$dU3`_<3r*myXpf zrK3?Nw`0bY6Ac#f06}y|Etp?lYUkYt2x3OEK z18p`fVc=bi?7EN^Ff1;`UPFx(RavrVXJNVE4v5iEkXpKJNP#_OWT&2YjPTPJkQE+z z5a;uXDz>#VoAxYiAw{IdP(%vCtNbPKbT=}?1OqbIRk*}Q&FeT`k!zGE z=}EC0%x8oG@NY!fS$jKFsbsT$^)+DGh?n$U%7?0PbQtdW0&6Y6foC6b>x}~a0(NG# z$6|`SRcU2#B`SWD5B@gJ1fE^QJts*$CCe-bz7rr3- zaI8{R+gahKfpP1od(LAoR9{DxP(6-JAY4UxFls{&KztAzSQ1Q&=7+9;5knMizq)5hwD3(`74-)MdZJqMB*2std%%1W2^yR^bM&|)Zvhf`_$8DBo#&8KNSdZ%z@}pa&r7T@ zMyGKu+?d9B)Un$NUz|d@s0@_vaVx<8Bf+6p!{D)|>nLL`!+JQwkFsgU^a|h~r&xyk zZ(}3<`D-(ai!%#UPP;DJpg$88vGgpV@zpNy-AfF#KX?G*&B#b%9V#6dQj^2ee3f&6 z{~2U8hQ*-NqJ$g4`yn|%M}K4Fw7z7L&*#kH*d{fJ?cvyN69-X0618W`g8sGl>YbqMSZCF^oo=DaA=5>JN%4Q$Z4 zSxs+*&fg=c_XJPBU*QB7Z*)?Ba6NeLaK*G!U6E{&;eY`2uY~!k7pSelqP?yr_NXVD zJw5lyCQcou5}zv0de$UvZBk^+D5n}ygQVA3SdyEmOZ+yd4&>lwfBDNeH++1CJg(t} zsXM45t(3QGKzH!%(U{Uo2W~r)B{FliFm^j47 z{BRF(K);NagZcwv`t_%1%_4a2Ho68qN6|sO%@QBnLBCy{X5FnlD0`^?vJ3j3BN?=( zw^-vO>p&gimxJdqbTWDS{o}=Y_M^}<9jLZ#`voV!oSh_R4 zrhs`oNWvi*ycKMisa+(j?PtN$PceCR$iugs*bd{Zq%`qKCH~Tg8gvplOA!mTM=QzV z#^PkD_71j%kq6@SxCAyGCGOr)3!U<>`6|iW2csLY(~x|>B`6fpTI#B)ha(Cy(m!n~ z0CNtmKmnMn0AHC!O91i*Vg+L5AA(D^*#$Tl$s$9HqA#rEM9y3^V7(<-~!1>5v` z?Ok@cU|3;9d5%#gnbABvV|<8c9mHTZnn^{i=QJq4u<>uj4W%gI0j49 zBcb^YTRE z)K$C>>kJI;zks!=8BI#VR0R@X*8%h$P48I(!O1@u(nLc->{{`aK2YAwgUJo^glYe-bB JHU8`6{{SaEmS6w? delta 516 zcmZvYKWGzi6vz4fxx4(T=7DF)Fh zDk47h4gR}H!4ML-;h9Z}I5@OHaFJq@sdOm4Hlswn20921pXKp=pZDc${TTTAxxacX z04rgO?%w7hfmTfJ!Y?Jwf{%|cl0DB0Jy?CsHFqd%rl4(GaEE#z-&9bY9|v0+Q0-IJ1!W{sW`dPo zZO6#J^hQAKN1~o&{R@;MEy7P1}y@U6hIq9SM=spHHbAfM_ze3i< A6aWAK diff --git a/assets/schemas.json b/assets/schemas.json index 00f86b3604f19db3f1eb55db5e1432de30d7d2a5..621a84b4476278260c1ca5e13cbce85cd24c1ed0 100644 GIT binary patch delta 300606 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 MUng9nM#bLrKiH2WO8@`> delta 18496 zcmdU%`BPI@6vyYrgq`pLO2Q5WwYUw43!oHGl&Xj*f`}{;$yh`zNEsDDYh-C%Fm05J z6n%=Q2$oWp9;D)v78UD;OFLBUs3SV1C^A~D&{q4B*pC0fJ^k$^H8gH^i@k9;oT@eNn9-J53Mbmw6+D-^ z=Y)9aV=PBg-7^noh*>r#QlejR)!F#gourUW^t}U!^Cp(h%xdr|>pj={-MA)pr!+3U>okWI3VP z%0Lwj3z)H0zbA#G1MfQc)6+g*Uj$vWr%D1b9aA=S8b)A5mU7fy&)6_Jk z%K0JHJ&-3+wWqf)&2Gz@0DB$`OV*fv-s3gq4v_cMBTT}c2t>iP%sEmtP}b?wMp*07 zvy3&t5)Djl^^Iokh{!Q%+$bG$N0Kyh9>MTd+q+q!~l(J1pUKE%!fi!wD=LiJMiFmNwoN|qx6j+YlA zb|MH{m=qS-j=`5NkI(oD!$j-8E7}I^eWTJam?Of(AP@yq+}uzE(;5(MEN5q^yY)9y z?e&dT^74pCj;;XCiH4PNO4=7^C8f)x@peFq68aDjQ$J~Z4*S`L&dN)OgAbfEh&a6skmQXJDjyXs-CdkSE zNqF%8BN0Q50@E{+qcEiK61?z5G(-S80Gu-<`Oykuz`gIWj+Wzg5kZol^ANbspM~h2I`XpaIdDE zZKnkcsr(TG42Upw82VC-qAV}DS%YB>-#l=8J%)R=*m7V7-5=gT(f{!L{=H!sCYF-t zUT)=wJJ!#YkA-A2sn6Km5;bLR%ZDuP02n=Xys?m)7fJ{t>mRYg4)Go4&7Wh zu${dq^nCAMH3%@2>eu_&W0+2agb%I~vKB+67@ra1E25+%6M;A;nx+;rl7)mO8v#c* zZ%y_i;0RR6$rlJX?EF25jMr*8Qh|V`?U_B`i*J?kX4>O8hY7kg>&;H{e(bOLm46_79K$+wUYSv564>OM$&*RBSP_ z6-w4kC&d_O&W1U<@Ev{clW6wR2C2*EdIla&}i;-|-uMg)_vU}zdtBA8-? roY8S)4gzba;Ydoz<`)nQ4dTLBMIyn_k0$hKlgMG_{={h{R)zln5. */ -import { Embed, MessageComponent, PollAnswer, PollMedia } from "@spacebar/util"; +import { ActionRowComponent, Embed, PollAnswer, PollMedia } from "@spacebar/util"; type Attachment = { id: string; @@ -54,7 +54,7 @@ export interface MessageCreateSchema { **/ attachments?: Attachment[]; sticker_ids?: string[]; - components?: MessageComponent[]; + components?: ActionRowComponent[]; // TODO: Fix TypeScript errors in src\api\util\handlers\Message.ts once this is enabled poll?: PollCreationSchema; enforce_nonce?: boolean; // For Discord compatibility, it's the default behavior here diff --git a/src/util/schemas/responses/GuildMessagesSearchResponse.ts b/src/util/schemas/responses/GuildMessagesSearchResponse.ts index 6121983e..ec41965b 100644 --- a/src/util/schemas/responses/GuildMessagesSearchResponse.ts +++ b/src/util/schemas/responses/GuildMessagesSearchResponse.ts @@ -17,9 +17,9 @@ */ import { + ActionRowComponent, Attachment, Embed, - MessageComponent, MessageType, Poll, PublicUser, @@ -42,7 +42,7 @@ export interface GuildMessagesSearchMessage { timestamp: string; edited_timestamp: string | null; flags: number; - components: MessageComponent[]; + components: ActionRowComponent[]; poll: Poll; hit: true; } From c41b4f6364f9a7e448830dcd5058d696a20f8ee6 Mon Sep 17 00:00:00 2001 From: TomatoCake <60300461+DEVTomatoCake@users.noreply.github.com> Date: Fri, 19 Jul 2024 15:13:27 +0200 Subject: [PATCH 7/7] prettier .-. --- src/util/entities/Message.ts | 14 ++++++++++++-- src/util/schemas/MessageCreateSchema.ts | 7 ++++++- 2 files changed, 18 insertions(+), 3 deletions(-) diff --git a/src/util/entities/Message.ts b/src/util/entities/Message.ts index ea3a3cc7..9ba6ff7e 100644 --- a/src/util/entities/Message.ts +++ b/src/util/entities/Message.ts @@ -253,7 +253,12 @@ export interface MessageComponent { export interface ActionRowComponent extends MessageComponent { type: MessageComponentType.ActionRow; - components: (ButtonComponent | StringSelectMenuComponent | SelectMenuComponent | TextInputComponent)[]; + components: ( + | ButtonComponent + | StringSelectMenuComponent + | SelectMenuComponent + | TextInputComponent + )[]; } export interface ButtonComponent extends MessageComponent { @@ -277,7 +282,12 @@ export enum ButtonStyle { } export interface SelectMenuComponent extends MessageComponent { - type: MessageComponentType.StringSelect | MessageComponentType.UserSelect | MessageComponentType.RoleSelect | MessageComponentType.MentionableSelect | MessageComponentType.ChannelSelect; + type: + | MessageComponentType.StringSelect + | MessageComponentType.UserSelect + | MessageComponentType.RoleSelect + | MessageComponentType.MentionableSelect + | MessageComponentType.ChannelSelect; custom_id: string; channel_types?: number[]; placeholder?: string; diff --git a/src/util/schemas/MessageCreateSchema.ts b/src/util/schemas/MessageCreateSchema.ts index 2d7e4179..51263dce 100644 --- a/src/util/schemas/MessageCreateSchema.ts +++ b/src/util/schemas/MessageCreateSchema.ts @@ -16,7 +16,12 @@ along with this program. If not, see . */ -import { ActionRowComponent, Embed, PollAnswer, PollMedia } from "@spacebar/util"; +import { + ActionRowComponent, + Embed, + PollAnswer, + PollMedia, +} from "@spacebar/util"; type Attachment = { id: string;