This commit is contained in:
Louis Mazin 2026-04-16 17:21:00 +02:00
parent 6273c03431
commit 9895d039e8

View File

@ -152,10 +152,13 @@ const preloadPinboardImages = async (items) => {
} }
}; };
const buildSelectedImageEmbed = (item, imageReference) => { const buildSelectedImageEmbed = (item, imageReference, options = {}) => {
const imageUrl = imageReference?.attachmentName const useAttachment = options.useAttachment !== false;
const disableCacheBust = options.disableCacheBust === true;
const imageUrl = useAttachment && imageReference?.attachmentName
? `attachment://${imageReference.attachmentName}` ? `attachment://${imageReference.attachmentName}`
: toCacheBustedUrl(item.url); : (disableCacheBust ? item.url : toCacheBustedUrl(item.url));
return new EmbedBuilder() return new EmbedBuilder()
.setColor('#f59e0b') .setColor('#f59e0b')
@ -220,7 +223,7 @@ const buildPanelEmbed = (status) => {
return message; return message;
}; };
const buildPanelPayload = (status, messageId, pinboardItems = null) => { const buildPanelPayload = (status, messageId, pinboardItems = null, options = {}) => {
const panelEmbed = buildPanelEmbed(status); const panelEmbed = buildPanelEmbed(status);
const items = (pinboardItems || parsePinboardImageItems()).slice(0, 25); const items = (pinboardItems || parsePinboardImageItems()).slice(0, 25);
@ -233,10 +236,14 @@ const buildPanelPayload = (status, messageId, pinboardItems = null) => {
const selectedItem = items[currentIndex]; const selectedItem = items[currentIndex];
const cachedImage = preloadedImagesByUrl.get(selectedItem.url); const cachedImage = preloadedImagesByUrl.get(selectedItem.url);
const selectedImageEmbed = buildSelectedImageEmbed(selectedItem, cachedImage); const selectedImageEmbed = buildSelectedImageEmbed(selectedItem, cachedImage, {
useAttachment: options.useAttachmentForSelected,
disableCacheBust: options.disableCacheBustForSelected
});
const selectorRow = buildImageSelectorRow(items, currentIndex); const selectorRow = buildImageSelectorRow(items, currentIndex);
const files = cachedImage?.buffer const shouldIncludeFiles = options.includeFiles !== false;
const files = shouldIncludeFiles && cachedImage?.buffer
? [new AttachmentBuilder(cachedImage.buffer, { name: cachedImage.attachmentName })] ? [new AttachmentBuilder(cachedImage.buffer, { name: cachedImage.attachmentName })]
: []; : [];
@ -291,7 +298,11 @@ const update = async (client) => {
lastKnownStatus = status; lastKnownStatus = status;
const { message } = await resolvePanelMessage(client, channelId, messageId); const { message } = await resolvePanelMessage(client, channelId, messageId);
const payload = buildPanelPayload(status, message.id, pinboardItems); const payload = buildPanelPayload(status, message.id, pinboardItems, {
useAttachmentForSelected: true,
disableCacheBustForSelected: false,
includeFiles: true
});
await message.edit(payload); await message.edit(payload);
@ -319,7 +330,11 @@ const handlePinboardSelection = async (interaction) => {
selectedImageIndexByMessage.set(interaction.message.id, selectedIndex); selectedImageIndexByMessage.set(interaction.message.id, selectedIndex);
const status = lastKnownStatus || await getMinecraftStatus(); const status = lastKnownStatus || await getMinecraftStatus();
const payload = buildPanelPayload(status, interaction.message.id, pinboardItems); const payload = buildPanelPayload(status, interaction.message.id, pinboardItems, {
useAttachmentForSelected: false,
disableCacheBustForSelected: true,
includeFiles: false
});
await interaction.update(payload); await interaction.update(payload);
return true; return true;
} catch (error) { } catch (error) {