Javascript - Yourlogo - Fábrica de Sistemas
08 abr 2019 segunda-feira
Como fazer um bot para o Telegram em Java
Este é um exemplo básico de como fazer um bot do Telegram em Java. Bots do Telegram são robôs que se comportam como uma conversa no Telegram, porém respondem a comando definidos pelo programador, neste exemplo nosso programa ficará fazendo um pooling de requisições e processará cada requisição, invertendo a frase que é enviado para ele.
Este exemplo criei a partir de um artigo do Nicola Malizia, que pode ser conferido aqui. Confira também toda a documentação no site do Telegram.
Temos que tratar requisições HTTP, para isso usei a biblioteca unirest para facilitar a implementação. Todo o exemplo a seguir foi feito no netbeans, mas pode ser facilmente realizado em outras IDEs.
Solicitando uma chave de acesso ao Telegram
Como todas as requisições serão feitas por uma conexão HTTP, é necessário ter uma chave de acesso privada para o seu bot, para isso, inicie uma conversa com o BotFather e digite /newbot ele irá te perguntar o nome do seu bot e gerar uma chave de acesso no final, guarde ela, usaremos mais adiante.
Criando o projeto e tratando as dependências
Vamos criar um projeto Maven no Netbeans para resolver as dependências da biblioteca unirest. Em novo projeto, Maven, Aplicação Java, defina as suas configurações, e salve. Edite o arquivo Pom.xml em Arquivos do Projeto, e adicione as dependências do unirest:
Clique com o botão direito em Dependências e depois em Fazer download de dependências declaradas, isso fará com que o Maven baixe as dependências informadas do Pom.xml.
Uma vez que já temos todas as dependências, vamos ao código, precisaremos de apenas duas classes, TelegramBot.java (será a classe que tratara as requisições do bot) e Main.java (apenas uma classe principal para iniciar a aplicação).
TelegramBot.java
package br.com.paulocollares.telegrambot;
public final class TelegramBot {
private final String endpoint = "https://api.telegram.org/";
public TelegramBot(String token) {
public HttpResponse<JsonNode> sendMessage(Integer chatId, String text) throws UnirestException {
return Unirest.post(endpoint + "bot" + token + "/sendMessage")
.field("chat_id", chatId)
.field("text", text)
public HttpResponse<JsonNode> getUpdates(Integer offset) throws UnirestException {
return Unirest.post(endpoint + "bot" + token + "/getUpdates")
.field("offset", offset)
public void run() throws UnirestException {
int last_update_id = 0; // controle das mensagens processadas
response = getUpdates(last_update_id++);
JSONArray responses = response.getBody().getObject().getJSONArray("result");
if (responses.isNull(0)) {
last_update_id = responses
.getJSONObject(responses.length() - 1)
.getInt("update_id") + 1;
for (int i = 0; i < responses.length(); i++) {
JSONObject message = responses
.getJSONObject("message");
int chat_id = message
.getJSONObject("chat")
.getInt("id");
String usuario = message
String texto = message
String textoInvertido = "";
for (int j = texto.length() - 1; j >= 0; j--) {
textoInvertido += texto.charAt(j);
sendMessage(chat_id, textoInvertido);
TelegramBot tb = new TelegramBot("cole aqui a chave gerada pelo BotFather");
} catch (UnirestException ex) {
O método run(), depois de ser iniciado, ficará requisitando constantemente ao Telegram as requisições do seu bot, que serão obtidas por um JSON, será tratada e enviada de volta.
Vale ressaltar que este bot só irá funcionar se a aplicação java estiver rodando, uma vez que é que responsabilidade do programa obter as requisições e enviar de volta. É um exemplo simples que apenas demonstra o uso do recurso de bots do Telegram.