Criando um bot pro Twitter

Aprenda um pouquinho sobre a API do Twitter

Vinicius Aguiar
Computando Arte
5 min readJan 25, 2021

--

Photo by Claudio Schwarz | @purzlbaum on Unsplash

Aproveitei o recesso de final de ano para aprender a utilizar a API to Twitter via pacote twit e ambiente Node.js, visando analisar dados de marketing no futuro, como aceitação de uma publicação ou marca pelos usuários. Por enquanto aprendi e vou tentar repassar os passos para criação de um bot no twitter e aplicação da sintaxe básica, como (re)twittar e seguir.

Para seguir os próximos passos é necessário ter uma conta no Twitter, GitHub e Heroku, e instalar sistema de controle de versão git e o ambiente Node.js. Suponho que possua também familiaridade com terminal e editor de texto.

Passos Iniciais: Configuração

Recomendo criar uma conta no twitter para seu bot, incluir um número de celular e email no cadastro, e então aplicar para conta de desenvolvedor. Durante esse processo será necessário informar o tipo de projeto, a finalidade do projeto e descrever os detalhes de seu uso.

Escolhendo a finalidade do projeto.

Após a confirmação do email, acesse Overview no Developer Portal e aperte em Create App para criar seu aplicativo. Em seguida crie um arquivo de texto denominado .env para armazenar as chaves de acesso como variáveis do ambiente. Essas chaves são responsáveis por autenticar o acesso do seu bot a sua conta e API do Twitter, são únicas e não devem ser compartilhadas.

Modelo de arquivo .env sem as chaves.

Na página Overview acesse a opção App settings do seu aplicativo para alterar as permissões do mesmo, em seguida gere outras chaves na aba Keys and tokens e as armazene no arquivo .env criado acima.

Exemplo da aba Keys and tokens.

Então crie um novo repositório do GitHub e um aplicativo no Heroku com mesmo nome, como sir-protocol-bot. Clone seu repositório do GitHub para uma pasta local e adicione um arquivo de texto .gitignore. Este arquivo indica ao controlador de versões que estes arquivos não devem ser sincronizados, desta forma não compartilhamos as chaves, nem arquivos temporários.

Modelo do arquivo .gitignore

Na dashboard do heroku acesse Settings e configure as variáveis do ambiente de seu bot em Config Vars, isto é, digite as variáveis do arquivo .env.

Seção Config Vars na aba Settings do aplicativo no Heroku.

Pronto, a configuração das chaves foi realizada com sucesso! Ainda em Settings, abra a aba Deploy e autorize a sincronização com o respectivo repositório no GitHub em Deployment method, e em seguida ative Automatic deploys na configuração imediatamente abaixo. Desta forma, todo git push realizado no seu repositório atualizará seu aplicativo. Note que também existe a opção de usar CLI do Heroku para adicionar as chaves e realizar o deploy.

Seções de Deployment na aba Deploy do aplicativo no Heroku.

Desta forma resta configurar em quais momentos executar o bot. Nesta solução adicionei ao aplicativo o add-on heroku scheduler e configurei um job para executar node bot.js diariamente, dado que o bot não precisava ser executado em algum horário ou intervalo específico. No entanto é possível criar um arquivo Procfile na pasta raiz do seu aplicativo com worker: node bot.js, caso precise de maior controle e flexibilidade sobre o aplicativo.

Passos Iniciais: Implementação

Os primeiros passos para implementação do bot consistem em executar npm init -y em um terminal que esteja aberto na pasta de seu projeto, e então editar como preferir o arquivo package.json gerado. Este arquivo contém informações sobre o projeto, como nome, descrição e dependências. Em especial, são adicionados dotenv e twit como dependências, vide exemplo. Logo executamos no terminal npm install para instalar as dependências.

Antes de implementar as funções principais do bot é necessário criar um arquivo denominado config.js que fará a ponte entre o arquivo que armazena as variáveis de ambiente e a autenticação por meio da biblioteca twit.

A lógica principal do programa ficará contida no arquivo bot.js, que poderá ser executado pelo comando node bot.js. No seguinte trecho de código importamos as bibliotecas e configurações necessárias.

TweetGourmet

Pessoalmente tenho o costume de deletar tweets antigos, principalmente retweets e por um bom tempo removia os mais antigos que uma semana através do aplicativo TweetDelete. Nunca tive problema algum com este aplicativo, mas resolvi implementar eu mesmo um script como desafio inicial.

Este script normaliza as datas do tweets da minha timeline dividindo as por 42 dias , então verifica se um número aleatório uniforme de 0 a 1 é menor que a função x⁴ + 0.02 com x em dias normalizados, se for o tweet é deletado. Na prática todos os retweets tem chance mínima de 2% de serem deletados que cresce conforme a idade dos mesmos até serem delatados a partir de 42 dias.

Neste script criei uma função, nomeada de acordo, que envia uma requisição do tipo POST para deletar um tweet com identificação id_str. Todos os scripts são implementados com a Promise API e utilizam a variável id_str (e não id), para preservar o valor de identificação, independente do valor numérico.

A função principal envia uma requisição do tipo GET para recuperar os últimos 200 tweets da minha timeline, então escolhe quais retweets deletar priorizando os retweets mais antigos. Daí chama a função auxiliar, que efetivamente deleta os tweets escolhidos.

SirProtocolBot

Em um segundo experimento com a API do Twitter resolvi seguir uma ideia aleatória que surgiu no feed, um chamado do acaso.

Ideia inútil do bot de protocolo.

Semelhante ao bot anterior precisei apenas de uma função principal follow_protocol para a escolha das contas a serem seguidas e uma função auxiliar follow_user que de fato segue um usuário. Logo a função auxiliar envia uma requisição do tipo POST para seguir um usuário com id de valor user_id, e então tweeta “Seguindo Usuário?!” ou “Following Usuário!!”.

E então a função principal procura contas relacionadas a protocolos seja pelo nome ou descrição. Então verifica qual é a relação (estado da amizade) atual, e caso possa, segue o usuário.

Passos Finais

Espero que esses pequenos bots possam lhe inspirar a criar algo novo e ajudem com os passos iniciais nessa aventura. Boa sorte!

Observações

Obrigado pela leitura e pelo feedback… E caso queira acessar o código dos bots confira TweetGourmet e SirProtocolBot. Em caso de curiosidade o usuário SirProtocolBot existe, e está sempre em experimentação.

--

--