/** * @copyright nhcarrigan * @license Naomi's Public License * @author Naomi Carrigan */ import { TextDisplayBuilder, SeparatorBuilder, SeparatorSpacingSize, ContainerBuilder, ButtonBuilder, ButtonStyle, ActionRowBuilder, MessageFlags, } from "discord.js"; import { errorHandler } from "../utils/errorHandler.js"; import type { Command } from "../interfaces/command.js"; /** * Handles the `/about` command interaction. * @param _chibika - Chibika's Discord instance (unused). * @param interaction - The command interaction payload from Discord. */ // eslint-disable-next-line max-lines-per-function -- It's mostly components. export const about: Command = async(_chibika, interaction) => { try { const components = [ new ContainerBuilder(). addTextDisplayComponents( new TextDisplayBuilder().setContent("# About Chibika"), ). addTextDisplayComponents( new TextDisplayBuilder().setContent( "Hi there~! I am Chibika, a bot that shares ASCII art.", ), ). addSeparatorComponents( new SeparatorBuilder(). setSpacing(SeparatorSpacingSize.Small). setDivider(true), ). addTextDisplayComponents( new TextDisplayBuilder().setContent("## What can I do?"), ). addTextDisplayComponents( new TextDisplayBuilder().setContent( // eslint-disable-next-line stylistic/max-len -- Big boi string. "To get started, you will need to purchase the server subscription from my Discord store. Then anyone in your community can use the `/ascii` command to get ASCII art from me! There are different categories of art you can choose from.", ), ). addSeparatorComponents( new SeparatorBuilder(). setSpacing(SeparatorSpacingSize.Small). setDivider(true), ). addTextDisplayComponents( new TextDisplayBuilder().setContent("## What if I need help?"), ). addTextDisplayComponents( new TextDisplayBuilder().setContent( // eslint-disable-next-line stylistic/max-len -- Big boi string. "My deepest apologies if I have made a mistake! Please reach out to us in our Discord server or on the forum, and we will do our best to assist you.", ), ), new ActionRowBuilder().addComponents( new ButtonBuilder(). setStyle(ButtonStyle.Link). setLabel("Discord Server"). setURL("https://chat.nhcarrigan.com"), new ButtonBuilder(). setStyle(ButtonStyle.Link). setLabel("Forum"). setURL("https://forum.nhcarrigan.com"), ), ]; await interaction.reply({ components: components, flags: MessageFlags.IsComponentsV2, }); } catch (error) { await errorHandler(error, "about command"); await interaction.reply({ content: // eslint-disable-next-line stylistic/max-len -- Big boi string. "An error occurred while processing your request. Please try again later.", }); } };