Jornada do SirProtocolBot

Jornada do SirProtocolBot

Uma mão segurando um celular com o Twitter
Photo by Claudio Schwarz | @purzlbaum on Unsplash

Aproveitei o recesso de final de ano para aprender a utilizar a API do 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.

Tela do Twitter Developer Portal mostrando o processo de aplicação
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.

Tela do Twitter Developer Portal mostrando as chaves de acesso
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.

Tela do Twitter Developer Portal mostrando as chaves de acesso na aba Keys and tokens
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.

Tela mostrando o conteúdo do arquivo .gitignore
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.

Tela do Heroku mostrando a seção Config Vars na aba Settings
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.

Tela do Heroku mostrando as seções de Deployment na aba 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.

A lógica principal do programa ficará contida no arquivo bot.js, que poderá ser executado pelo comando node bot.js.

SirProtocolBot

Em um segundo experimento com a API do Twitter resolvi seguir uma ideia aleatória que surgiu no feed - um chamado do acaso. O bot procuraria e seguiria contas relacionadas a protocolos, seja pelo nome ou descrição.

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. 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 User!!“.

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.

Considerações Finais

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

O código dos dois bots pode ser encontrado nos repositórios TweetGourmet e SirProtocolBot. Em caso de curiosidade o usuário SirProtocolBot existe, e está sempre em experimentação.


Fonte: Jornada do SirProtocolBot - Medium