Principios que aplican en todas partes
- Verbos cortos y en minúsculas.
/recordar,/cancelar,/ajustes. Evita sinónimos para la misma acción. - Pocos comandos de primer nivel. Agrupa acciones relacionadas (
/recordatorio agregar,/recordatorio lista) en vez de diez nombres sueltos. - Ofrece siempre
/start(donde exista),/helpy una forma de cancelar. Las propias pautas de Telegram recomiendan/start,/helpy/settings. - Valida la entrada en la plataforma cuando se pueda (opciones de Discord, botones) en lugar de interpretar texto libre.
- Planea dos idiomas si tu público lo necesita. La mayoría de plataformas permiten traducir nombres o descripciones; mira internacionalizar bots.
Redacta la lista una vez y genera los formatos de cada plataforma con el generador de comandos.
Telegram: setMyCommands, scopes e idiomas
Telegram muestra un menú de comandos junto al campo de texto. Cada comando tiene un command (1-32 caracteres: letras inglesas minúsculas, dígitos y guiones bajos) y una description.
curl -s "https://api.telegram.org/bot$TOKEN/setMyCommands" \
-H "Content-Type: application/json" \
-d '{
"commands": [
{"command": "start", "description": "Iniciar el bot"},
{"command": "recordar", "description": "Crear un recordatorio"},
{"command": "ajustes", "description": "Idioma y zona horaria"}
],
"scope": {"type": "all_private_chats"},
"language_code": "es"
}'
Extras útiles:
- Scopes: muestran listas distintas en distintos lugares:
default,all_private_chats,all_group_chats,all_chat_administrators, o un solochat/chat_member. Los comandos solo para administradores van enall_chat_administrators. language_code: define una lista para usuarios con ese idioma de interfaz, por ejemplo"es". Los demás ven la lista por defecto.- Enlaces profundos
t.me/TuBot?start=datopasan un parámetro a/start; créalos con el constructor de enlaces profundos. - Botón de menú (
setChatMenuButton): puede abrir la lista de comandos o una Mini App.
El constructor de listas de comandos genera el texto para BotFather y el JSON de arriba. En grupos, recuerda el modo privacidad.
Discord: comandos de barra, subcomandos y menús contextuales
Discord tiene tres tipos de comandos de aplicación:
- Comandos de barra (chat input):
/nombrecon opciones tipadas. Nombre de 1-32 caracteres, descripción de 1-100, hasta 25 opciones. - Comandos de usuario: aparecen al hacer clic derecho en un usuario (Apps > Tu comando).
- Comandos de mensaje: aparecen al hacer clic derecho en un mensaje; ideales para "Traducir", "Reportar" o "Guardar".
Agrupa acciones relacionadas con subcomandos: /recordatorio agregar, /recordatorio lista, /recordatorio borrar. Un comando con subcomandos no se puede invocar solo, lo que mantiene limpio el primer nivel.
{
"name": "reminder",
"description": "Manage reminders",
"options": [
{"type": 1, "name": "add", "description": "Add a reminder",
"options": [{"type": 3, "name": "when", "description": "e.g. 10m, 2h, tomorrow 9:00", "required": true}]},
{"type": 1, "name": "list", "description": "List your reminders"}
],
"name_localizations": {"es-ES": "recordatorio"},
"description_localizations": {"es-ES": "Gestiona recordatorios"}
}
type: 1 es un subcomando y type: 3 una opción de texto. Usa default_member_permissions para comandos de administración y contexts para permitir o bloquear los DMs. Detalles de implementación: comandos de barra en discord.js v14 y la guía de bot de Discord en Python. El constructor de comandos de Discord genera JSON válido.
Slack: comandos de barra
Los comandos de Slack se declaran en la configuración de la app (o en el manifiesto) con una URL de petición. Cuando un usuario ejecuta uno, Slack envía un POST con formulario y tu app debe confirmarlo en 3 segundos. Para trabajo más largo, confirma de inmediato y publica el resultado después con el response_url. Con Bolt es await ack() primero y luego el trabajo. Las respuestas ricas usan Block Kit; prueba el constructor de Block Kit y la guía de bots de Slack.
WhatsApp: sin menú de comandos, usa botones
Los usuarios de WhatsApp casi no escriben comandos, y la Cloud API no tiene un menú de comandos equivalente al de Telegram. Diseña con mensajes interactivos:
- Botones de respuesta: hasta 3 botones debajo de un mensaje, ideales para sí/no o un menú corto.
- Mensajes de lista: un botón que abre una lista de hasta 10 filas agrupadas en secciones, para menús con más opciones.
- Palabras clave de respaldo: acepta unas pocas palabras como "menú", "ayuda" o "agente", sin distinguir mayúsculas, y responde con el menú principal.
Los mensajes interactivos son mensajes libres, así que solo pueden enviarse dentro de la ventana de atención de 24 horas (mira tu primer mensaje con WhatsApp Cloud API). Créalos en el constructor de mensajes de WhatsApp.
Ayuda y descubrimiento
/helpdebe caber en una pantalla: cada comando con una línea y un ejemplo.- Responde a entradas desconocidas con una pista corta y el menú, no con un error.
- Muestra la lista de comandos después de la bienvenida, no un muro de texto en
/start. - Versiona tus comandos: si renombras uno, conserva el viejo como alias oculto por un tiempo.
Resumen
| Plataforma | Se registra con | Dónde ven los comandos |
|---|---|---|
| Telegram | setMyCommands (o /setcommands en BotFather) |
Botón de menú y sugerencias con / |
| Discord | API de comandos de aplicación (PUT) |
Selector / y menú contextual Apps |
| Slack | Configuración o manifiesto de la app | Autocompletado / en el editor |
| No aplica | Botones y listas en los mensajes |
Fuentes
- Telegram Bot API, setMyCommands y BotCommandScope: core.telegram.org/bots/api#setmycommands
- Telegram, funciones de bots (comandos y comandos globales): core.telegram.org/bots/features#commands
- Discord Developer Docs, comandos de aplicación: discord.com/developers/docs/interactions/application-commands
- Slack API, comandos de barra: api.slack.com/interactivity/slash-commands
- Meta for Developers, mensajes interactivos de WhatsApp: developers.facebook.com/docs/whatsapp/cloud-api/messages/interactive-reply-buttons-messages
Comparativas y herramientas relacionadas
Preguntas frecuentes
¿Cuántos comandos debe tener un bot?
Los mínimos de primer nivel que cubran las tareas principales, muchas veces menos de diez. Agrupa el resto como subcomandos o detrás de botones.
¿Puedo mostrar comandos distintos a los administradores?
Sí. Telegram tiene el scope all_chat_administrators y Discord tiene default_member_permissions. Revisa siempre los permisos también en el servidor.