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.
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:
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'));
});
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.
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
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
Top comments (3)
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!
Telegram @Alandia =)
manda os logs aqui