feat(rest/request_manager): support multiple attachments (#499)

This commit is contained in:
ayntee
2021-02-01 22:57:21 +04:00
committed by GitHub
parent d78115a4be
commit dfcb406c66
2 changed files with 21 additions and 4 deletions
+15 -3
View File
@@ -1,5 +1,10 @@
import { authorization, eventHandlers } from "../bot.ts"; import { authorization, eventHandlers } from "../bot.ts";
import { Errors, HttpResponseCode, RequestMethods } from "../types/mod.ts"; import {
Errors,
FileContent,
HttpResponseCode,
RequestMethods,
} from "../types/mod.ts";
import { import {
API_VERSION, API_VERSION,
BASE_URL, BASE_URL,
@@ -154,9 +159,16 @@ function createRequestBody(body: any, method: RequestMethods) {
headers["X-Audit-Log-Reason"] = encodeURIComponent(body.reason); headers["X-Audit-Log-Reason"] = encodeURIComponent(body.reason);
} }
if (body?.file) { if (body.file) {
if (!Array.isArray(body.file)) body.file = [body.file];
const form = new FormData(); const form = new FormData();
form.append("file", body.file.blob, body.file.name);
body.file.map((file: FileContent, index: number) =>
// The key of the form data item must be unique; otherwise, Discordeno only considers the first item in the form data with the same names
form.append(`file${index + 1}`, file.blob as Blob, file.name)
);
form.append("payload_json", JSON.stringify({ ...body, file: undefined })); form.append("payload_json", JSON.stringify({ ...body, file: undefined }));
body.file = form; body.file = form;
} else if ( } else if (
+6 -1
View File
@@ -111,7 +111,7 @@ export interface MessageContent {
/** Whether this is a TextToSpeech message */ /** Whether this is a TextToSpeech message */
tts?: boolean; tts?: boolean;
/** The contents of the file being sent */ /** The contents of the file being sent */
file?: { blob: unknown; name: string }; file?: FileContent | FileContent[];
/** Embed object */ /** Embed object */
embed?: Embed; embed?: Embed;
/** JSON encoded body of any additional request fields. */ /** JSON encoded body of any additional request fields. */
@@ -120,6 +120,11 @@ export interface MessageContent {
replyMessageID?: string; replyMessageID?: string;
} }
export interface FileContent {
blob: unknown;
name: string;
}
export interface AllowedMentions { export interface AllowedMentions {
/** An array of allowed mention types to parse from the content. */ /** An array of allowed mention types to parse from the content. */
parse: ("roles" | "users" | "everyone")[]; parse: ("roles" | "users" | "everyone")[];