From f1fffc0b66f4321a3f05d55ea860abb60195252d Mon Sep 17 00:00:00 2001 From: MathMan05 Date: Tue, 3 Mar 2026 20:36:33 -0600 Subject: [PATCH] add function for resolving stickers for future use --- src/webpage/sticker.ts | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/src/webpage/sticker.ts b/src/webpage/sticker.ts index b080f1d..560f39a 100644 --- a/src/webpage/sticker.ts +++ b/src/webpage/sticker.ts @@ -81,6 +81,30 @@ class Sticker extends SnowFlake { } return undefined; } + static emojiMap = new WeakMap>(); + static async lookupEmoji(id: string, localuser: Localuser): Promise { + const guild = localuser.guilds.find((guild) => guild.emojis.find((emoji) => emoji.id === id)); + if (guild) { + const sticker = guild.stickers.find((_) => _.id === id); + if (sticker) return sticker; + } + + const map = this.emojiMap.get(localuser) || new Map(); + this.emojiMap.set(localuser, map); + + if (map.has(id)) return map.get(id); + + const res = await fetch(localuser.info.api + `/stickers/${id}`, { + headers: localuser.headers, + }); + if (res.status === 403) { + map.set(id, undefined); + return undefined; + } + const json = (await res.json()) as stickerJson; + map.set(id, json); + return new Sticker(json, localuser); + } static async stickerPicker(x: number, y: number, localuser: Localuser): Promise { let res: (r: Sticker) => void; this;