Saltar al contenido principal
Una variable es una palabra entre llaves, como {user} o {server_name}, que Petto cambia por datos reales cuando envía un mensaje. Escribe ¡Bienvenido {user} a {server_name}! y el miembro nuevo lee ¡Bienvenido @Liam a Cozy Corner! Esta página lista todas las variables que conoce Petto, agrupadas según de dónde vienen sus datos. Los ejemplos usan a un miembro llamado Liam (nombre de usuario liam) que entra a un servidor llamado Cozy Corner con 1,204 miembros.
No tienes que memorizar nada de esto. El dashboard tiene una lista de variables con buscador y un botón de copiar al lado de cada campo que acepta variables, y !embed vars muestra la lista dentro de Discord.

Cómo se resuelven las variables

Las reglas detrás de escena: el orden, los valores vacíos, las pruebas.

¿Necesitas lógica o bucles?

Petto Code ({{ }}) agrega if, bucles, datos y botones. Documentación completa en code.petto.sbs.
Una variable escrita con otras mayúsculas, puntos o guiones bajos que la real ({user.displayname}, {server_member_count}) sigue funcionando cuando solo puede significar una variable. Lo dudoso se deja como se escribió, y los editores de tarjetas y embeds del dashboard señalan las variables que Petto no conoce.

Escribir variables

  • Las mayúsculas y los espacios no importan. {user.mention}, {User.Mention} y { user.mention } funcionan todas.
  • Los nombres de otros bots también funcionan. {mention}, {member}, {username}, {server}, {level.xp} y otros se leen como su equivalente de Petto (lista completa abajo).
  • Una variable que Petto no conoce se queda como la escribiste. {usr} aparece como {usr}, así que un error de escritura es fácil de ver.
  • Una variable sin datos en ese mensaje queda vacía. {level} en un mensaje de bienvenida no tiene ningún nivel que mostrar, así que desaparece. Algunas lo dicen en su lugar: N/A, Desconocido, Nunca, Sin boost.
  • Los valores nunca se vuelven a leer. Si el mensaje de un miembro contiene {server_owner}, {message_content} muestra ese texto tal cual, no se convierte en una mención.
  • No hay filtros ni condiciones. Cosas como {user.name|upper} o “si tiene boost, di X” no son parte de las variables. Para eso, escribe un comando personalizado en Petto Code.
  • Las funciones no pueden contener otras variables. {choose:Hola {user}|Hey} no funciona. Pon la variable afuera: {choose:Hola|Hey} {user}!
  • No hay carácter de escape. Una variable que Petto conoce se reemplaza incluso dentro del formato code. Para mostrar una como texto, por ejemplo en un mensaje de ayuda, descríbela con palabras.
  • Los límites de Discord siguen aplicando. El texto después del reemplazo tiene que caber en el mensaje: 2,000 caracteres para un mensaje, 4,096 para la descripción de un embed, 256 para un título, 100 para el nombre de un canal o hilo.
Como las mayúsculas no importan, {USER_MENTION} y {Server} también funcionan.
Un ! justo antes de una mención, incluso antes de {user.mention}, la vuelve una mención silenciosa: se ve como mención y no avisa a nadie.

Dónde funciona cada grupo

Los grupos de Todos los mensajes funcionan en todos los lugares que aceptan variables. Los demás solo tienen datos en el mensaje de su función. Algunas funciones también tienen sus propios placeholders que no son parte de este motor, como {count} en los nombres de contadores o {number} en los nombres de tickets. Están en Placeholders de una función. Los timers envían su texto exactamente como está escrito, sin variables.

Todos los mensajes

Usuario

El miembro del que trata el mensaje: quien entró, quien escribió el activador, quien subió de nivel, quien usó el comando.
chu crea un embed con variables {user.*} y Petto lo muestra lleno: la mención de chu, su usuario, ID, fecha y puesto de entrada, rol más alto, color, roles y No en mejora

En Discord: un embed guardado hecho con un código con las variables de User, lleno con chu.

Convierte los números _timestamp en una fecha que se muestra en la zona horaria de cada lector: <t:{user.created_at_timestamp}:R> da “hace 6 años”, <t:{user.joined_at_timestamp}:D> da “19 de octubre de 2026”.

Usuario (antiguas)

