0

Como construir um bot para Twitter (Node.js)

Alessandro Araújo
Alessandro Araújo

Introdução


Neste artigo você descobrirá como construir um bot programado para postar tweets em uma conta do Twitter utilizando Node.js.


Além disso, utilizaremos a plataforma em nuvem Heroku para hospedar nosso bot gratuitamente e para rodá-lo de maneira automática a cada determinado período de tempo.


Requisitos


1 - Node.js e npm instalados (link para download aqui)

2 - Ter uma conta no Twitter

3 - Possuir acesso a um terminal

4 - Ter um editor de texto instalado (você pode utilizar o Visual Studio Code, consulte o site para download neste link)

5 - Possuir o Git instalado (baixe-o aqui)


Vamos começar!


Se inscrevendo no Twitter Developer


De antemão, afirmo que esse é o passo mais “chato” para criar o bot (logo, cumprindo este item, o resto será mais fácil).


Para que possamos ter acesso às chaves e tokens necessários para a construção do bot, devemos aceder ao Twitter Developer, cujo site pode ser acessado por este link.



Para começar, você deve realizar o login em nossa conta do Twitter através do botão Sign In. É importante ressaltar que, como boa prática, devemos utilizar a conta que usaremos para nosso bot, e não nossa conta padrão (mas isso fica a seu critério).


Após entrar em sua conta, volte para a página do Twitter Developer e clique no botão Apply e, após isso, no botão Apply for a developer account.



Agora, você deverá preencher um formulário, fornecendo informações sobre você e sobre o projeto que deseja criar.


É importante ressaltar que, por segurança, o Twitter exige que você tenha um número de telefone e um endereço de email vinculados a sua conta.


Quando terminar, você deverá confirmar sua conta no Twitter Developer por email (através de um link que será enviado automaticamente).



Após confirmar sua conta entrando no link (você deve estar logado em sua conta ao clicar), você já pode criar seu projeto através do Developer Portal, possível de ser acessado através da página inicial do site quando estamos logados (porém você deve estar disposto a fornecer mais informações por email somente caso seja necessário).



Clique em Create Project, e preencha os campos necessários (nome do projeto, objetivo do projeto e descrição do projeto). Depois disso, como não possuímos nenhum App criado, basta clicar em Create a new app instead e digitar o nome do App (escolha o nome que desejar e que esteja disponível).



Após isso, na aba Dashboard já será possível ver sua aplicação. Para obter acesso às chaves necessários, clique no símbolo de chave (Keys and Tokens).



Ao clicar, você terá acesso a uma interface onde é possível regenerar as chaves e tokens de acesso.



Para este projeto, você só precisa gerar as API Key and Secret e os Acess Token and Secret clicando nos botões de ambos e salvando os códigos em um local seguro.


Último detalhe!

Na aba de configurações (Settings) precisamos alterar as permissões de nosso bot, para que ele possa postar tweets (e não apenas ler tweets). Basta acessar clicando em Settings e rolando até o tópico App permisions.


Depois disso, é só clicar em Edit e alterar as permissões para Read and Write (ler e escrever).



Pronto! Já temos acesso às chaves e tokens necessários.


Programando o bot


Criando o diretório

Primeiramente, devemos escolher a pasta onde colocaremos nosso bot.


Crie uma pasta qualquer em seu sistema para a aplicação através de um gerenciador de arquivos (como o Windows Explorer, no caso do Windows) ou através do terminal, em que é possível utilizar o seguinte comando (no Windows e no Linux) para criar uma pasta:


mkdir nome-que-desejar



Depois, através do terminal, acesse a pasta que criou. Você pode fazer isso navegando até a pasta através do comando cd. O terminal indica a pasta que você está atualmente, basta se deslocar até o diretório desejado.


Segue um exemplo:


C:\Users\John>cd Documents

C:\Users\John\Documents>cd meu-bot
C:\Users\John\Documents\meu-bot>


Configurando o arquivo package.json

