From 36294b5451e0afbd1cf2543201115024fb4157de Mon Sep 17 00:00:00 2001 From: ITOH <72305210+itohatweb@users.noreply.github.com> Date: Mon, 25 Jan 2021 15:09:48 +0000 Subject: [PATCH] fix(handlers): add editSlashResponse() (#399) * update: editSlashResponse * remove breaking changes --- src/api/handlers/webhook.ts | 44 ++++++++++++++++++++++++++++++++++++- 1 file changed, 43 insertions(+), 1 deletion(-) diff --git a/src/api/handlers/webhook.ts b/src/api/handlers/webhook.ts index 9df852ea5..80ed3c149 100644 --- a/src/api/handlers/webhook.ts +++ b/src/api/handlers/webhook.ts @@ -482,8 +482,50 @@ export function editSlashResponse( token: string, options: EditSlashResponseOptions, ) { + if (options.content && options.content.length > 2000) { + throw Error(Errors.MESSAGE_MAX_LENGTH); + } + + if (options.embeds && options.embeds.length > 10) { + options.embeds.splice(10); + } + + if (options.allowed_mentions) { + if (options.allowed_mentions.users?.length) { + if (options.allowed_mentions.parse.includes("users")) { + options.allowed_mentions.parse = options.allowed_mentions.parse.filter(( + p, + ) => p !== "users"); + } + + if (options.allowed_mentions.users.length > 100) { + options.allowed_mentions.users = options.allowed_mentions.users.slice( + 0, + 100, + ); + } + } + + if (options.allowed_mentions.roles?.length) { + if (options.allowed_mentions.parse.includes("roles")) { + options.allowed_mentions.parse = options.allowed_mentions.parse.filter(( + p, + ) => p !== "roles"); + } + + if (options.allowed_mentions.roles.length > 100) { + options.allowed_mentions.roles = options.allowed_mentions.roles.slice( + 0, + 100, + ); + } + } + } + return RequestManager.patch( - endpoints.INTERACTION_ORIGINAL_ID_TOKEN(applicationID, token), + options.messageID + ? endpoints.WEBHOOK_MESSAGE(applicationID, token, options.messageID) + : endpoints.INTERACTION_ORIGINAL_ID_TOKEN(applicationID, token), options, ); }