Los nombres originales. Siguen funcionando y dan lo mismo que su versión con punto.
chu crea un embed con {user_name}, {user_nick} y los otros nombres antiguos, y Petto los llena, con No mejora al final

En Discord: los nombres antiguos dan los mismos datos.

Servidor

Petto llena el dueño, la fecha de creación, 1840 miembros con personas y bots contados aparte, las mejoras y un miembro al azar

En Discord: las variables de Server con los números de Petto Land.

Las cantidades sin bots, la cantidad de bots, la posición de entrada y el miembro al azar se calculan con los miembros que Petto tiene cargados. En servidores muy grandes pueden variar un poco.

Guild

Versiones con punto de los datos del servidor, más algunos extras.
Petto llena la cantidad de miembros, el nivel de mejoras, roles, canales, emojis, fecha de creación, vanity y límite de miembros de Petto Land

En Discord: las variables de Guild, con Nivel 2 en palabras y N/A para una vanity que el servidor no tiene.

Canal

El canal donde se envía el mensaje (en un MD al entrar, el MD).
chu crea el embed en general y Petto llena la mención, el nombre, el ID y el tema de general

En Discord: las variables de Channel para el canal del mensaje.

Invitaciones

Solo en mensajes de bienvenida y MD al entrar: la invitación que usó el miembro nuevo. Petto necesita Gestionar servidor para ver las invitaciones.
Petto le da la bienvenida a Mia en el canal de bienvenidas, invitada por kira que ahora tiene 12 invitaciones, con el código de la invitación

En Discord: una bienvenida con las variables de Invites.

Fecha y hora

Petto llena la fecha de hoy, la hora actual y hace cuánto, una hora dentro de 2 horas y la fiesta de Año Nuevo el 31 de diciembre

En Discord: {date}, {timestamp} y dos momentos escritos; las marcas de tiempo se ven en la zona horaria de cada lector.

{timestamp:…} lee el momento como lo dirías: in 2h, 3d 4h, tomorrow 8pm, today 18:30, 2026-12-31 23:59, un número unix o un timestamp de Discord. Las horas se leen en hora de Colombia (GMT-5), a menos que terminen en utc (2026-12-31 23:59 utc). Después de | va el estilo: short_time, long_time, short_date, long_date, full, full_long, short_datetime, medium_datetime o relative (o las letras de Discord t T d D f F s S R). Sin estilo es full. Un momento que Petto no puede leer no da nada.
Ejemplos
Los timestamps de Discord (todas las variables {timestamp…}) se muestran en el texto del mensaje, las descripciones de los embeds y los campos. En los títulos, pies y nombres de autor de los embeds Discord muestra el código <t:…> tal cual, así que usa {date} ahí.

Funciones

Petto muestra un resultado de dado, una línea divisoria y uno de tres juegos elegido al azar

En Discord: {range}, {separator}, {choose} y {newline}.

{choose1:…}, {choose2:…} y así sucesivamente funcionan igual, si te gusta numerarlos. Cada uno se elige por separado.

Acciones e imágenes

Una votación de pizza o tacos de Petto en general con las reacciones 🍕 y 🌮 debajo

En Discord: un embed guardado con dos {reactreply:...}: Petto reacciona a su propio mensaje.


Nombres de otros bots

Estos nombres, que usan otros bots, también funcionan y dan lo mismo que la variable de Petto de la derecha. Se escriben igual con mayúsculas o minúsculas.
chu usa {mention}, {username}, {server}, {server.members} y {boost.*} y Petto los llena

En Discord: los nombres de otros bots funcionan como su variable de Petto.

Variables de un evento

Mensaje que lo activa

El mensaje que activó la respuesta. Funciona en autorrespuestas, comandos personalizados, auto-hilo y subidas de nivel por texto.
nova dice buenos días y Petto responde citando {message_content} con el enlace del mensaje

En Discord: una autorrespuesta que cita el mensaje que la activó.

Argumentos del comando

Lo que el miembro escribió después del nombre del comando en un comando personalizado, o después del activador en una autorrespuesta. El texto entre comillas cuenta como un solo argumento. Las menciones que escribe el miembro nunca notifican a nadie a través de estas. Los ejemplos son para !hug Mia "gran mundo" ahora:
kira escribe !hug con Mia, un texto entre comillas y una palabra, y Petto llena {arg1}, {arg_count}, {args}, {args_from:2} y el comando

