DEV Community

Alan Pereira
Alan Pereira

Posted on

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

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

Discussion (3)

Collapse
talisson10 profile image
Talisson10

Mano, estou com um erro, meu bot não starta no Heroku. Não consigo resolver, já pesquisei pra caramba. Tem algum contato para que eu possa falar com você pra me ajudar? E-mail, whatsapp algo do tipo. Muito Obrigado!

Collapse
alanfabricio profile image
Alan Pereira Author

Telegram @Alandia =)

Collapse
edgardleal profile image
Edgard Rosberg Duarte Leal

manda os logs aqui