Uma introdução a BOT’s no Twitter
Essa publicação é uma tradução livre do artigo: Making botsofcode — An Introduction to Twitter Bots.
Caso você seja um cara curioso e apressado, e já querer ver o código fonte do BOT, confira o repositório dele.
Enfim vamos lá o/
Configurações
Este BOT foi criado usando o Twit uma simples API do lado cliente para NODE.js. Para configurar Twit nós devemos primeiro criar uma aplicação no Twitter e obter suas chaves privadas.
- Chave da aplicação (API Key)
- Consumidor secreto (API Secret)
- Access Token
- Access Token Secret
Uma vez que o aplicativo é criado, essas chaves podem ser encontradas na seção ‘Keys and Access Tokens’.
Uma vez que temos essas chaves, podemos criar um novo projeto Node.js e inicializar o Twit.
const Twit = require('twit');
const T = new Twit({
consumer_key: APPLICATION_CONSUMER_KEY_HERE,
consumer_secret: APPLICATION_CONSUMER_SECRET_HERE,
access_token: ACCESS_TOKEN_HERE,
access_token_secret: ACCESS_TOKEN_SECRET_HERE
});
Ouvindo eventos e palavras-chave
As APIs de streaming do Twitter nos permitem acessar o fluxo global de tweets. Existem dois fluxos que podemos seguir atualmente:
- The Public Stream, que é o fluxo de todos os tweets públicos
- O Stream do Usuário, que é um fluxo de tweets correspondente um único usuário
Com o @botsofcode, é possível ter acesso ao fluxo publico…
Podemos criar um fluxo de tweets com base em um filtro usando o statuses/filter
e passar um objeto com os parâmetros do filtro. Podemos passar parâmetros como idioma ou local, mas para filtrar por palavra-chave, usamos o parâmetro track .Isso aceita uma string ou uma série de palavras-chave a serem observadas.
const stream = T.stream('statuses/filter', { track: ['bitsofco.de', 'bitsofcode'] });
Uma vez que nós criamos a stream, podemos obter os tweets que vão para dentro da stream.
stream.on('tweet', (tweet) => {
// Do something with the tweet
});
Respondendo a eventos
A REST API do Twitter nos permite fazer qualquer ação, assim como se estivesse usando o Twitter normalmente. Podemos publicar tweets, retweetar, responder a tweets, seguir usuários, favoritos, etc.
Enfim abaixo algumas funcionalidades do nosso BOT:
Retweet
Se o tweet encontrado no fluxo fosse (@ireaderinokun), o @botsofcode deveria apenas retweeta-lo. Podemos retweetar postagem para o tweet para /statuses/retweet/:id
const me = {
id: 2714960622,
screen_name: 'ireaderinokun'
};
const stream = T.stream('statuses/filter', { track: ['bitsofco.de', 'bitsofcode'] });
stream.on('tweet', (tweet) => {
if ( tweet.user.id === me.id ) {
T.post('statuses/retweet/:id', { id: tweet.id_str });
return;
}
});
Like
Se o tweet fosse de qualquer outra conta. Poderíamos likar um tweet publicando no /favorites/create endpoint, passando o id do tweet que queremos likar.
stream.on('tweet', (tweet) => {
if ( tweet.user.id === me.id ) { ... }
T.post('favorites/create', { id: tweet.id_str });
});
Reply
Se o tweet fosse feito por qualquer outro usuário, envie a eles uma resposta. Podemos responder a um tweet publicando no /statuses/update e passando o id do tweet ao qual estamos respondendo.
stream.on('tweet', (tweet) => {
if ( tweet.user.id === me.id ) { ... }
T.post('favorites/create', { id: tweet.id_str });
T.post('statuses/update', {
status: `@${tweet.user.screen_name} Thanks for sharing! ${emojis[Math.floor(Math.random() * emojis.length)]`,
in_reply_to_status_id: tweet.id_str
});
});
Adicionando na lista
Finalmente, adicione o usuário a uma lista do Twitter. Podemos fazer isso postando para lists/members/create e passar a lista de parâmetros.
stream.on('tweet', (tweet) => {
if ( tweet.user.id === me.id ) { ... }
T.post('favorites/create', { id: tweet.id_str });
T.post('statuses/update', {
status: `@${tweet.user.screen_name} Thanks for sharing! ${emojis[Math.floor(Math.random() * emojis.length)]`,
in_reply_to_status_id: tweet.id_str
});
T.post('lists/members/create', {
slug: 'bitsofcoders',
owner_screen_name: botsofcode.screen_name,
screen_name: tweet.user.screen_name
});
});
Opcional — configurando variáveis de configuração
Para manter as chaves do aplicativo do Twitter fora dos arquivos do aplicativo, usei as variáveis de configuração do Heroku. Estes podem ser definidos nas configurações do aplicativo.
No script de aplicação real, podemos então fazer referência a eles como variáveis de ambiente.
Uma dica minha é salvar essas variáveis de configuração em um arquivo .env
É isso aí galerinha espero que tenham gostado, até a próxima