From ed71ee1cbd0f5dca78ad2ec86113c0a97c2fe48c Mon Sep 17 00:00:00 2001 From: sroschke Date: Fri, 27 Dec 2024 14:36:14 -0800 Subject: [PATCH] Ascii art generator. --- package.json | 3 +- src/commands/slash/aa.js | 62 ++++++++++++++++++++++++++++ src/plugins/slash_command_manager.js | 2 +- 3 files changed, 65 insertions(+), 2 deletions(-) create mode 100644 src/commands/slash/aa.js diff --git a/package.json b/package.json index 8d9f3fe..75b7a7b 100644 --- a/package.json +++ b/package.json @@ -18,6 +18,7 @@ "discord.js": "^14.16.3", "dotenv": "^16.4.7", "fuzzball": "^2.1.3", - "js-yaml": "^4.1.0" + "js-yaml": "^4.1.0", + "node-fetch": "^2.7.0" } } diff --git a/src/commands/slash/aa.js b/src/commands/slash/aa.js new file mode 100644 index 0000000..e84c0ae --- /dev/null +++ b/src/commands/slash/aa.js @@ -0,0 +1,62 @@ +const { SlashCommandBuilder } = require('@discordjs/builders'); + +const fetch = require('node-fetch'); +const util = require('util'); + +async function _search(query, page = 1) { + const q = encodeURIComponent(query); + const url = `https://www.asciiur.com/api/?q=${q}&pg=${page}`; + + return await fetch(url) + .then((res) => res.json()) + .then(async (json) => { + if (!json) return []; + return json; + }); +} + +module.exports = { + data: new SlashCommandBuilder() + .setName('aa') + .setDescription('Prints random ascii art!') + .addStringOption((option) => + option + .setName('query') + .setDescription('Ascii art query') + .setRequired(true) + ), + async run(context) { + const interaction = context.interaction; + //interaction.deferReply({ content: 'Grabbing ascii', ephemeral: true }); + const query = interaction.options.getString('query'); + let ret = await _search(query); + + let ret_strg = + '```\n' + + ret[Math.round(Math.random() * ret.length)].body.replaceAll( + '`', + '`\u200b' + ) + + '```'; + + let cnt = 0; + while (ret_strg.length > 2000) { + ret_strg = + '```\n' + + ret[Math.round(Math.random() * ret.length)].body.replaceAll( + '`', + '`\u200b' + ) + + '```'; + cnt++; + if (cnt >= 1999) { + break; + } + } + + await interaction.reply({ + content: ret_strg, + ephemeral: true, + }); + }, +}; diff --git a/src/plugins/slash_command_manager.js b/src/plugins/slash_command_manager.js index 317c5c3..d810503 100644 --- a/src/plugins/slash_command_manager.js +++ b/src/plugins/slash_command_manager.js @@ -41,7 +41,7 @@ function main(ctx) { command.init?.(); this.commands.set(command.data.name, command); } catch (e) { - console.error(chalk.red(`Error loading ${commandFilename}`, e)); + console.error(chalk.red(`Error loading ${commandFilename}`, e.stack)); } }); },