En Discord: un comando personalizado con sus argumentos.

Niveles

En el mensaje de subida de nivel, su embed guardado y las tarjetas de rank.
Petto dice que chu llegó al nivel 12, con una barra de 10 segmentos, la XP que falta, el puesto 3 de 120 y el rol Habitual

En Discord: un mensaje de subida de nivel con su barra de progreso y rol de premio.

En el texto de subida de nivel (no en los embeds guardados), {EMOJI} se reemplaza por el ícono de estrella de Petto.

Sorteos

En los mensajes de sorteos y sus embeds guardados.
Petto anuncia que Luna ganó Discord Nitro entre 87 participantes, organizado por liam, 1 ganador, Terminado

En Discord: un mensaje de ganador hecho con un embed guardado con {gw.*}.

El mensaje de ganador se usa cuando no hay tiempo para reclamar; si lo hay, se envía en cambio el mensaje de reclamo. En los mensajes de ganador, reclamo, aceptación y rechazo {user} es el ganador. En el mensaje del sorteo en sí no hay miembro, así que usa {gw.host}.

Recordatorio de bump

Petto le agradece el bump a chu y dice que el siguiente es dentro de 2 horas

En Discord: el agradecimiento del bump con {nextBump}.

Sanciones

En los mensajes de sanción: el MD, la respuesta y el registro.
Por mensaje directo Petto le dice a Bruno que fue baneado temporalmente de Petto Land: caso 42, la razón, 7 días, el moderador y el enlace para apelar

En Discord: un mensaje directo de baneo hecho con un embed guardado con {case.*}.

Starboard

En el diseño del repost del starboard.
Petto vuelve a publicar el meme de nova con 7 estrellas, el canal, el texto, el enlace y cuándo se envió

En Discord: una publicación del starboard hecha con un embed guardado con {star.*}.

Monkeyboard

Lo mismo que el starboard, para el monkeyboard: {monkey.count}, {monkey.emoji}, {monkey.channel}, {monkey.channel_name}, {monkey.link}, {monkey.message_id}, {monkey.author}, {monkey.author_name}, {monkey.author_id}, {monkey.author_avatar}, {monkey.content}, {monkey.image}, {monkey.attachments} y {monkey.time}.
La publicación del monkeyboard del mensaje de nova con 5 monos

En Discord: el mismo diseño con {monkey.*}.

Clownboard

Lo mismo que el starboard, para el clownboard: {clown.count}, {clown.emoji}, {clown.channel}, {clown.channel_name}, {clown.link}, {clown.message_id}, {clown.author}, {clown.author_name}, {clown.author_id}, {clown.author_avatar}, {clown.content}, {clown.image}, {clown.attachments} y {clown.time}.
La publicación del clownboard del mensaje de nova con 9 payasos

En Discord: el mismo diseño con {clown.*}.

Sugerencias

En el diseño de una sugerencia.
La sugerencia 12 de Mia, aprobada, con los votos, el porcentaje y la respuesta de kira

En Discord: un diseño de sugerencia con {suggestion.*}.

Confesiones

En el diseño de una confesión.
La confesión 12 con su texto, su ID y cuándo se envió

En Discord: un diseño de confesión con {confession.*}.

Encuestas

En el diseño de una encuesta. Los botones para votar se agregan debajo.
Una encuesta con dos opciones y sus barras, 6 votos, una opción, abierta, cierra dentro de 2 horas, creada por liam

En Discord: un diseño de encuesta con {poll.*}.

Partners

En las respuestas de Partners.
Petto anuncia la alianza Cozy Club con 1240 miembros y le agradece a Chillet, con la cuenta y el puesto de la semana

En Discord: una respuesta de alianza con {partner.*}.

Solicitudes

En la respuesta a quien hace una solicitud.
Petto le dice a Mia que su pedido 12 de un banner está abierto y dónde lo ve el staff

En Discord: la respuesta a un pedido con {request.*}.

Formularios

En el embed guardado de un mensaje de formulario (enviado, aceptado, rechazado).
Por mensaje directo Petto le dice a Mia que su postulación al staff 12 fue aceptada, con la razón

En Discord: una respuesta de formulario por mensaje directo con {form.*}.

Honeypot

