← Voltar à introdução

🤖 Hospedar Bots na MozHost

Guia completo para fazer deploy de bots de WhatsApp, Telegram e Discord na MozHost.

Tipos de Bots Suportados

A MozHost suporta os principais tipos de bots usados em Moçambique e no mundo. Escolha a plataforma que melhor se adapta ao seu projecto.

💬

WhatsApp

Crie bots para atendimento ao cliente, vendas e automações via WhatsApp.

Baileys — Leve e rápido
Venom-bot — Fácil de usar
✈️

Telegram

Bots com comandos, inline queries, teclados personalizados e mais.

telegraf — Framework moderno
node-telegram-bot-api — Simples e directo
🎮

Discord

Bots para servidores Discord com slash commands, eventos e moderação.

discord.js — A biblioteca mais popular

💡 Dica: Todos os bots acima funcionam com Node.js. Ao criar o container, escolha o tipo Node.js para ter o ambiente já configurado.

Passo a Passo para Deploy

1

Criar um Container Node.js

Acesse a página de containers e crie um novo container do tipo Node.js. Dê um nome descritivo, por exemplo: bot-whatsapp-vendas.

💡 Lembre-se: Você precisa de no mínimo 500 coins para criar um container. Novos utilizadores recebem 600 coins gratuitos.

2

Fazer Upload do Código

Após criar o container, faça upload dos ficheiros do seu bot. Você pode enviar um arquivo .zip com todo o projecto ou conectar directamente ao seu repositório GitHub.

Certifique-se de que o seu projecto inclui:

package.json— com as dependências
index.js ou bot.js— ficheiro principal
node_modules/— não envie, será instalado automaticamente
3

Configurar Variáveis de Ambiente

No painel do container, adicione as variáveis de ambiente que o seu bot precisa. Nunca coloque tokens ou senhas directamente no código.

# Exemplos de variáveis de ambiente
BOT_TOKEN=seu_token_do_telegram_aqui
WHATSAPP_SESSION=nome_da_sessao
DISCORD_TOKEN=seu_token_do_discord
DATABASE_URL=mongodb://localhost:27017/meubot
PORT=3000

⚠️ Segurança: Nunca faça commit de tokens ou senhas no GitHub. Use sempre variáveis de ambiente.

4

Iniciar o Bot

Clique em "Iniciar" no painel do container. A MozHost irá instalar as dependências (npm install) e executar o seu bot automaticamente.

Acompanhe o estado do bot nos logs em tempo real. Se tudo correr bem, verá o status Online.

Exemplo: Bot de WhatsApp com Baileys

Um bot simples que responde a mensagens recebidas no WhatsApp usando a biblioteca Baileys.

1. package.json

{
  "name": "bot-whatsapp",
  "version": "1.0.0",
  "main": "index.js",
  "scripts": {
    "start": "node index.js"
  },
  "dependencies": {
    "@whiskeysockets/baileys": "^6.0.0",
    "qrcode-terminal": "^0.12.0"
  }
}

2. index.js

const { default: makeWASocket, useMultiFileAuthState, DisconnectReason } = require('@whiskeysockets/baileys');
const qrcode = require('qrcode-terminal');

async function iniciarBot() {
  const { state, saveCreds } = await useMultiFileAuthState('auth_info');

  const sock = makeWASocket({
    auth: state,
    printQRInTerminal: true
  });

  sock.ev.on('creds.update', saveCreds);

  sock.ev.on('connection.update', (update) => {
    const { connection, lastDisconnect } = update;
    if (connection === 'close') {
      const shouldReconnect =
        lastDisconnect?.error?.output?.statusCode !== DisconnectReason.loggedOut;
      if (shouldReconnect) {
        console.log('Reconectando...');
        iniciarBot();
      }
    } else if (connection === 'open') {
      console.log('✅ Bot conectado ao WhatsApp!');
    }
  });

  sock.ev.on('messages.upsert', async ({ messages }) => {
    const msg = messages[0];
    if (!msg.message || msg.key.fromMe) return;

    const texto = msg.message.conversation
      || msg.message.extendedTextMessage?.text
      || '';

    if (texto.toLowerCase() === 'oi') {
      await sock.sendMessage(msg.key.remoteJid, {
        text: 'Olá! 👋 Sou o bot da MozHost. Como posso ajudar?'
      });
    }

    if (texto.toLowerCase() === '!menu') {
      await sock.sendMessage(msg.key.remoteJid, {
        text: '*📋 Menu do Bot*\n\n'
          + '1️⃣ Informações\n'
          + '2️⃣ Suporte\n'
          + '3️⃣ Preços\n\n'
          + 'Responda com o número da opção.'
      });
    }
  });
}

iniciarBot();

💡 QR Code: Na primeira execução, o bot irá gerar um QR Code nos logs. Escaneie com o WhatsApp para autenticar. As sessões seguintes serão automáticas.