Agora vamos gerar o arquivo com as configurações iniciais de nossa aplicação (package.json).


No terminal, já dentro de sua pasta, digite:


npm init -y


E pronto! tudo configurado.


Instalando pacotes necessários

No terminal, dentro de sua pasta, instale os pacotes dotenv e twit através do seguinte comando:


npm i dotenv twit


Aqui vai uma pequena explicação das funções das duas ferramentas instaladas:


1 - Dotenv: É uma ferramenta para gerenciar variáveis de ambiente. Através de sua utilização poderemos guardar informações sensíveis (como as chaves e tokens de acesso) com mais segurança.


2 - Twit: É a ferramenta que nos permite controlar a conta do Twitter de nossos bots com apenas algumas linhas de código.


Configurando arquivo .env

Através de um editor de texto de sua preferência, crie o arquivo .env (isso mesmo, só com a extensão do arquivo).


Digite o seguinte código (já preenchendo os campos indicados com as chaves que você obteve através de sua conta no Twitter).


CONSUMER_KEY= 'Sua API Key'

CONSUMER_SECRET= 'Sua API Secret Key'
ACCESS_TOKEN= 'Seu Acess Token'
ACCESS_TOKEN_SECRET= 'Seu Acess Token Secret'


Criando o arquivo index.js

Agora, através de seu editor de texto, crie o arquivo index.js. Neste arquivo ficará a parte principal do código, ou seja, é nele que programaremos as funcionalidades de nosso bot (no caso, postar um tweet com uma frase).


Dentro dele, chame os pacotes instalados através do npm digitando os seguintes comandos:


var Twit = require("twit");

require("dotenv").config();


Agora vamos criar uma instância da classe Twit, ou seja, vamos criar um objeto que utilizaremos para controlar o nosso bot.


Optei por chamar o objeto de nossoBot, mas você pode chamá-lo como quiser.


Digite as seguintes linhas de código no arquivo index.js (com o nome que quiser para seu objeto, respeitando as regras do JavaScript):


const nossoBot = new Twit({

    consumer_key: process.env.CONSUMER_KEY,  
  
    consumer_secret: process.env.CONSUMER_SECRET,    
    access_token: process.env.ACCESS_TOKEN,  
  
    access_token_secret: process.env.ACCESS_TOKEN_SECRET,
    timeout_ms: 60 * 1000
});


Agora, vamos criar uma função onde programaremos nosso bot para executar determinada funcionalidade. Optei por chamar função de acaoDoNossoBot, mas você pode escolher o nome que desejar. Digite as seguintes linhas de código:


function acaoDoNossoBot() {

   var postTweet = "Esta será a frase de nosso post";
   nossoBot.post(
      
      'statuses/update', 
      {status: postTweet},
      function(err, data, response) { 
         
         if (err) {
            
            console.log("ERRO: " + err);                    
            return false;
         }
  
         console.log("Tweet postado com sucesso!\n");       
 
      }
   )
}


Explicação do código da função

Basicamente, criamos uma função com o nome escolhido e colocamos dentro de uma variável (postTweet, no meu caso, ou o nome que desejar) o conteúdo de nosso post.


Após isso, chamamos o método post através do objeto nossoBot que criamos antes. Esse método aceita três parâmetros:


1 - Primeiro parâmetro: uma string que varia de acordo com a ação que desejamos que nosso bot faça. No caso, para postar um tweet com determinado conteúdo, essa string é ‘statuses/update’.


2 - Segundo parâmetro: um objeto com o conteúdo que queremos enviar. Nesse caso, precisamos informar a chave status e o seu valor, que é a variável na qual armazenamos o conteúdo de nosso post.


3 - Terceiro parâmetro: uma função, para caso queiramos verificar possíveis erros, cujos parâmetros úteis para nós são o err (que retorna dados caso haja algum erro) e o data (que retorna os dados da ação que executamos). No caso, utilizamos apenas o parâmetro de erros, checando se houve erro através de uma condicional.


