diff --git a/m2d/converters/event-to-message.js b/m2d/converters/event-to-message.js index b028dc5..b3938d1 100644 --- a/m2d/converters/event-to-message.js +++ b/m2d/converters/event-to-message.js @@ -457,12 +457,19 @@ async function eventToMessage(event, guild, di) { } } else if (event.type === "m.sticker") { content = "" - let filename = event.content.body - if (event.type === "m.sticker" && event.content.info.mimetype.includes("/")) { - filename += "." + event.content.info.mimetype.split("/")[1] - } const url = utils.getPublicUrlForMxc(event.content.url) assert(url) + let filename = event.content.body + if (event.type === "m.sticker") { + let mimetype + if (event.content.info?.mimetype?.includes("/")) { + mimetype = event.content.info.mimetype + } else { + const res = await fetch(url, {method: "HEAD"}) + mimetype = res.headers.get("content-type") || "image/webp" + } + filename += "." + mimetype.split("/")[1] + } attachments.push({id: "0", filename}) pendingFiles.push({name: filename, url}) } diff --git a/types.d.ts b/types.d.ts index 3b4aacd..e93f379 100644 --- a/types.d.ts +++ b/types.d.ts @@ -139,8 +139,8 @@ export namespace Event { export type M_Sticker = { body: string url: string - info: { - mimetype: string + info?: { + mimetype?: string w?: number h?: number size?: number @@ -217,7 +217,7 @@ export namespace R { } } -export type Pagination { +export type Pagination = { chunk: T[] next_batch?: string prev_match?: string