Chatbots em TypeScript: guia completo para criar do zero

Treinador Online de Python para Iniciantes

Aprenda Python facilmente sem sobrecarga teórica. Resolva tarefas práticas com verificação automática e escreva código diretamente no navegador.

Start Course

Por que o TypeScript é a melhor escolha para chatbots?

\n\n

Quando se trata de criar chatbots, muitos desenvolvedores pensam imediatamente em Python ou JavaScript. Mas existe uma linguagem que combina a flexibilidade da tipagem dinâmica com a segurança da verificação estática — é o TypeScript. Neste guia prático, vamos abordar como criar chatbots em TypeScript que não apenas funcionam de forma estável, mas também são fáceis de manter.

\n\n

TypeScript não é apenas um "superset" do JavaScript. É uma ferramenta completa que permite escrever código mais difícil de quebrar. Imagine: você está escrevendo um bot para o Telegram e, de repente, seu colega passa para a função não uma string, mas um número. Em JavaScript, você descobriria isso em tempo de execução, quando o bot falhasse. Em TypeScript, o compilador informa o erro antes mesmo da execução. Isso não é mágico?

\n\n

Por onde começar: configuração do ambiente

\n\n

Antes de mergulharmos no código, vamos configurar o ambiente de trabalho. Precisaremos do Node.js (versão 16 ou superior) e do gerenciador de pacotes npm ou yarn.

\n\n

Passo 1: Inicialização do projeto

\n\n
mkdir my-chat-bot\ncd my-chat-bot\nnpm init -y\n
\n\n

Passo 2: Instalação das dependências

\n\n

Para trabalhar com chatbots, usaremos a biblioteca popular telegraf (para Telegram) e discord.js (para Discord). Mas neste guia, focaremos em uma abordagem universal.

\n\n
npm install typescript @types/node telegraf dotenv\nnpx tsc --init\n
\n\n

O arquivo tsconfig.json precisa ser ajustado: ative strict: true e defina outDir: "./dist". Isso tornará o código mais seguro.

\n\n

Estrutura do projeto para chatbots em TypeScript

\n\n

Uma boa arquitetura é a chave para o sucesso. Aqui está como recomendo organizar os arquivos:

\n\n
src/\n├── bot/\n│   ├── index.ts          # Ponto de entrada\n│   ├── handlers/         # Manipuladores de comandos\n│   ├── middleware/        # Manipuladores intermediários\n│   └── types/            # Tipos e interfaces\n├── config/\n│   └── index.ts          # Configuração\n└── utils/\n    └── logger.ts         # Registro de logs\n
\n\n

Escrevendo o primeiro chatbot em TypeScript

\n\n

Vamos criar um bot simples para o Telegram que responde ao comando /start e a mensagens de eco.

\n\n

Arquivo: src/config/index.ts

\n\n
import dotenv from 'dotenv';\ndotenv.config();\n\nexport const config = {\n  BOT_TOKEN: process.env.BOT_TOKEN || '',\n  PORT: parseInt(process.env.PORT || '3000')\n};\n
\n\n

Arquivo: src/bot/index.ts

\n\n
import { Telegraf } from 'telegraf';\nimport { config } from '../config';\nimport { startHandler } from './handlers/start';\nimport { echoHandler } from './handlers/echo';\n\nconst bot = new Telegraf(config.BOT_TOKEN);\n\n// Registramos os manipuladores\nbot.start(startHandler);\nbot.on('text', echoHandler);\n\n// Iniciamos o bot\nbot.launch()\n  .then(() => console.log('Bot iniciado!'))\n  .catch((err) => console.error('Erro ao iniciar:', err));\n\n// Desligamento gracioso\nprocess.once('SIGINT', () => bot.stop('SIGINT'));\nprocess.once('SIGTERM', () => bot.stop('SIGTERM'));\n
\n\n

Arquivo: src/bot/handlers/start.ts

\n\n
import { Context } from 'telegraf';\n\nexport const startHandler = async (ctx: Context) => {\n  const userName = ctx.from?.first_name || 'amigo';\n  await ctx.reply(`Olá, ${userName}! Sou um bot em TypeScript. Escreva algo para mim.`);\n};\n
\n\n

Arquivo: src/bot/handlers/echo.ts

\n\n
import { Context } from 'telegraf';\n\nexport const echoHandler = async (ctx: Context) => {\n  const message = ctx.message?.text || '';\n  await ctx.reply(`Você escreveu: "${message}". Legal!`);\n};\n
\n\n

Observe a tipagem: Context da biblioteca telegraf é totalmente tipado. Isso significa que a IDE sugerirá todos os métodos e propriedades disponíveis. Chatbots em Ty

Blogs

Book Recommendations