import { roblox } from "@/roblox/client"; import { text } from "@/utils/discord/components"; import { type ChatInputCommandInteraction, type Client, ContainerBuilder, SlashCommandBuilder, } from "discord.js"; const commandData = new SlashCommandBuilder() .setName("search") .setDescription("Search for Roblox users") .addStringOption((option) => option.setName("query").setDescription("The query to search for").setRequired(true), ); async function execute(_client: Client, interaction: ChatInputCommandInteraction) { await interaction.deferReply(); const query = interaction.options.getString("query", true); const [searchRes, searchErr] = await roblox.searchUsers(query, { limit: 10, cursor: "", }); if (searchErr) { await interaction.editReply("Error searching for users."); console.error(searchErr); return; } const container = new ContainerBuilder(); const title = text(`## ${searchRes.data.length} Results for "${query}"`); const resultString = searchRes.data .map((user) => [ "*", user.displayName, `[@${user.name}](https://www.roblox.com/users/${user.id}/profile)`, `(${user.id})`, user.previousUsernames.length ? `(${user.previousUsernames.join(", ")})` : "", ].join(" "), ) .join("\n"); const resultText = text(resultString); container.addTextDisplayComponents(title, resultText); await interaction.editReply({ flags: ["IsComponentsV2"], components: [container], }); } export default { data: commandData, execute, };