Chamando a função criada

Por fim, basta chamar no código a função criada através de:


acaoDoNossoBot();


Além disso, como queremos que ele rode infinitamente no Heroku, podemos adicionar este comando para que a função seja executada a cada 4 horas (devemos informar o tempo em milisegundos):


setInterval(acaoDoNossoBot, 14400000);


Executando

Você já pode executar seu bot manualmente através do terminal!


Estando dentro da pasta de sua aplicação, digite o seguinte comando no prompt de comando (terminal):


node index.js


Checando a conta de seu bot, poderá ver que seu tweet foi postado.


Você pode mudar o conteúdo do tweet alterando a variável que criamos e inserir o que desejar, o que importa é que tudo o que estiver dentro da variável será utilizado como conteúdo (respeitando, é claro, o limite de caracteres por tweet).


Observação

Cuidado ao postar tweets repetidos, pois o Twitter não permite que postemos tweets seguidos que possuem o mesmo conteúdo em curtos intervalos de tempo. Tente criar conteúdos diferentes para cada tweet.


Automatizando nosso bot

O processo ainda está muito manual. Podemos automatizar isso fazendo o deploy de nosso bot no Heroku, cujo processo abordaremos a seguir.


Deploy do bot no Heroku


Criando uma conta no Heroku

Para que não seja necessário deixar nosso terminal aberto para sempre para que nosso bot seja acionado automaticamente, podemos utilizar plataformas como o Heroku para “hospedá-lo” (acesse o site aqui).



Para criar uma conta, clique em Sign Up e preencha os dados necessários (fazendo confirmação por email, caso necessário).


Após entrar em sua conta, procure o botão ou aba Create New App e digite o nome que desejar para sua aplicação (por segurança, utilize um nome com letras minúsculas e palavras separadas por travessões), escolhendo uma região qualquer.



Criando o arquivo Procfile

Agora, na pasta de seu projeto, através de seu editor de texto, você deve criar um arquivo chamado Procfile (isso mesmo, sem extensão, com a primeira maiúscula).


Dentro do arquivo, coloque o seguinte trecho de código:


worker: node index.js


Com este trecho de código nós informamos ao Heroku qual comando deverá ser executado para que nosso bot seja acionado.


Versionamento

Como o Heroku utiliza o sistema de versionamento Git para funcionar, devemos inicializar um repositório em nossa pasta e realizar um commit.


Você pode utilizar o Git Bash para isso (você pode acioná-lo clicando com o botão direito dentro do diretório de seu projeto em um gerenciador de arquivos ou abrindo-o diretamente nos programas de seu computador e navegando até a pasta de seu projeto).



Dentro do Git Bash, digite o seguinte comando para inicializar o repositório:


git init


Depois este outro para adicionar os arquivos ao index do Git:


git add .


E por último este comando, para realizar um commit (você pode colocar a mensagem que quiser):


git commit -m "Mensagem do commit"


Deploy da aplicação

Existem três formas de fazer o deploy (quando criamos uma aplicação no Heroku, o site mostra um tutorial para cada uma).


Neste artigo, utilizaremos o Heroku CLI para realizar o deploy. Baixe-o por este link (acesse a área Download and install e escolha a versão apropriada para seu dispositivo). Depois abra o instalador e realize a instalação normalmente.


Agora, na pasta de seu projeto, através de seu terminal, digite o comando:


heroku login


Quando for solicitado, pressione qualquer tecla e uma janela para login será aberta. Através dela, realize o login em sua conta do Heroku e depois retorne ao terminal.


Agora, com o login realizado, digite o comando:


heroku git:remote -a nome-da-aplicacao


No meu caso, como a aplicação no Heroku se chamava meu-bot-twitter, devo digitar:


heroku git:remote -a meu-bot-twitter


Por segurança, você pode digitar novamente os comandos de versionamento (se já estiver no terminal, não precisa utilizar o Git Bash, pois se estiver logado no Heroku os comandos Git funcionarão nele).


