Uma introdução a BOT’s no Twitter

Luan AP
Training Center
Published in
3 min readSep 23, 2017
twittor bots

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

--

--