Referência da API
A API é responsável por montar o objeto ctx que cada plugin recebe. Plugins só podem interagir
com o bot através do que está exposto aqui, nunca têm acesso direto ao client do whatsapp-web.js.
Para entender melhor é recomendado inspencionar o arquivo pluginApi.js.
O ctx tem duas variantes dependendo do ciclo de vida:
buildSetupApi(client, pluginRegistry) → ctx (setup)
Passado para plugin.setup(ctx) durante a inicialização do bot, antes de qualquer mensagem chegar.
Útil para registrar listeners, agendar tarefas, ou fazer setup one-time. Não tem msg, chat,
nem os métodos de send para o chat atual - apenas os sendTo para enviar para um chat por ID específico.
buildApi({ msg, chat, client, pluginRegistry }) → ctx (runtime)
Passado para plugin.default(ctx) toda vez que uma mensagem chega num chat permitido. Contém tudo
do setup mais o contexto completo da mensagem e os métodos de envio para o chat atual.
ctx.config
Acesso ao CONFIG global do bot. Os valores vêm do arquivo ~/.manybot/manybot.conf do usuário, com defaults aplicados em cima.
| Método | Assinatura | Descrição |
|---|---|---|
get |
(key, defaultValue?) |
Retorna o valor da chave ou defaultValue se ausente. Default do segundo argumento é null. |
all |
— | Objeto CONFIG completo, somente leitura. Evite mutá-lo. |
ctx.i18n
API de internacionalização. O bot tem traduções no core, mas plugins podem ter suas próprias pastas de locale.
| Método | Assinatura | Descrição |
|---|---|---|
t |
(key, ...args) |
Traduz uma chave dos locales do core. |
createT |
(import.meta.url) |
Cria uma função t() escopada para os locales do próprio plugin. Passe import.meta.url do arquivo do plugin. |
reload |
() |
Recarrega todas as traduções do disco - útil após troca de idioma em runtime. |
getCurrentLang |
() |
Retorna o código do idioma atual (ex: "pt", "en"). |
ctx.utils
Utilitários de uso geral expostos para plugins.
| Método | Assinatura | Descrição |
|---|---|---|
emptyFolder |
(folder) |
Apaga o conteúdo de uma pasta sem remover a pasta em si. Útil para limpar caches de mídia. |
getChatId |
(chat) |
Retorna o ID serializado de um objeto chat (ex: "5511999999999@c.us"). |
ctx.download
Fila de downloads controlada pelo kernel. Plugins não devem fazer downloads pesados diretamente - enfileirem via essa API para não travar o event loop.
| Método | Assinatura | Descrição |
|---|---|---|
enqueue |
(workFn, errorFn?) |
Adiciona uma função assíncrona à fila de download. errorFn é chamado se workFn lançar. |
ctx.plugins
Permite que plugins se comuniquem entre si via suas APIs públicas (o que o plugin exporta em exports). Análogo a um sistema de DI leve.
| Método | Assinatura | Descrição |
|---|---|---|
get |
(name) |
Retorna a API pública do plugin ou null se não estiver ativo. Use quando a dependência é opcional. |
require |
(name) |
Retorna a API pública ou lança um erro se o plugin não existir ou não estiver ativo. Use quando a dependência é obrigatória. |
exists |
(name) |
Retorna true se o plugin estiver ativo. Útil para feature flags baseadas em plugins instalados. |
ctx.log
Wrapper sobre o logger interno. Preferir isso a console.log para manter o formato de log consistente com o resto do bot.
| Método | Quando usar |
|---|---|
info(...args) |
Informação geral de fluxo. |
warn(...args) |
Algo inesperado mas não fatal. |
error(...args) |
Erros que precisam de atenção. |
success(...args) |
Confirmação de operação concluída. |
ctx.sendTo (setup + runtime)
Disponível em ambos os contextos. Envia para qualquer chat pelo ID serializado, independente de qual chat disparou o evento. Útil para notificações, alertas para grupos de admin, etc.
| Método | Assinatura | Descrição |
|---|---|---|
sendTo |
(chatId, text) |
Envia texto para um chat por ID. |
sendImageTo |
(chatId, filePath, caption?) |
Envia imagem a partir de um caminho no disco. |
sendVideoTo |
(chatId, filePath, caption?) |
Envia vídeo a partir de um caminho no disco. |
sendAudioTo |
(chatId, filePath) |
Envia áudio como mensagem de voz. |
sendStickerTo |
(chatId, source) |
Envia sticker. source pode ser um caminho (string) ou um Buffer — nesse caso usa mimetype image/webp. |
ctx.send (runtime only)
Atalhos para enviar para o chat que originou a mensagem atual. Internamente usam o mesmo makeSender que os sendTo.
| Método | Assinatura | Descrição |
|---|---|---|
send |
(text) |
Envia texto para o chat atual. |
sendImage |
(filePath, caption?) |
Envia imagem para o chat atual. |
sendVideo |
(filePath, caption?) |
Envia vídeo para o chat atual. |
sendAudio |
(filePath) |
Envia áudio como mensagem de voz para o chat atual. |
sendSticker |
(source) |
Envia sticker para o chat atual. |
Para responder com quote use
ctx.msg.reply(text)em vez dectx.send(text).
ctx.msg (runtime only)
Contexto da mensagem que disparou o handler. Tudo que você precisa para inspecionar e reagir a uma mensagem.
| Propriedade/Método | Tipo | Descrição |
|---|---|---|
body |
string |
Texto da mensagem. String vazia se não houver. |
type |
string |
Tipo da mensagem — "chat", "image", "video", "audio", etc. |
fromMe |
boolean |
true se a mensagem foi enviada pelo próprio bot. |
sender |
string |
ID do remetente — msg.author em grupos, msg.from em privado. |
senderName |
string |
Nome de exibição do contato (notifyName) ou o número limpo caso não disponível. |
args |
string[] |
body splitado por whitespace. Útil para parsear argumentos de comando. |
is(cmd) |
boolean |
Retorna true se o body começa com cmd (case-insensitive). Principal forma de detectar comandos. |
hasMedia |
boolean |
true se a mensagem tem mídia anexada. Cheque antes de chamar downloadMedia(). |
isGif |
boolean |
true se a mídia for um GIF. |
downloadMedia() |
Promise<{mimetype, data}|null> |
Baixa a mídia da mensagem. Retorna objeto com mimetype e data em base64, ou null se falhar. |
hasReply |
boolean |
true se a mensagem é uma resposta a outra mensagem. |
getReply() |
Promise<Message|null> |
Retorna a mensagem citada como objeto do whatsapp-web.js, ou null. |
reply(text) |
Promise |
Responde à mensagem com quote. Diferente de ctx.send(), que manda sem quote. |
react(emoji) |
Promise |
Adiciona uma reação de emoji à mensagem. |
ctx.chat (runtime only)
Informações básicas sobre o chat onde a mensagem chegou. O kernel já garantiu que esse chat está na lista de permitidos.
| Propriedade | Tipo | Descrição |
|---|---|---|
id |
string |
ID serializado do chat (ex: "5511999999999@c.us" ou "120363...@g.us"). |
name |
string |
Nome do chat ou grupo. Cai pro id.user se não tiver nome. |
isGroup |
boolean |
true se o chat for um grupo (ID termina em @g.us). |
ctx.botId
string | null — ID serializado do próprio bot (client.info.wid._serialized). Pode ser null se o client ainda não estiver totalmente pronto quando o plugin inicializar.