diff --git a/src/pterodactyl/displayer.js b/src/pterodactyl/displayer.js index 0e3df36..0ef7132 100644 --- a/src/pterodactyl/displayer.js +++ b/src/pterodactyl/displayer.js @@ -3,6 +3,21 @@ const { EmbedBuilder, ActionRowBuilder, StringSelectMenuBuilder } = require('dis const PINBOARD_SELECT_CUSTOM_ID = 'pinboard-image-select'; const selectedImageIndexByMessage = new Map(); +const getCacheBustValue = () => { + const bucketSeconds = Number.parseInt(process.env.PINBOARD_CACHE_BUST_SECONDS || '60', 10); + const safeBucketSeconds = Number.isNaN(bucketSeconds) || bucketSeconds <= 0 ? 60 : bucketSeconds; + return Math.floor(Date.now() / (safeBucketSeconds * 1000)); +}; + +const toCacheBustedUrl = (url) => { + if (process.env.PINBOARD_CACHE_BUST_ENABLED === 'false') { + return url; + } + + const separator = url.includes('?') ? '&' : '?'; + return `${url}${separator}cb=${getCacheBustValue()}`; +}; + const parsePinboardImageUrls = () => { const raw = process.env.PINBOARD_IMAGE_URLS || ''; return raw @@ -22,7 +37,7 @@ const buildSelectedImageEmbed = (url, index, total) => ( new EmbedBuilder() .setColor('#f59e0b') .setTitle(`Image selectionnee (${index + 1}/${total})`) - .setImage(url) + .setImage(toCacheBustedUrl(url)) ); const buildImageSelectorRow = (urls, selectedIndex) => {