import { type Env, factory } from '../init.js'
c: CommandContext<Env> | ComponentContext<Env>,
): ReturnType<typeof c.res> => {
///// Response Build /////
const embed = makeEmbed()
.description(`${content}\nPage: ${page}`)
const previousButton = component_page.component
.emoji({ name: '⬅️' } as const)
.style(buttonStyle.Success)
.custom_value(JSON.stringify([page - 1, content]))
const nextButton = component_page.component
.emoji({ name: '➡️' } as const)
.style(buttonStyle.Primary)
.custom_value(JSON.stringify([page + 1, content]))
.disabled(maxPage <= page)
const components = [makeActionRow([previousButton, nextButton])]
return c.res({ embeds: [embed], components })
export const command_page = factory.command(
makeSlashCommand('page', 'pagination').options([
makeStringOption('content', 'page content').required(true),
c => pageContent(c, 1, c.var.content),
export const component_page = factory.component(makeButton('page', ''), c => {
const arr: [number, string] = JSON.parse(c.ref.custom_value ?? '')
return pageContent(c.update(), ...arr)