/** * @copyright nhcarrigan * @license Naomi's Public License * @author Naomi Carrigan */ import { getBannerImage } from "./getBannerImage.js"; import { getOverlayImage } from "./getOverlayImage.js"; import { overlayImages } from "./overlayImages.js"; import type { AttachmentData } from "../../interfaces/commands/attachmentData.js"; import type { WeatherForecast } from "../../interfaces/weather/weatherForecast.js"; /** * Generates the banner image. If an overlay is available, constructs a new banner image by overlaying the overlay on the banner. * Otherwise, returns the banner itself. * @param forecast - The weather forecast. * @returns The banner image attachment data. */ export const generateBanner = async( forecast: WeatherForecast, ): Promise<AttachmentData> => { const background = getBannerImage(forecast.region); const overlayQuery = forecast.special?.name === "Blight Rain" ? "Blight Rain" : forecast.precipitation?.name; if (overlayQuery === undefined) { return background; } const overlayPath = getOverlayImage(overlayQuery); if (overlayPath === null) { return background; } const overlay = await overlayImages(background.filePath, overlayPath); return overlay; };