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

5.2 KiB

🛠️ 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.

if (msg.is(CMD_PREFIX + "video")) {
  // Executa comando
}

Retorno: boolean


msg.reply(text)

Responde à mensagem atual com quote (citação).

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.

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.

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.

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.

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).

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.

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.

// 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.

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.

api.log.info("Mensagem recebida:", msg.body);

api.log.warn(...args)

Log de aviso.

api.log.warn("Configuração ausente, usando padrão");

api.log.error(...args)

Log de erro.

api.log.error("Falha ao processar:", erro);

Objeto de Configuração

Importe configurações do manybot.conf:

import { CMD_PREFIX, CLIENT_ID, CHATS, PLUGINS } from "../../config.js";

// Configurações personalizadas também funcionam
import { MEU_PREFIXO } from "../../config.js";

Exemplo Completo

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!");
}