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