> ## Documentation Index
> Fetch the complete documentation index at: https://botmesh.afaya.com.co/llms.txt
> Use this file to discover all available pages before exploring further.

# Sub-APIs (v1) → escape hatches del transporte (v2)

En v1 el bot exponía 5 sub-APIs tipadas de WhatsApp: `bot.groups`,
`bot.profile`, `bot.privacy`, `bot.chats`, `bot.presence`. **En v2 fueron
eliminadas del core**: `@botmesh/core` es agnóstico de transporte, y la
gestión de grupos/privacidad/perfil es específica de WhatsApp — no existe
con la misma forma en Telegram o Discord.

## Qué las reemplaza

Dos capas, según lo que necesites:

### 1. Capacidades normalizadas en todos los providers

Las operaciones comunes sobrevivieron en el contrato compartido — detecta
la capacidad, nunca asumas:

```ts theme={null}
await ctx.markRead()     // provider.markRead(refs)
await ctx.typing()       // provider.typing(chatId, state)
await ctx.delete()       // provider.deleteMessage(ref)
bot.on('group', ...)     // cambios de participantes (add/remove/promote/demote)
bot.on('presence', ...)  // actualizaciones de presencia de contactos
bot.on('status', ...)    // recibos de entrega/lectura
```

Cada provider publica `provider.capabilities` (`groups`, `presence`,
`edit`, `typing`, ...) para que puedas ramificar según lo que el
transporte soporta.

### 2. El socket nativo del transporte (solo Baileys)

Para todo lo demás — crear grupos, links de invitación, ajustes de
privacidad, archivar/fijar/silenciar chats — accede al socket crudo desde
el provider de Baileys. `provider.socket` lo devuelve tipado como `unknown`
(los tipos de Baileys no forman parte de la API de `@botmesh/baileys`);
`socketOf(provider)` de `@botmesh/baileys/internal` lo devuelve tipado como
el socket de la versión de Baileys instalada (sin garantía semver). Importar
`/internal` arrastra los `.d.ts` de Baileys, que no compilan con
`skipLibCheck: false`: mantén `"skipLibCheck": true` en un proyecto que lo
use (la entrada principal no lo necesita):

```ts theme={null}
import { Bot } from '@botmesh/core'
import { BaileysProvider } from '@botmesh/baileys'
import { socketOf } from '@botmesh/baileys/internal'

const provider = new BaileysProvider({ session: 'mi-bot' })
const bot = new Bot({ provider })

bot.on('ready', async () => {
  const sock = socketOf(provider) // el socket crudo de Baileys 7, tipado
  if (!sock) return

  // Equivalente de bot.groups.create(...) de v1:
  const group = await sock.groupCreate('Mi grupo', ['573001234567@s.whatsapp.net'])

  // bot.profile.setName(...) de v1:
  await sock.updateProfileName('Mi Bot')

  // bot.privacy.setLastSeen(...) de v1:
  await sock.updateLastSeenPrivacy('all')

  // bot.groups.inviteLink(...) de v1:
  const code = await sock.groupInviteCode(group.id)
})

await bot.start()
```

> [!WARNING]
>
> **El código específico de transporte se queda específico**
>
> Todo lo que escribas contra `provider.socket` solo funciona con
> `@botmesh/baileys` (y solo contra una conexión real de WhatsApp — no con el
> `MockProvider` que usa `createTestBot()`). Protégelo detrás de
> `provider.id === 'baileys'` si tu código puede correr en otros transportes.

Ver la [documentación de Baileys](https://github.com/WhiskeySockets/Baileys)
para la API completa del socket (`groupCreate`, `groupMetadata`,
`groupParticipantsUpdate`, `updateProfilePicture`, `chatModify`, ...).

## Siguientes pasos

* [Despliegue](https://botmesh.afaya.com.co/es/guide/deploy.md) — configuración de producción
* [Referencia de API](https://botmesh.afaya.com.co/api/core.md) — documentación técnica completa


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.