Exemplo: Bot de Telegram com Telegraf

Um bot de Telegram que responde a comandos usando o framework Telegraf.

1. package.json

{
  "name": "bot-telegram",
  "version": "1.0.0",
  "main": "index.js",
  "scripts": {
    "start": "node index.js"
  },
  "dependencies": {
    "telegraf": "^4.16.0"
  }
}

2. index.js

const { Telegraf } = require('telegraf');

// Use variável de ambiente para o token
const bot = new Telegraf(process.env.BOT_TOKEN);

bot.start((ctx) => {
  ctx.reply(
    'Bem-vindo ao Bot MozHost! 🇲🇿\n\n'
    + 'Comandos disponíveis:\n'
    + '/ajuda - Ver comandos\n'
    + '/info - Sobre a MozHost\n'
    + '/status - Estado do serviço'
  );
});

bot.command('ajuda', (ctx) => {
  ctx.reply(
    '📋 *Comandos disponíveis:*\n\n'
    + '/start - Iniciar o bot\n'
    + '/ajuda - Lista de comandos\n'
    + '/info - Informações sobre a MozHost\n'
    + '/status - Estado do serviço',
    { parse_mode: 'Markdown' }
  );
});

bot.command('info', (ctx) => {
  ctx.reply(
    '🏢 *MozHost*\n\n'
    + 'A primeira plataforma moçambicana de hospedagem '
    + 'para Bots e APIs.\n\n'
    + '🌐 mozhost.co.mz',
    { parse_mode: 'Markdown' }
  );
});

bot.command('status', (ctx) => {
  ctx.reply('✅ Todos os serviços estão operacionais!');
});

bot.on('text', (ctx) => {
  ctx.reply('Não entendi. Use /ajuda para ver os comandos disponíveis.');
});

bot.launch();
console.log('🤖 Bot do Telegram iniciado!');

// Desligar graciosamente
process.once('SIGINT', () => bot.stop('SIGINT'));
process.once('SIGTERM', () => bot.stop('SIGTERM'));

💡 Como obter o token: Fale com o @BotFather no Telegram. Use o comando /newbot e siga as instruções. Copie o token e adicione como variável de ambiente BOT_TOKEN.

Dicas Importantes

Use process.env para tokens e senhas

Nunca coloque credenciais directamente no código. Configure-as como variáveis de ambiente no painel do container.

Mantenha o bot sempre activo com auto-restart

A MozHost reinicia automaticamente o seu bot em caso de crash. Certifique-se de que o bot reconecta correctamente ao iniciar (veja o exemplo do WhatsApp acima).

Monitore os logs regularmente

Use o painel de logs em tempo real para acompanhar erros e comportamento do bot. Logs são essenciais para debuggar problemas.

Adicione tratamento de erros no código

Use try/catch nas funções principais para evitar que o bot pare por erros inesperados.

Defina o script start no package.json

A MozHost usa npm start para iniciar o seu bot. Certifique-se de que o script está configurado.

Problemas Comuns e Soluções

O bot inicia mas fica offline depois de alguns minutos

Verifique se o bot tem lógica de reconexão automática. Para bots de WhatsApp com Baileys, use o evento connection.update para reconectar quando a conexão cair (veja o exemplo acima). Para Telegram, o Telegraf já faz isso automaticamente.

Erro: "Cannot find module" ao iniciar

As dependências não foram instaladas correctamente. Verifique se o package.json lista todas as dependências necessárias. Reinicie o container para forçar um novo npm install.

Erro: "TOKEN não definido" ou variável de ambiente vazia

Confirme que adicionou a variável de ambiente no painel do container. O nome deve ser exactamente o mesmo usado no código (ex: BOT_TOKEN). Após adicionar, reinicie o container.

Bot de WhatsApp pede QR Code novamente

A sessão do WhatsApp expirou ou foi desconectada. Verifique nos logs se aparece um novo QR Code e escaneie novamente. Certifique-se de que a pasta auth_info está a ser guardada no volume persistente do container.

Bot do Telegram não responde aos comandos

Verifique se o token está correcto. Teste acessando https://api.telegram.org/bot<SEU_TOKEN>/getMe no navegador. Se retornar erro, o token é inválido — gere um novo com o @BotFather.

Erro de memória ou container reiniciando constantemente

O seu bot pode estar a usar muita memória. Verifique as métricas no dashboard. Evite guardar grandes quantidades de dados em memória. Se necessário, faça upgrade do plano do container para mais recursos.

Próximos Passos

Agora que o seu bot está hospedado, explore mais funcionalidades:

Conectar um domínio personalizado ao seu bot
Configurar base de dados para guardar informações
Usar o Email Service para enviar notificações
Integrar com a CLI da MozHost para deploys rápidos