feat: upload debug files

This commit is contained in:
Jozef Steinhübl 2024-04-11 18:59:14 +02:00
parent b18eff081c
commit 791a779715
3 changed files with 62 additions and 25 deletions

View file

@ -6,7 +6,7 @@ import {
RouteBases,
Routes,
} from "discord-api-types/v10";
import respond from "../../utils/respond";
import respond, { respondAttachments } from "../../utils/respond";
import { Env } from "../../types";
export class Context {
@ -23,6 +23,7 @@ export class Context {
}
public respond = respond;
public respondAttachments = respondAttachments;
public async editReply(content: APIInteractionResponseCallbackData) {
return await fetch(

View file

@ -5,3 +5,23 @@ export default function (response: APIInteractionResponse) {
headers: { "content-type": "application/json" },
});
}
export function respondAttachments(
response: APIInteractionResponse,
attachments: Record<string, string>,
) {
const body = new FormData();
body.append("payload_json", JSON.stringify(response));
let i = 0;
for (const [name, content] of Object.entries(attachments)) {
body.append(
`files[${i}]`,
new Blob([content], { type: "text/plain" }),
name,
);
i++;
}
return new Response(body);
}

View file

@ -161,19 +161,25 @@ export default async function (ctx: Context, data: Data) {
} = await res.json();
const errors = parseErrors(json?.errors ?? {});
return ctx.respond({
type: InteractionResponseType.ChannelMessageWithSource,
data: {
content: `Error: ${json.message} (${json.code})${
errors.length > 0
? `\n${errors
.map((e) => ` - ${e.message} (${e.code})`)
.join("\n")}`
: ""
}`,
flags: MessageFlags.Ephemeral,
return ctx.respondAttachments(
{
type: InteractionResponseType.ChannelMessageWithSource,
data: {
content: `Error: ${json.message} (${json.code})${
errors.length > 0
? `\n${errors
.map((e) => ` - ${e.message} (${e.code})`)
.join("\n")}`
: ""
}`,
flags: MessageFlags.Ephemeral,
},
},
});
{
"data.json": JSON.stringify(data, null, "\t"),
"payload.json": JSON.stringify(payload, null, "\t"),
},
);
}
return ctx.respond({
@ -221,19 +227,29 @@ export default async function (ctx: Context, data: Data) {
} = await res.json();
const errors = parseErrors(json?.errors ?? {});
return ctx.respond({
type: InteractionResponseType.ChannelMessageWithSource,
data: {
content: `Error: ${json.message} (${json.code})${
errors.length > 0
? `\n${errors
.map((e) => ` - ${e.message} (${e.code})`)
.join("\n")}`
: ""
}`,
flags: MessageFlags.Ephemeral,
// @ts-expect-error
// rome-ignore lint/performance/noDelete: <explanation>
delete data.webhook;
return ctx.respondAttachments(
{
type: InteractionResponseType.ChannelMessageWithSource,
data: {
content: `Error: ${json.message} (${json.code})${
errors.length > 0
? `\n${errors
.map((e) => ` - ${e.message} (${e.code})`)
.join("\n")}`
: ""
}`,
flags: MessageFlags.Ephemeral,
},
},
});
{
"data.json": JSON.stringify(data, null, "\t"),
"payload.json": JSON.stringify(payload, null, "\t"),
},
);
}
return ctx.respond({