new Bot() valida el objeto completo y lanza un
ConfigValidationError que nombra la primera opción incorrecta.
Opciones de BotConfig
Lo esencial
Enrutado y conversaciones
Un mensaje en
conversation.* gana al texto interno traducido; para traducir
los textos internos, ver Mensajes internos.
Envío
Identidad y espacio de nombres
Estos ids son el espacio de nombres de todo lo que escribe el bot (filas del store, datos de usuario, tareas programadas, journals durables, trazas), así que dos bots pueden compartir una base de datos.
Cambiar cualquiera de ellos más adelante hace que el bot busque en otro
espacio: las filas existentes quedan en el anterior.
Funciones de producción (opt-in)
Cada una está desactivada hasta que la configuras, y tiene su propia guía.storeConfig está obsoleta: pasa store: new MemoryStore({ file, maxMessagesPerChat, autoSaveInterval }).
Duraciones
Toda opción de duración acepta un texto o un número de milisegundos. Incluye todas las opciones cuyo nombre termina enMs (typing.minMs,
coordination.turnWaitMs, scheduler.tickMs, durability.outbox.backoff.baseMs…):
parseDuration('2m') (de @botmesh/core) usa la misma gramática y devuelve
milisegundos.
Ciclo de vida y eventos
- Los envíos, ediciones y
ctx.delete()antes destart()o después destop()rechazan conBotNotRunningError. Un listener de'ready'ya puede enviar. - Las llamadas a
start()ystop()se ejecutan de una en una, en orden. - Las señales de presencia (
ctx.typing(),ctx.markRead()) nunca lanzan con el transporte desconectado: se omiten y cuentan enmetrics().presenceSkipped.
bot.on(evento, fn) (también bot.once y bot.off):
Logs
logger acepta un LoggerLike: pino, console o cualquier objeto con
debug, info, warn y error. Providers y stores aceptan la misma opción
logger. Los paquetes siempre lo llaman al estilo pino, así que un logger
propio solo tiene que entender dos formas:
err, y child(bindings) es opcional. Sin
logger, el bot usa su propio pino en warn (debug: true lo baja a
debug); bot.logger es el logger en uso.
Los ids de chat y remitente son datos personales (teléfonos, emails), así que
las líneas de log del propio bot los hashean por defecto:
Los cuerpos de los mensajes nunca se registran.
Errores
Todos se exportan desde@botmesh/core. Compruébalos con instanceof; la
mayoría lleva además un code o name estable.
Siguientes pasos
- Conceptos básicos: el pipeline de entrada y las piezas del bot
- Mensajes y media: todo lo que
ctxpuede enviar - Operación: métricas, salud y eventos de conversación