From 9bf145c4e3cddd77843a7d3e16ebd382fa44ed0d Mon Sep 17 00:00:00 2001 From: Ethan Lane Date: Fri, 8 Dec 2023 18:19:43 +0000 Subject: [PATCH] Fix image issues --- src/Functions/CardMetadataFunction.ts | 9 ++++++--- src/Functions/CardSetupFunction.ts | 4 ++-- src/buttonEvents/Reroll.ts | 14 +++++++++++--- src/client/client.ts | 4 ++-- src/commands/drop.ts | 14 +++++++++++--- src/commands/gdrivesync.ts | 2 +- src/commands/resync.ts | 6 +++--- src/helpers/CardDropHelperMetadata.ts | 4 ++-- 8 files changed, 38 insertions(+), 19 deletions(-) diff --git a/src/Functions/CardMetadataFunction.ts b/src/Functions/CardMetadataFunction.ts index b0f0755..1d52a27 100644 --- a/src/Functions/CardMetadataFunction.ts +++ b/src/Functions/CardMetadataFunction.ts @@ -6,14 +6,16 @@ import SeriesMetadata from "../contracts/SeriesMetadata"; import { CoreClient } from "../client/client"; export default class CardMetadataFunction { - public static async Execute(): Promise { - if (await Config.GetValue('safemode') == "true") return false; + public static async Execute(overrideSafeMode: boolean = false): Promise { + if (!overrideSafeMode && await Config.GetValue('safemode') == "true") return false; try { CoreClient.Cards = await this.FindMetadataJSONs(); console.log(`Loaded ${CoreClient.Cards.flatMap(x => x.cards).length} cards to database`); - } catch { + } catch (e) { + console.error(e); + await Config.SetValue('safemode', 'true'); return false; } @@ -27,6 +29,7 @@ export default class CardMetadataFunction { const seriesJSONs = await glob(path.join(process.cwd(), 'cards', '/**/*.json')); for (let jsonPath of seriesJSONs) { + console.log(`Reading file ${jsonPath}`); const jsonFile = readFileSync(jsonPath); const parsedJson: SeriesMetadata[] = JSON.parse(jsonFile.toString()); diff --git a/src/Functions/CardSetupFunction.ts b/src/Functions/CardSetupFunction.ts index ea8c2c6..0b1841a 100644 --- a/src/Functions/CardSetupFunction.ts +++ b/src/Functions/CardSetupFunction.ts @@ -7,8 +7,8 @@ import { CardRarity, CardRarityToString } from "../constants/CardRarity"; import Config from "../database/entities/app/Config"; export default class CardSetupFunction { - public static async Execute(): Promise { - if (await Config.GetValue('safemode') == "true") return false; + public static async Execute(overrideSafeMode: boolean = false): Promise { + if (!overrideSafeMode && await Config.GetValue('safemode') == "true") return false; try { await this.ClearDatabase(); diff --git a/src/buttonEvents/Reroll.ts b/src/buttonEvents/Reroll.ts index 7945b56..d78ead5 100644 --- a/src/buttonEvents/Reroll.ts +++ b/src/buttonEvents/Reroll.ts @@ -33,16 +33,24 @@ export default class Reroll extends ButtonEvent { return; } - const image = readFileSync(path.join(process.cwd(), 'cards', randomCard.card.path)); + let image: Buffer; + const imageFileName = randomCard.card.path.split("/").pop()!; + + try { + image = readFileSync(path.join(process.cwd(), 'cards', randomCard.card.path)); + } catch { + await interaction.reply(`Unable to fetch image for card ${randomCard.card.id}`); + return; + } await interaction.deferReply(); - const attachment = new AttachmentBuilder(image, { name: randomCard.card.id }); + const attachment = new AttachmentBuilder(image, { name: imageFileName }); const inventory = await Inventory.FetchOneByCardNumberAndUserId(interaction.user.id, randomCard.card.id); const quantityClaimed = inventory ? inventory.Quantity : 0; - const embed = CardDropHelperMetadata.GenerateDropEmbed(randomCard, quantityClaimed); + const embed = CardDropHelperMetadata.GenerateDropEmbed(randomCard, quantityClaimed, imageFileName); const claimId = v4(); diff --git a/src/client/client.ts b/src/client/client.ts index 1e1d887..a54ead9 100644 --- a/src/client/client.ts +++ b/src/client/client.ts @@ -79,9 +79,9 @@ export class CoreClient extends Client { super.on("ready", this._events.onReady); if (process.env.FEATURE_METADATA && process.env.FEATURE_METADATA == 'true') { - await CardMetadataFunction.Execute(); + await CardMetadataFunction.Execute(true); } else { - await CardSetupFunction.Execute(); + await CardSetupFunction.Execute(true); } this._util.loadEvents(this, CoreClient._eventItems); diff --git a/src/commands/drop.ts b/src/commands/drop.ts index 41045c5..06b33cd 100644 --- a/src/commands/drop.ts +++ b/src/commands/drop.ts @@ -41,16 +41,24 @@ export default class Drop extends Command { return; } - const image = readFileSync(path.join(process.cwd(), 'cards', randomCard.card.path)); + let image: Buffer; + const imageFileName = randomCard.card.path.split("/").pop()!; + + try { + image = readFileSync(path.join(process.cwd(), 'cards', randomCard.card.path)); + } catch { + await interaction.reply(`Unable to fetch image for card ${randomCard.card.id}`); + return; + } await interaction.deferReply(); - const attachment = new AttachmentBuilder(image, { name: randomCard.card.id }); + const attachment = new AttachmentBuilder(image, { name: imageFileName }); const inventory = await Inventory.FetchOneByCardNumberAndUserId(interaction.user.id, randomCard.card.id); const quantityClaimed = inventory ? inventory.Quantity : 0; - const embed = CardDropHelperMetadata.GenerateDropEmbed(randomCard, quantityClaimed); + const embed = CardDropHelperMetadata.GenerateDropEmbed(randomCard, quantityClaimed, imageFileName); const claimId = v4(); diff --git a/src/commands/gdrivesync.ts b/src/commands/gdrivesync.ts index fa1ac00..ac2be29 100644 --- a/src/commands/gdrivesync.ts +++ b/src/commands/gdrivesync.ts @@ -35,7 +35,7 @@ export default class Gdrivesync extends Command { await interaction.editReply(`Error while running sync command. Safe Mode has been activated. Code: ${error.code}`); await Config.SetValue('safemode', 'true'); } else { - if (!(process.env.FEATURE_METADATA && process.env.FEATURE_METADATA == 'true')) { + if (process.env.FEATURE_METADATA && process.env.FEATURE_METADATA == 'true') { await CardMetadataFunction.Execute(); } else { await CardSetupFunction.Execute(); diff --git a/src/commands/resync.ts b/src/commands/resync.ts index 2ea3648..55e1076 100644 --- a/src/commands/resync.ts +++ b/src/commands/resync.ts @@ -26,10 +26,10 @@ export default class Resync extends Command { let result: boolean; - if (!(process.env.FEATURE_METADATA && process.env.FEATURE_METADATA == 'true')) { - result = await CardMetadataFunction.Execute(); + if (process.env.FEATURE_METADATA && process.env.FEATURE_METADATA == 'true') { + result = await CardMetadataFunction.Execute(true); } else { - result = await CardSetupFunction.Execute(); + result = await CardSetupFunction.Execute(true); } if (result) { diff --git a/src/helpers/CardDropHelperMetadata.ts b/src/helpers/CardDropHelperMetadata.ts index 7802a41..4ec8621 100644 --- a/src/helpers/CardDropHelperMetadata.ts +++ b/src/helpers/CardDropHelperMetadata.ts @@ -48,7 +48,7 @@ export default class CardDropHelperMetadata { }; } - public static GenerateDropEmbed(drop: DropResult, quantityClaimed: Number): EmbedBuilder { + public static GenerateDropEmbed(drop: DropResult, quantityClaimed: Number, imageFileName: string): EmbedBuilder { let description = ""; description += `Series: ${drop.series.name}\n`; description += `Claimed: ${quantityClaimed}\n`; @@ -58,7 +58,7 @@ export default class CardDropHelperMetadata { .setDescription(description) .setFooter({ text: CardRarityToString(drop.card.type) }) .setColor(CardRarityToColour(drop.card.type)) - .setImage(`attachment://${drop.card.id}`); + .setImage(`attachment://${imageFileName}`); } public static GenerateDropButtons(drop: DropResult, claimId: string, userId: string): ActionRowBuilder {