En el mensaje de un canal honeypot.
Petto avisa que no se escriba en el canal trampa, que escribir ahí da un softban y que 17 fueron atrapados

En Discord: el mensaje de un canal honeypot con {honeypot.*}.

Metas de contadores

En el embed guardado de una meta de contador. El texto simple del anuncio usa las formas cortas.
Petto celebra que Petto Land llegó a 1800 miembros y ahora tiene 1840

En Discord: un embed de meta con {counter.*}.

Verificación

Por mensaje directo Petto le pide a Mia que se verifique con el enlace para entrar a Petto Land

En Discord: el mensaje directo de verificación con {verify.link}.

Vanity y Server Tag

En los mensajes de agradecimiento y el registro de las reglas de Vanity y Server Tag.
Petto le agradece a chu por tener cinnamochi en su estado, da el rol Rep y muestra el estado, la regla y la acción

En Discord: un agradecimiento de Vanity hecho con un embed guardado con {rule.} y {vanity.}.

Rollouts

En las alertas de Rollouts sobre los experimentos de Discord.
Petto dice que un experimento pasó de 37.5% a 50%, con su tipo, estado, plataformas e ID

En Discord: una alerta de Rollout hecha con un embed guardado con {rollout.*}.

Misiones

En los embeds guardados de las alertas de Misiones. Son muchas, así que están plegadas.
Petto anuncia una misión nueva: el juego, quien la publica, 200 Orbs por ver un video de 2 minutos, las plataformas, cuándo termina y el enlace

En Discord: una alerta de Misiones hecha con un embed guardado con {quest.*}.


Feeds

En las palabras sobre cada aviso de un feed (!feed message). Solo funcionan ahí.
Petto dice que hay un video nuevo en YouTube, con su título, la cuenta y el enlace

En Discord: las palabras sobre un aviso de feed con {feed.*}.

Placeholders de una función

Estos placeholders cortos los rellena la propia función, no el motor de arriba. Solo funcionan en el lugar indicado. Donde la tabla dice sí en “También variables”, las variables normales también funcionan en ese mismo texto.

Contadores

El nombre de un contador es cualquier texto con {count}. Discord permite 100 caracteres en el nombre de un canal y 1,024 en un tema.
Ejemplos
El texto de las metas acepta {count} (miembros ahora), {goal} o {milestone} (el número alcanzado) y {server}, con los números agrupados (1,000):
Ejemplo

Tickets

Los nombres de los canales se pasan a minúsculas, los acentos y símbolos se convierten en -, y se cortan a los 90 caracteres: {category}-{username} da soporte-liam. Un embed guardado como bienvenida del ticket usa en cambio las variables normales (el miembro es quien lo abrió, el canal es el ticket).
Ejemplos

Formularios y apelaciones

Los mensajes de formularios (el MD después de enviar, aceptar o rechazar, que se configura con !form message) aceptan {form} (el título), {number}, {server}, {status} y {reason}, y también las variables normales, así que {user} menciona al miembro. Un embed guardado para esos mensajes usa en cambio el grupo Formularios. Los mensajes de apelaciones (que se configuran en el dashboard) aceptan {username}, {server}, {reason}, {form} y {link} (la página de estado de la apelación). El mensaje de “enviada” y el aviso de respuesta del staff solo rellenan {server}, y el nombre del hilo solo {username}. La línea sobre apelaciones en el MD de una sanción acepta {server} y {link}; si no tiene {link}, el enlace se agrega al final.

Recetas

Listas para copiar y pegar. Cada una dice dónde va y qué ve el miembro.
Comando
Resultado
Comando
Resultado
Con --milestone 10 --message "¡{user} llegó al nivel 10 y desbloqueó {level_role}!" ese nivel tiene su propio texto.
Comando
Resultado
Comando
Resultado
Comando
Resultado
Comando
Resultado
Comando
Resultado
Crea un embed llamado ban-dm desde un código, y luego úsalo para el MD de los baneos:
Comandos
El miembro recibe un embed con el título ”🔨 Fuiste baneado de Cozy Corner” con la razón, Nunca como final y el enlace de apelación.
Comando
Resultado
Cada lector ve la hora en su propia zona horaria. La hora que escribes se lee en hora de Colombia (GMT-5); agrega utc para escribirla en UTC.