Criando um bot pro Twitter
Aprenda um pouquinho sobre a API do Twitter
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.
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.
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.
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.
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.
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.
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.
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.