Como enviar mensagens de Telegram em Node.js via Telegraf

Node.js

Como enviar mensagens de Telegram em Node.js via Telegraf

Luiz Duarte
Escrito por Luiz Duarte em 29/08/2023
Junte-se a mais de 34 mil devs

Entre para minha lista e receba conteúdos exclusivos e com prioridade

Mensageria é um baita negócio e não é à toa que algumas das maiores empresas do mundo possuem apps do tipo como Apple, Google e Facebook. Os apps de mensagem revolucionaram toda a indústria de comunicação, transformando o email, SMS e até a própria ligação telefônica em secundários quando o assunto é se comunicar rapidamente com alguém.

Aqui no blog eu já ensinei como enviar mensagens via SMS, como enviar e-mails, como mandar mensagens via WhatsApp e hoje vou lhe ensinar como fazer isso pelo Telegram!

Embora o Telegram não tenha nem perto da popularidade de WhatsApp, é notável que alguns de seus recursos são muito superiores e principalmente, sua atenção aos desenvolvedores interessados em usar a plataforma.

Toda comunicação automatizada pelo Telegram deve ser feita via bots, sendo que a própria empresa criou uma API para esses bot serem implementados corretamente, sem gambiarras como acontece muitas vezes no WhatsApp. Para usufruir dessa API usaremos a biblioteca Telegraf, para Node.js, uma das mais famosas quando o assunto é bots para Telegram.

Uma vez que você entenda como funciona e o que pode fazer com um bot de Telegram, você vai ver que o que vou mostrar aqui, envio de mensagens, é apenas a ponta do iceberg!

Vamos lá!

(se preferir, pode assistir ao vídeo abaixo, com o mesmo conteúdo)

Curso Node.js e MongoDB

#1 – Setup do Bot

A primeira coisa que você tem de fazer é criar o bot de Telegram que fará o envio de mensagens para você. Para fazer isso, primeiro fale com o BotFather. O BotFather é o bot que lhe ajuda na criação de bots. Após chamar o @BotFather para conversar (pode clicar no link do nome dele), clique em start na tela do Telegram Web.

Vai se abrir uma série de comandos que você pode digitar, e você precisa usar primeiro o /newbot, dando um nome ao seu bot logo em seguida, sendo que ele deve terminar sempre com ‘bot’. O meu vai se chamar LuizToolsBot. Sim, não sou criativo.

Uma vez que termine a criação, você receberá a URL para conversar com seu bot e um token, que você deve salvar para usarmos a seguir no nosso código de interação com o bot. Cuidado, pois quem tiver esse token pode tomar o controle do seu bot!

Antes de avançar, certifique-se de acessar a URL do seu bot e ao menos mande um oi pra ele, já que bots só podem puxar assunto com quem já tiveram uma conversa antes!

Quando fizer isso, acesse o endereço https://api.telegram.org/bot<TOKEN DO SEU BOT>/getUpdates para obter as informações dessa conversa, incluindo o id do chat, que usaremos logo mais para que o bot consiga continuar a conversa. Repare no exemplo abaixo.

Guarde esse número também!

(mais pra frente vou te mostrar como mandar mensagens para grupos também)

Curso FullStack

#2 – Setup do Projeto

Para este projeto você vai precisar ter o Node.js instalado na sua máquina, recomendo a versão LTS disponível para download aqui. Eu vou usar também o Visual Studio Code, mas você pode usar o editor que quiser. Download aqui.

Uma vez com ambos instalados e funcionando, crie uma nova pasta para o projeto, que eu vou chamar de nodejs-telegram e dentro rode o comando abaixo para inicializar o projeto.

Depois, instale a dependência do Telegraf, com o comando abaixo. O Telegraf é uma biblioteca JavaScript para comunicação no Telegram usando um bot.

Também instalei o pacote DotEnv-Safe, para nos ajudar com as configurações do projeto. Para isso, crie um arquivo .env.example na raiz do seu projeto com o seguinte conteúdo.

Este é o template de variáveis de ambiente obrigatórias no nosso projeto.

Agora crie um arquivo .env na raiz do projeto também, com o conteúdo abaixo. Troque as marcações pelos seus valores.

Agora crie um arquivo index.js que é onde vamos programar usando Telegraf. Ele vai usar as variáveis de ambiente que configuramos para ter acesso ao bot token e ao chat ID.

O código acima carrega as variáveis de ambiente na primeira linha (vai dar um erro caso alguma esteja errada) e inicializa o Telegraf com o token do seu bot.

Na sequência, ele usa o objeto Telegram para enviar uma mensagem, onde o primeiro parâmetro é um número com o ID do seu chat e o segundo é a mensagem em si, que pode ter até 4kb.

Note que este é um projeto muito simples, apenas disparando uma mensagem para um usuário, mas você pode colocá-lo dentro de uma função e chamá-la toda vez que quiser disparar a mensagem, por exemplo.

Ou ainda, definir comandos e deixar seu bot sempre rodando, para ele responder diferentes mensagens conforme o que ele receber.

E por último, você também pode adicionar seu bot em canais e grupos, assim ele pode enviar mensagens para o grupo/canal e várias pessoas receberem ao mesmo tempo. O processo é o mesmo: inicie uma conversa no grupo, pegue o id da conversa e coloque ele no bot. No entanto, certifique-se de editar o seu bot usando o BotFather para desativar a trava de privacidade que vem nele por padrão e que o impede de receber mensagens de grupos.

O céu é o limite e minha missão era apenas lhe dar uma breve introdução no tema.

#3 – Mais Alguns Truques

Para muitos cenários o que mostrei acima já resolve, que é basicamente o envio de mensagens para um único usuário. Mas e se eu quiser enviar uma mensagem em grupo de usuários ou canal de transmissão?

Para enviar para um grupo de usuários o primeiro passo é você adicionar o bot de Telegram como membro no grupo (da mesma forma que faria com um usuário comum). O segundo passo é você pegar o ID do grupo e para fazer isso é bem simples:

  1. abra o Telegram no navegador;
  2. navegue até o grupo que o bot é membro;
  3. olhe a URL, o id do grupo vai estar lá (se parece com -123456);

Não esqueça de incluir o sinal de menos, se houver, ele faz parte do ID. Além disso, se o seu grupo é um grupo privado, adicione ainda um 100 entre o sinal de menos e o restante do id. Ex: -123456 vira -100123456 se o grupo for privado.

Com o ID em mãos, agora você usa ele no lugar do chat id no mesmo código que mostrei acima. Eu não cheguei a testar com canais, mas pelo que li você pode usar o @username do canal no lugar do chat id, mas neste caso o bot deve ser administrador do canal, algo assim.

Um rápido aviso: não envie mais de uma mensagem por segundo e não mais de 20 mensagens por minuto, caso não queira que seu bot seja bloqueado (erro 429).

Outro tutorial de bot Telegram que pode te interessar é esse aqui, onde ensino a ler e executar sinais de trading.

Um abraço e até a próxima!

Curso Bot
Curso Bot

TAGS: nodejs

Olá, tudo bem?

O que você achou deste conteúdo? Conte nos comentários.

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

2 Replies to “Como enviar mensagens de Telegram em Node.js via Telegraf”

Rogerio Fernandes

Faço parte de uma comunidade que opera em cryptos. Tem um bot em node que envia msg de alerta no windows. Queria automatizar essas msg para o telegram ao invés do windows, é possível?

Luiz Duarte

Se você tiver os fontes e ele for em Node.js, pode fazer exatamente como mostrado neste tutorial.