From a28303b7ca6fa98af19b2cb0089ca26943113e39 Mon Sep 17 00:00:00 2001 From: Frostbide <129122542+Frostbide@users.noreply.github.com> Date: Sat, 24 May 2025 13:36:59 -0700 Subject: [PATCH] Render solution --- package.json | 2 + src/commands/slash/nytimes.js | 7 +- .../nytimes/assets/franklin-normal-500.ttf | Bin 0 -> 51436 bytes .../nytimes/assets/franklin-normal-700.ttf | Bin 0 -> 51376 bytes .../slash/subcommands/nytimes/connections.js | 123 +++++++++++++++++- 5 files changed, 124 insertions(+), 8 deletions(-) create mode 100644 src/commands/slash/subcommands/nytimes/assets/franklin-normal-500.ttf create mode 100644 src/commands/slash/subcommands/nytimes/assets/franklin-normal-700.ttf diff --git a/package.json b/package.json index 3c97a53..d4697d2 100644 --- a/package.json +++ b/package.json @@ -18,6 +18,7 @@ "license": "MIT", "dependencies": { "@google/generative-ai": "^0.21.0", + "canvas": "^3.1.0", "chalk": "4.1.2", "creditcard-generator": "^0.0.7", "discord.js": "^14.16.3", @@ -29,6 +30,7 @@ "qrcode": "^1.5.4", "sharp": "^0.33.5", "sqlite3": "^5.1.7", + "uuid": "^11.1.0", "xml2js": "^0.6.2" }, "devDependencies": { diff --git a/src/commands/slash/nytimes.js b/src/commands/slash/nytimes.js index d21bed4..a824633 100644 --- a/src/commands/slash/nytimes.js +++ b/src/commands/slash/nytimes.js @@ -1,4 +1,6 @@ const { SlashCommandBuilder } = require('@discordjs/builders'); +const wordle = require('./subcommands/nytimes/wordle'); +const connections = require('./subcommands/nytimes/connections'); module.exports = { data: new SlashCommandBuilder() @@ -33,7 +35,8 @@ module.exports = { ) ), subCommands: new Map([ - ['wordle', require('./subcommands/nytimes/wordle')], - ['connections', require('./subcommands/nytimes/connections')], + ['wordle', wordle], + ['connections', connections], ]), + buttonIds: new Map([['solutionButton', connections.handleSolutionButton]]), }; diff --git a/src/commands/slash/subcommands/nytimes/assets/franklin-normal-500.ttf b/src/commands/slash/subcommands/nytimes/assets/franklin-normal-500.ttf new file mode 100644 index 0000000000000000000000000000000000000000..8b18d8215e43ee288c3cbbe4eff5fd3cc3068818 GIT binary patch literal 51436 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 LrOxO4)0_VX20?%g literal 0 HcmV?d00001 diff --git a/src/commands/slash/subcommands/nytimes/connections.js b/src/commands/slash/subcommands/nytimes/connections.js index 4d5b632..bdabfeb 100644 --- a/src/commands/slash/subcommands/nytimes/connections.js +++ b/src/commands/slash/subcommands/nytimes/connections.js @@ -1,10 +1,84 @@ const { EmbedBuilder, escapeMarkdown } = require('@discordjs/builders'); -const { spoiler } = require('@discordjs/formatters'); +const { createCanvas, registerFont } = require('canvas'); +const { + AttachmentBuilder, + ButtonBuilder, + ButtonStyle, + ActionRowBuilder, +} = require('discord.js'); const fetch = require('node-fetch'); +const path = require('path'); + +// Rendering stuff + +const colors = [ + '#F9DF6D', // Yellow + '#A0C35A', // Green + '#B0C4EF', // Blue + '#BA81C5', // Purple +]; + +registerFont(path.join(__dirname, 'assets', 'franklin-normal-500.ttf'), { + family: 'nyt-franklin-500', +}); + +registerFont(path.join(__dirname, 'assets', 'franklin-normal-700.ttf'), { + family: 'nyt-franklin-700', +}); + +function roundRect(ctx, x, y, width, height, radius = 10) { + ctx.beginPath(); + ctx.moveTo(x + radius, y); + ctx.lineTo(x + width - radius, y); + ctx.arcTo(x + width, y, x + width, y + radius, radius); + ctx.lineTo(x + width, y + height - radius); + ctx.arcTo(x + width, y + height, x + width - radius, y + height, radius); + ctx.lineTo(x + radius, y + height); + ctx.arcTo(x, y + height, x, y + height - radius, radius); + ctx.lineTo(x, y + radius); + ctx.arcTo(x, y, x + radius, y, radius); + ctx.closePath(); + ctx.fill(); +} + +function render(categories) { + const canvas = createCanvas(640, 360); + const ctx = canvas.getContext('2d'); + + ctx.fillStyle = '#ffffff'; + ctx.fillRect(0, 0, canvas.width, canvas.height); + + const boxHeight = 80; + const boxPadding = 8; + + categories.forEach((category, i) => { + const top = i * (boxHeight + boxPadding) + 8; + ctx.fillStyle = category.color; + roundRect(ctx, 8, top, 624, boxHeight, 6); + + ctx.fillStyle = '#000000'; + ctx.font = '22px nyt-franklin-700'; + ctx.textAlign = 'center'; + ctx.textBaseline = 'middle'; + ctx.fillText(category.title, 640 / 2, top + boxHeight * 0.325); + + ctx.font = '22px nyt-franklin-500'; + ctx.fillText( + category.cards.map((card) => card.content).join(', '), + 640 / 2, + top + boxHeight * 0.675 + ); + }); + + return canvas.toBuffer('image/png'); +} + +// Command stuff module.exports = { async run(context) { - const { interaction, options } = context; + const { options, showSolution } = context; + let { interaction } = context; const { timeZone } = options; const datestr = interaction.options.getString('date'); const date = datestr @@ -26,7 +100,12 @@ module.exports = { const url = `https://www.nytimes.com/svc/connections/v2/${encodeURIComponent(puzzleFile)}.json`; - await interaction.deferReply(); + if (context.isButton) { + await context.originalInteraction.deferReply({ ephemeral: true }); + interaction = context.originalInteraction; + } else { + await interaction.deferReply(); + } const res = await fetch(url); @@ -78,19 +157,51 @@ module.exports = { }) .setColor(0x009bc2); - const fields = (game.categories || []).map(({ title, cards }) => ({ + /* const fields = (game.categories || []).map(({ title, cards }) => ({ name: spoiler(escapeMarkdown(title)), value: cards .map(({ content }) => `- ${spoiler(escapeMarkdown(content))}`) .join('\n') .slice(0, 1024), inline: true, - })); + })); */ - embed.addFields({ name: '\u200b', value: '\u200b' }, ...fields); + if (!showSolution) { + const { uuid } = context; + const solutionButton = new ButtonBuilder() + .setCustomId(`solutionButton:${uuid}`) + .setLabel('Show Solution') + .setStyle(ButtonStyle.Primary); + + return interaction.editReply({ + embeds: [embed], + components: [new ActionRowBuilder().addComponents(solutionButton)], + }); + } + + const buffer = render( + game.categories.map(({ title, cards }, i) => ({ + title, + cards, + color: colors[i % 4], + })) + ); + + embed.setImage('attachment://connections.png'); interaction.editReply({ embeds: [embed], + files: [ + new AttachmentBuilder(buffer, { + name: 'connections.png', + }), + ], + }); + }, + async handleSolutionButton(context) { + await module.exports.run({ + ...context, + showSolution: true, }); }, };