Telegram Bot com NodeJs

Sabe aquele famoso bot de boas vindas ? Crie um com apenas 9 linhas de código!

Matheus Sandrini Rossi
Matheus Rossi
4 min readNov 18, 2017

--

Telegram e Node.js

Pré-Requisitos

  • Conhecimentos básicos de JavaScript, Nodejs e Npm.
  • Telegram instalado no celular
  • Conhecimento da plataforma heroku (opcional)

O que vamos construir ?

Inicialmente, vamos começar pela função básica e presente em uma grande parte dos grupos do telegram, aquela mensagem automática de boas vindas …

Diferentemente do whatsapp, o telegram possui uma API para utilização, transformando a plataforma perfeita para esse propósito.

O projeto pode inicialmente ser rodado na máquina local sem problemas, mas caso queria, poderá ser feito deploy facilmente, particularmente, mantenho o meu bot rodando no heroku.

Mãos a massa!

Procedimentos básicos de qualquer projeto com nodejs

mkdir telegram-bot
cd telegram-bot
npm init
git init #necessário para posterior deploy ao heroku
touch index.js

Feita a configuração básica, hora de aprender um pouco mais sobre como faremos nosso bot.

Existem várias libs para node com esta finalidade, neste artigo, utilizaremos uma opção recomendada pela própria doc do telegram:

Após conferir o github da API, hora de instalar ela:

npm i --save node-telegram-bot-api

Abra o arquivo index.js criado anteriormente e cole o seguinte código:

const TelegramBot = require( `node-telegram-bot-api` )

const TOKEN = `SEU TOKEN`

const bot = new TelegramBot( TOKEN, { polling: true } )

Sem segredos aqui, o fazemos o require da API, armazenamos nosso TOKEN, e criamos o bot com o ultimo comando.

Mas esse token, de onde vem ? Lembra que precisaríamos do Telegram para criar o bot ? É aqui que ele entra, abra o telegram, e procure por @fatherbot.

comando /start do bot

Aqui podemos ver todas as opções possíveis para criarmos e editarmos algumas configurações dos bots. Indo ao que interessa, vamos criar um novo bot e receber o token dele, da seguinte maneira:

Notem que após a criação do bot, recebemos nosso token para utilização, tenham o devido cuidado com este token, visto que ele irá interceptar todas as mensagens.

Feito isto hora de voltar para nosso index.js e terminar a mensagem de boas vindas do nosso bot.

Já dentro do index.js, substitua isso:

const TOKEN = `SEU TOKEN`

por:

const TOKEN = `123345567:AAABBBCCCDDD1A22RbCdTyoIjYaTek`

Fiquem tranquilos que este é apenas o padrão do token, não um token válido.

API

A página do github deste projeto, tem uma documentação inicial bem interessante até, porém não cobria este exemplo aqui demonstrado.

Após inserir o token, adicionamos as seguintes linhas de código:

bot.on('new_chat_members', (msg) => {
bot.sendMessage(msg.chat.id, `Olá ${msg.from.first_name}, bem vindo ao Devs SC!! Conte-nos um pouco sobre você, com o que trabalha e onde, se possivel é claro`)
})

Assim, sempre que um novo membro for adicionado ao grupo, receberá a mensagem de boas vindas, simples não ?

Podemos rodar o bot na nossa máquina, sem problemas ou fazer o deploy para algum servidor web.

node index.js #rodando da sua máquina para testar o bot

E está pronto, assim, cada vez que um novo membro entrar no grupo, ele receberá uma mensagem de boas vindas:

Imagem de boas vindas

Heroku Deploy

Particularmente, gosto do heroku para realizar meus deploys de teste, já que ele tem um CLI que facilita e muito a vida dos devs.

O procedimento, é igual a qualquer deploy, sem mudanças necessárias.

Ok, este exemplo é meio bobo, o que mais o bot pode fazer ?

Vou deixar aqui dois links para quem quiser seguir no desenvolvimento de bots no telegram, um com a doc oficial do Telegram, que é gigante e interessante, e uma publicação do Suissa bem similar a esta, porém com outro enfoque.

Recomendo a leitura das duas páginas para quem quiser seguir no desenvolvimento:

Finalizando

Vimos como realmente é fácil fazer bots para o telegram com o node, 9 linhas de código e seu bot de boas vindas está totalmente funcional.

O foco deste post é seguir de guia para iniciantes que nunca fizeram bots antes, porém daremos continuidade ao desenvolvimento em outros posts mais avançados.

Fiquem de olho!

Abraços.

--

--

Matheus Sandrini Rossi
Matheus Rossi

Data Engineer, Especialista em Gestão da Qualidade,Engenharia de Produção e Engenharia de Dados. Estudante de Eng de Software e fotógrafo p/ hobby