Files
manybot/docs/API.md
2026-04-21 11:18:19 -03:00

278 lines
5.2 KiB
Markdown

# 🛠️ Referência da API
Documentação completa dos objetos disponíveis nos plugins.
---
## Objeto `msg`
Contém informações da mensagem recebida.
### Propriedades
| Propriedade | Tipo | Descrição |
|-------------|------|-----------|
| `msg.body` | `string` | Texto completo da mensagem |
| `msg.args` | `string[]` | Tokens da mensagem. Ex: `"!video url"``["!video", "url"]` |
| `msg.type` | `string` | Tipo da mensagem: `chat`, `image`, `video`, `audio`, `sticker`, `ptt` (voz), `document`, `location` |
| `msg.sender` | `string` | ID do remetente (formato: `NUMERO@c.us` ou `NUMERO@g.us`) |
| `msg.senderName` | `string` | Nome de exibição do remetente |
| `msg.fromMe` | `boolean` | `true` se o próprio bot enviou a mensagem |
| `msg.hasMedia` | `boolean` | `true` se a mensagem contém mídia |
| `msg.hasReply` | `boolean` | `true` se é uma resposta a outra mensagem |
| `msg.isGif` | `boolean` | `true` se a mídia é um GIF |
| `msg.timestamp` | `number` | Timestamp Unix da mensagem |
### Métodos
#### `msg.is(cmd)`
Verifica se a mensagem começa com o comando especificado.
```javascript
if (msg.is(CMD_PREFIX + "video")) {
// Executa comando
}
```
**Retorno:** `boolean`
---
#### `msg.reply(text)`
Responde à mensagem atual com quote (citação).
```javascript
await msg.reply("Resposta com citação!");
```
**Parâmetros:**
- `text` (string): Texto da resposta
**Retorno:** `Promise<void>`
---
#### `msg.downloadMedia()`
Baixa a mídia da mensagem.
```javascript
const media = await msg.downloadMedia();
// Retorna: { mimetype: "image/jpeg", data: "base64string..." }
```
**Retorno:** `Promise<{ mimetype: string, data: string } | null>`
---
#### `msg.getReply()`
Retorna a mensagem que foi citada.
```javascript
const mensagemCitada = msg.getReply();
if (mensagemCitada) {
console.log(mensagemCitada.body);
}
```
**Retorno:** `msg object | null`
---
## Objeto `api`
Contém métodos para interagir com o WhatsApp e outros plugins.
### Propriedades
#### `api.chat`
Informações do chat atual.
| Propriedade | Tipo | Descrição |
|-------------|------|-----------|
| `api.chat.id` | `string` | ID do chat |
| `api.chat.name` | `string` | Nome do chat |
| `api.chat.isGroup` | `boolean` | `true` se é grupo |
---
### Métodos de Envio
#### `api.send(text)`
Envia uma mensagem de texto.
```javascript
await api.send("Mensagem enviada!");
```
**Parâmetros:**
- `text` (string): Texto a enviar
**Retorno:** `Promise<void>`
---
#### `api.sendVideo(filePath)`
Envia um vídeo do sistema de arquivos.
```javascript
await api.sendVideo("/caminho/para/video.mp4");
```
**Parâmetros:**
- `filePath` (string): Caminho para o arquivo
**Retorno:** `Promise<void>`
---
#### `api.sendAudio(filePath)`
Envia um áudio como mensagem de voz (PTT).
```javascript
await api.sendAudio("/caminho/para/audio.mp3");
```
**Parâmetros:**
- `filePath` (string): Caminho para o arquivo
**Retorno:** `Promise<void>`
---
#### `api.sendImage(filePath, caption?)`
Envia uma imagem.
```javascript
await api.sendImage("/caminho/para/imagem.jpg", "Legenda opcional");
```
**Parâmetros:**
- `filePath` (string): Caminho para o arquivo
- `caption` (string, opcional): Legenda da imagem
**Retorno:** `Promise<void>`
---
#### `api.sendSticker(bufferOuPath)`
Envia uma figurinha. Aceita `Buffer` ou caminho para arquivo.
```javascript
// Com Buffer
const buffer = fs.readFileSync("imagem.png");
await api.sendSticker(buffer);
// Com caminho
await api.sendSticker("/caminho/para/imagem.png");
```
**Parâmetros:**
- `bufferOuPath` (`Buffer` | `string`): Dados da imagem ou caminho
**Retorno:** `Promise<void>`
---
### Métodos de Plugin
#### `api.getPlugin(name)`
Acessa a API pública de outro plugin.
```javascript
const utils = api.getPlugin("utilidades");
const data = utils.formatarData(new Date());
```
**Parâmetros:**
- `name` (string): Nome do plugin
**Retorno:** `object | undefined`
---
### Métodos de Log
#### `api.log.info(...args)`
Log informativo.
```javascript
api.log.info("Mensagem recebida:", msg.body);
```
#### `api.log.warn(...args)`
Log de aviso.
```javascript
api.log.warn("Configuração ausente, usando padrão");
```
#### `api.log.error(...args)`
Log de erro.
```javascript
api.log.error("Falha ao processar:", erro);
```
---
## Objeto de Configuração
Importe configurações do `manybot.conf`:
```javascript
import { CMD_PREFIX, CLIENT_ID, CHATS, PLUGINS } from "../../config.js";
// Configurações personalizadas também funcionam
import { MEU_PREFIXO } from "../../config.js";
```
---
## Exemplo Completo
```javascript
import { CMD_PREFIX } from "../../config.js";
import fs from "fs";
export default async function ({ msg, api }) {
// Ignora mensagens do próprio bot
if (msg.fromMe) return;
// Comando: !eco
if (!msg.is(CMD_PREFIX + "eco")) return;
api.log.info("Comando eco recebido de:", msg.senderName);
// Se tem mídia, baixa e reenvia
if (msg.hasMedia) {
const media = await msg.downloadMedia();
await api.sendSticker(media.data);
return;
}
// Se é resposta, ecoa a mensagem citada
if (msg.hasReply) {
const citada = msg.getReply();
await msg.reply(`Você citou: "${citada.body}"`);
return;
}
// Resposta padrão
await msg.reply("Envie uma mídia ou responda uma mensagem!");
}
```