Límites y errores
Todos los topes de los bots de Huwi (mensajes, turnos, publicaciones, componentes, webhooks) y los códigos de error de la API con lo que significan.
Los topes protegen a la gente de los mensajes no pedidos y a Huwi de los abusos. Los de esta tabla salen del código de Huwi (pnpm sync); el equipo puede ajustarlos desde su panel, así que mira la respuesta de la API si algo cambió.
Límites
| Qué | Tope | Nota |
|---|---|---|
| Bots por cuenta | 10 | Con Premium y 18 años o más. |
| Claves por bot | 1 | Una clave nueva anula la anterior. |
| Mensajes por segundo (todo el bot) | 30 | Pasado el tope: TOO_MANY_REQUESTS botRate. |
| Mensajes por chat en una ráfaga | 5 cada 5 s | Pasado el tope: TOO_MANY_REQUESTS botRate. |
| Respuestas por turno de la persona | 5 | Cada mensaje o toque de botón de la persona abre un turno. |
| Mensajes sin turno nuevo, por chat | 10 por día | Lo que pasa de las respuestas del turno. |
| Mensajes en un grupo | 20 por minuto | Por grupo; en grupos no hay turnos. |
| Bots en un grupo | 5 | |
| Publicaciones | 50 por día | TOO_MANY_REQUESTS botDaily. |
| Historias | 20 por día | TOO_MANY_REQUESTS botDaily. |
| Comentarios | 300 por día | TOO_MANY_REQUESTS botDaily. |
| Reacciones y me gusta | 1000 por día | TOO_MANY_REQUESTS botDaily. |
| Seguir cuentas | 200 por día | TOO_MANY_REQUESTS botDaily. |
| Lecturas | 120 por minuto | Todas las consultas, menos bot.updates. |
| Espera de bot.updates | hasta 25 s | Parámetro timeout, en milisegundos. |
| Novedades guardadas | 1 día | Lo que no confirmas en un día se borra. |
| Tiempo del webhook | 10 s | Tu servidor tiene este tiempo para contestar. |
| Webhook caído | pausa tras 1 día | El bot queda en pausa y @gepeto avisa. |
| Componente: tamaño | 16 KB | El JSON completo. Hoy solo lo revisan las plantillas. |
| Componente: piezas | 150 | Contando las anidadas. |
| Componente: profundidad | 6 | |
| Componente: acciones | 20 | Botones y envíos en todo el mensaje. |
| Plantillas por bot | 50 | |
| Carga útil de /start | 64 caracteres |
Turnos
Un turno es un mensaje o un toque de botón de la persona. Por cada turno, 5 mensajes de respuesta. Lo que mandes sin turno nuevo cuenta contra los 10 por día de ese chat. Mira Conversaciones.
Errores
Una respuesta de error trae un código HTTP, error.json.data.code y error.json.message.
| HTTP | data.code | message | Qué significa |
|---|---|---|---|
| 401 | UNAUTHORIZED | UNAUTHORIZED | Falta la clave, es incorrecta o ya se cambió. |
| 403 | FORBIDDEN | botPermission | El procedimiento pide un permiso apagado o está cerrado para bots. |
| 403 | FORBIDDEN | botPaused | El bot está en pausa (bot.me dice por qué). |
| 403 | FORBIDDEN | notAllowed | La persona no le escribió o lo detuvo, un bot intenta hablar con otro bot, o es una persona menor sin un bot apto. |
| 403 | FORBIDDEN | apiKey | Es algo del dueño de la cuenta (cerrar sesión, claves, pagos). Una clave nunca lo puede hacer. |
| 403 | FORBIDDEN | bot | Ese procedimiento es solo para cuentas de bot (por ejemplo bot.me llamado por una persona). |
| 429 | TOO_MANY_REQUESTS | botRate | Pasaste un tope de mensajes: ráfaga, turnos, grupo o lecturas. Espera un poco. |
| 429 | TOO_MANY_REQUESTS | botDaily | Pasaste el tope del día de publicar, historias, comentar, reaccionar o seguir. |
| 400 | BAD_REQUEST | webhookActive | Pides bot.updates con un webhook puesto. |
| 400 | BAD_REQUEST | url | El webhook no es https. |
| 400 | BAD_REQUEST | components-size, components-nodes, components-depth, components-actions | Una plantilla pasó un tope de componentes. Con message.send todavía no se revisan (ver Componentes). |
| 400 | BAD_REQUEST | blocked, use-message | upload.fromUrl y bot.startStream hoy no están disponibles con la base real. |
| 400 | BAD_REQUEST | una lista de campos | La entrada no cumple el esquema; el mensaje dice cuál campo (path) y por qué. |
| 404 | NOT_FOUND | NOT_FOUND | No existe, o no es tuyo (por ejemplo, borrar una publicación ajena). |
| 429 | TOO_MANY_REQUESTS | rate-limited | La persona con la que hablas pasó su tope de mensajes por minuto (no es de tu bot). |
En grupos, además: bot-limit (más de 5 bots) y bot-minors (hay menores y el bot no es apto) al agregar un bot.
Los errores en desarrollo traen más detalle
En un servidor de desarrollo de Huwi, el error incluye un stack. En producción no. No dependas de él.
Cómo reintentar
TOO_MANY_REQUESTS: espera unos segundos (una ráfaga se libera en 5) y reintenta con el mismoclientId.botDaily: no reintentes hasta mañana.FORBIDDENyBAD_REQUEST: no se arreglan reintentando; corrige la causa.- Un corte de red o un 5xx: reintenta con espera creciente.
Referencia de la API
Cómo se llama la API de Huwi con la clave de un bot, la forma de las respuestas y los errores, los procedimientos principales con su entrada y salida, y la lista completa por permiso.
Cambios de la API
Los cambios de la API de Huwi que ven los bots, del más nuevo al más viejo. Salen del registro oficial de Huwi.