diff --git a/d2m/converters/message-to-event.js b/d2m/converters/message-to-event.js index 0d68a73..a620beb 100644 --- a/d2m/converters/message-to-event.js +++ b/d2m/converters/message-to-event.js @@ -497,25 +497,17 @@ async function messageToEvent(message, guild, options = {}, di) { if (message.sticker_items) { const stickerEvents = await Promise.all(message.sticker_items.map(async stickerItem => { const format = file.stickerFormat.get(stickerItem.format_type) + assert(format?.mime) if (format?.mime === "lottie") { - try { - const {mxc_url, info} = await lottie.convert(stickerItem) - return { - $type: "m.sticker", - "m.mentions": mentions, - body: stickerItem.name, - info, - url: mxc_url - } - } catch (e) { - return { - $type: "m.room.message", - "m.mentions": mentions, - msgtype: "m.notice", - body: `Failed to convert Lottie sticker:\n${e.toString()}\n${e.stack}` - } + const {mxc_url, info} = await lottie.convert(stickerItem) + return { + $type: "m.sticker", + "m.mentions": mentions, + body: stickerItem.name, + info, + url: mxc_url } - } else if (format?.mime) { + } else { let body = stickerItem.name const sticker = guild.stickers.find(sticker => sticker.id === stickerItem.id) if (sticker && sticker.description) body += ` - ${sticker.description}` @@ -529,12 +521,6 @@ async function messageToEvent(message, guild, options = {}, di) { url: await file.uploadDiscordFileToMxc(file.sticker(stickerItem)) } } - return { - $type: "m.room.message", - "m.mentions": mentions, - msgtype: "m.notice", - body: `Unsupported sticker format ${format?.mime}. Name: ${stickerItem.name}` - } })) events.push(...stickerEvents) } diff --git a/d2m/converters/message-to-event.test.js b/d2m/converters/message-to-event.test.js index b264aeb..42778b6 100644 --- a/d2m/converters/message-to-event.test.js +++ b/d2m/converters/message-to-event.test.js @@ -224,6 +224,21 @@ test("message2event: stickers", async t => { }]) }) +test("message2event: lottie sticker", async t => { + const events = await messageToEvent(data.message.lottie_sticker, data.guild.general, {}) + t.deepEqual(events, [{ + $type: "m.sticker", + "m.mentions": {}, + body: "8", + info: { + mimetype: "image/png", + w: 160, + h: 160 + }, + url: "mxc://cadence.moe/ZtvvVbwMIdUZeovWVyGVFCeR" + }]) +}) + test("message2event: skull webp attachment with content", async t => { const events = await messageToEvent(data.message.skull_webp_attachment_with_content, data.guild.general, {}) t.deepEqual(events, [{