git add .
git commit -m "Mensagem do commit"


Por fim, digite:


git push heroku master


E pronto! O deploy será realizado e a aplicação será iniciada automaticamente no Heroku.


Dica!

Caso esteja em dúvida no processo de deploy, o próprio Heroku disponibiliza um tutorial para cada tipo de método de deploy ao criarmos a aplicação (os tutoriais também ficam disponíveis na aba Deploy de nossas aplicações).



Arquivos editados durante o projeto


Arquivo .env

CONSUMER_KEY= 'Sua API Key'

CONSUMER_SECRET= 'Sua API Secret Key'

ACCESS_TOKEN= 'Seu Acess Token'

ACCESS_TOKEN_SECRET= 'Seu Acess Token Secret'


Arquivo package.json

{

   "name": "meu-bot",
   "version": "1.0.0",
   "description": "",
   "main": "index.js",
   "scripts": {
      "test": "echo \"Error: no test specified\" && exit 1"
   },
   "keywords": [],
   "author": "",
   "license": "ISC",
   "dependencies": {
      "dotenv": "^9.0.2",
      "twit": "^2.2.11"
   }
}


Arquivo index.js

var Twit = require("twit");

require("dotenv").config();
const nossoBot = new Twit({
   consumer_key: process.env.CONSUMER_KEY,
   consumer_secret: process.env.CONSUMER_SECRET,
   access_token: process.env.ACCESS_TOKEN,
   access_token_secret: process.env.ACCESS_TOKEN_SECRET,
   timeout_ms: 60 * 1000
});
function acaoDoNossoBot() {
// Cuidado ao postar tweets repetidos
   var postTweet = "Esta será a frase de nosso post";
   
   nossoBot.post(
      'statuses/update',
      {status: postTweet},
      function (err, data, response) {
         if (err) {
            console.log("ERRO:" + err);
            return false;
         }
         console.log("Tweet postado com sucesso!\n");
      }
   )
}
acaoDoNossoBot();
setInterval(acaoDoNossoBot, 43200000/3);


Arquivo Procfile

worker: node index.js


Confira bots funcionando agora!


Caso queira se inspirar, você pode conferir o bot Bitcoin Diário, que retorna o valor do Bitcoin a cada 4 horas, através do seguinte link.


Deixo também o código deste bot disponível através deste link para o GitHub. Basicamente, é uma versão um pouco mais aprimorada do bot que criamos.


Para criar bots cada vez mais complexos, basta ir adicionando cada vez mais funcionalidades de acordo com o conhecimento que já obteve.


Interaja!


Comente a sua opinião sobre este artigo ou algum conhecimento que queira compartilhar conosco!


Deixo a seguir links para minhas redes sociais:


Linkedin

Twitter

Instagram


Referências


Criando um bot para Twitter


Gerenciando variáveis ambiente no NodeJS


Fazendo deploy de uma API para o Heroku



Twit

0
0

Comentários (5)

0
W

Weslley Queiroz

29/06/2021 10:25

opa amigo beleza? talvez eu tenha feito algo errado, mas eu verifiquei a conta ai só fica lá falando que esta verificado, tanto que na parte de "create app" ele não vai a opção não é disponível, não sei se deu pra entender mas é isso.

1
Bruno Chaves

Bruno Chaves

22/05/2021 10:40

Excelente! Muito obrigado por compartilhar, já surgiram varias ideias só de olhar.

1
Wilson Rosa

Wilson Rosa

22/05/2021 01:08

Excelente artigo!

Já tenho uma ideia onde aplicar.

1
Gustavo Nascimento

Gustavo Nascimento

21/05/2021 23:15

Muito legal!!!

2
Rosemeire Deconti

Rosemeire Deconti

21/05/2021 12:59

Adorei seu artigo! Grata por compartilhar!

Sou um jovem em busca de conhecimento.

Brasil