loading...

[BotTelegram PT.2] Criando seu próprio bot no Telegram usando NodeJS + Deploy na nuvem via Heroku

soralan profile image Alan Pereira ・4 min read

Na parte anterior iniciamos o setup básico e a primeira funcionalidade de um bot no Telegram usando a API do NodeJS. Neste tutorial faremos o deploy do bot usando uma hospedagem grátis com o Heroku.

Então partiu pro código.

hackerman

1. O que precisaremos?

1.1 Git instalado;

1.2 Cadastro no Heroku feito;

1.3 Cliente do Heroku instalado;

2. Configurações prévias: Comando start

Quando sua aplicação sobe para o Heroku, ele possui um modus operandis padrão de executar o comando npm start. O que acontece é que sem uma configuração prévia o seu bot simplesmente não vai abrir o index.js, já que o comando para que ele rode seja node index.js.

Então para resolver isso é muito simples, nós iremos fazer um script que executará node index.js quando o comando npm start rodar.

No seu arquivo package.json procure pela parte de script e adicione o script "start": "node index.js". Caso o script não exista, você pode criar em formato JSON. Ele deve ficar mais ou menos assim:

package.json

3. Configurações prévias: Express e direcionamento de portas

Para que seu bot fique online sem problemas no Heroku, você precisa dizer para a hospedagem na nuvem quais portas utilizar. Caso contrário, o Heroku simplesmente desliga a sua aplicação. Neste sentido, a melhor dependência que resolva esse problema é o Express.

Então com o terminal aberto dentro da pasta da sua aplicação adicionaremos o Express como dependência:
npm install express

Dentro do seu arquivo principal (nesse tutorial o index.js) importe o express usando var express = require('express');

Inicie a função do express com var app = express(); e vamos fazer a configuração das portas:

Como o Heroku fornece dinâmicamente a porta à ser utilizada pelo app, usaremos o método process.env.PORT para capturar a porta passada pelo Heroku OU então caso a porta não seja passada usaremos uma porta padrão:
app.set('port', (process.env.PORT || 5000));

Também podemos criar um log para dizer em qual porta a aplicação estará rodando:
app.get('/', function(request, response) {
var result = 'App is running'
response.send(result);
}).listen(app.get('port'), function() {
console.log('App is running, server is listening on port ', app.get('port'));
});

Você pode conferir um artigo do FAQ do Heroku em inglês explicando melhor sobre o uso do Express com o Heroku

4. Fazendo o deploy para o Heroku

Finalmente nossa aplicação está pronta e bonita para ir online! Então com o seu terminal aberto na pasta do seu projeto vamos iniciar a última etapa.

Coringa doido para soltar o bot na nuvem

4.1 Com a sua conta no Heroku criada, execute o comando no terminal heroku login, siga os passos para fazer o login na plataforma;

4.2 Execute heroku create para criar uma nova aplicação no Heroku (frisando mais uma vez que o terminal precisa estar na pasta da aplicação);

4.3 Execute heroku config:set TOKEN=Token_unico_da_sua_aplicação_fornecida_pelo_BotFather.

E depois execute heroku config:set HEROKU_URL=$(heroku info -s | grep web_url | cut -d= -f2) para configurar o ambiente;

4.4 O padrão agora é parecido com fazer o upload de repositórios para o github usando o git.

4.4.1 Para usar o git para subir os arquivos comece selecionando todos os arquivos da pasta com git add .

4.4.2 Faça o commit com git commit -m "primeiro commit"

4.4.3 Finalmente jogue para a pasta root da sua aplicação no Heroku com git push heroku master;

4.4.4 Seja feliz com o seu bot rodando na nuvem
Received your message

5. Outras informações importantes

5.1 Caso você venha a ter algum erro com o seu bot, você pode checar os últimos logs do console usando o comando heroku logs, o que pode te auxiliar a resolver eventuais problemas;

5.2 Esse método de deploy é totalmente grátis e, por consequência, existem limitações. Você possui um limite de mais ou menos 600 horas por mês com a sua aplicação rodando online e ela entrará em modo soneca após 30 minutos de inatividade. Existem métodos para adicionar mais horas sem pagar nada e adicionar addons que permitem o seu bot não entrar em modo soneca, mas fica para um outro tutorial.

5.3 Caso você venha a ter um erro de "deprecated Automatic enabling of cancellation of promises is deprecated", tente adicionar o comando process.env.NTBA_FIX_319 = 1; na primeira linha do seu index.js. Ou só adicione isso para se prevenir deste erro.

5.4 Se este link lhe foi útil, deixe seu ❤️


Alan Pereira
Meu LinkedIn
Meu GitHub
Meu Instagram

Posted on by:

soralan profile

Alan Pereira

@soralan

Web developer @ Pólis Civitas | Systems Analysis and Development student @ Unicesumar-Curitiba | Bachelor in economics and now starting as a dev !

Discussion

markdown guide