Как насчет Twitter-бота, который ретвитит, добавляет в избранное на основе хэштегов и отвечает другим пользователям, если они следят за ним? Я сделал похожий вид Twitter-бота (@ nodejstweet), который снабжает меня последними или текущими новостями / статьями / инструкциями по набору хэштегов, таких как #Nodejs, #MongoDB, #AngularJS, #IonicFramework и т. Д. так далее. В то время я никогда не ожидал, что у него будет больше последователей, чем у меня, но это было превзойдено.

Что будет делать этот бот?

Это простой Twitter-бот, который будет ретвитить, добавлять в избранное / ставить лайки случайным образом на основе хэштегов в качестве запроса, который мы будем использовать и продолжим делать через определенный промежуток времени.

Что вам нужно?

  • В вашей системе должен быть установлен Node.js.
  • Учетная запись Twitter.
  • Ваш бот будет использовать twit, который является модулем npm для управления твитами и потоками, а также для связи с Twitter API.

Давайте начнем

Установите пустой каталог и инициализируйте его с помощью: $ npm init, чтобы настроить это веб-приложение с помощью package.json файла. Затем создайте два новых файла: bot.js & config.js в этом каталоге.

bot.js будет нашим основным файлом приложения, в котором мы будем писать исходный код нашего Twitter-бота, поэтому в package.json отредактируйте поле main на:

{  
  "main": "bot.js",  
},

Ваша текущая структура каталогов должна выглядеть так:

root/project-name
|- bot.js
|- config.js
|- package.json

Настройка и предоставление разрешений из Twitter API

После входа в свою учетную запись Twitter перейдите по этой ссылке: https://apps.twitter.com/app/new, чтобы создать новое приложение. Заполните необходимые поля в форме, нажмите кнопку Create Your Twitter Application. После создания приложения найдите Ключи и токены доступа под панелями навигации, нажмите Создать действия с токенами, а затем скопируйте:

  • Потребительский ключ
  • Потребительский секрет
  • Токен доступа
  • Секрет токена доступа

Откройте config.js file и вставьте в него все четыре значения. Выставьте эти значения с помощью module.export:

//config.js
/** TWITTER APP CONFIGURATION
 * consumer_key
 * consumer_secret
 * access_token
 * access_token_secret
 */
module.exports = {
  consumer_key: '',  
  consumer_secret: '',
  access_token: '',  
  access_token_secret: ''
}

Теперь настройка бота Twitter завершена. Обратите внимание на то, что для каждого приложения consumer key, consumer secret, access_token и access_token_secret будут разными.

Создание бота

Поскольку этап настройки завершен, теперь давайте установим наш третий компонент, который является клиентом Twitter API для узла, который поможет нам взаимодействовать с Twitter API и предоставить API для всех необходимых действий (таких как ретвит и добавление твита в избранное. ).

Мы начнем с установки зависимости, которая нам нужна для нашего приложения.

$ npm install --save twit

После завершения установки зависимости перейдите к bot.js файлу и потребуйте зависимость и config.js файл.

var twit = require(’twit’);
var config = require(’./config.js’);

Передайте конфигурацию (потребителя и токены доступа) нашего приложения Twitter в config.js twit:

var Twitter = new twit(config);

Все идет нормально?

ОБРАТИТЕ ВНИМАНИЕ: вы должны обратиться к twit документации для получения подробной информации.

Ретвитнуть бота

Давайте напишем выражение функции, которое находит последние твиты в соответствии с запросом, переданным в качестве параметра. Мы инициализируем объект params, который будет содержать различные свойства для поиска твита, но, что наиболее важно, свойство query или q, которое уточнит наш поиск. Какое бы значение вы ни указали в этом свойстве, наш бот будет искать твиты для ретвита на основе этого критерия. Вы можете использовать значения этого свойства как обработчик твиттера, чтобы отслеживать конкретную учетную запись твиттера или хэштег. Для нашего примера бота мы нашли последние твиты на #nodejs.

Так запускается функционал ретвит-бота:

var retweet = function() {
  var params = {
    q: '#nodejs, #Nodejs',
    result_type: 'recent',
    lang: 'en'    
  } 

Два других свойства: result_type и lang необязательны. При определении бота result_type: 'recent' notifies для поиска только последних твитов, твитов, которые произошли за период времени с момента запуска нашего бота или с момента последнего ретвита.

Есть список параметров, предоставляемых Twitter API.

Наш следующий шаг - поиск твитов на основе наших параметров. Для этого мы будем использовать Twitter.get функцию, предоставленную twit API, чтобы ПОЛУЧИТЬ любую из конечных точек REST API. Конечная точка REST API - это ссылка на конечную точку Witter API, которую мы собираемся вызвать для поиска твитов. Функция Twitter.get принимает три аргумента: конечную точку API, объект params (определенный нами) и обратный вызов.

Чтобы опубликовать или ретвитнуть твит, обнаруженный нашим ботом, мы используем метод Twitter.post() для POST любой конечной точки REST API. Он также принимает такое же количество аргументов, как Twitter.get().

Теперь, чтобы автоматизировать это действие, которое мы определили выше, мы можем использовать функцию таймера JavaScript setInterval() для поиска и ретвита через определенный период времени.

// grab & retweet as soon as program is running...
retweet();
// retweet in every 50 minutes
setInterval(retweet, 3000000);

Обратите внимание, что все функции таймера JavaScript принимают аргумент количество времени в миллисекундах.

Любимый бот

Подобно retweet боту, мы можем определить и инициализировать другое выражение функции, которое будет выполнять поиск и избранное твита случайным образом. Да, разница здесь в том, чтобы искать и получать твиты случайным образом. Мы начнем с создания объекта параметра params, который будет состоять из трех свойств, как в retweet() выражении функции. Бот будет искать твиты, используя ту же функцию .get(), предоставляемую twit API, для ПОЛУЧЕНИЯ любой конечной точки Twitter API. В нашем случае нам понадобится search/tweets. Затем мы сохраним статус поиска твита в избранном в переменной, а в другой переменной мы применим случайную функцию, передав переменную «статус поиска» в качестве аргумента.

Обратите внимание, что все твиты, которые ищет наш бот, хранятся в массиве. Опять же, мы используем функцию таймера JavaScript setInterval() для поиска и добавления твита в избранное через определенный период времени в миллисекундах.

Полный модуль: bot.js:

использование

Чтобы запустить этого бота, зайдите в свой терминал:

$ node bot.js

Чтобы избежать этого монотонного процесса, вы можете использовать npm scripts или nodemon.. Вы также можете развернуть это приложение на Heroku для непрерывной интеграции.

Чтобы использовать сценарии npm, внесите это изменение в scripts в package.json:

{
  "scripts": {    
    "start": "node bot.js",  
  }
}

Затем с терминала:

$ npm start

Есть разные способы написать Twitter-бота, это только один из способов. Ваш бот может быть умным, и вы можете делать с ним разные вещи. Вам просто нужно обратиться к twit документации, чтобы узнать о других методах RESTful API для управления конечными точками Twitter API.

Для дальнейшего чтения посетите Botwiki.org для различных типов ботов на большом количестве платформ. Для углубленного изучения ознакомьтесь со списком руководств Botwiki по работе с ботами Twitter на разных языках программирования.

Если вы зашли так далеко и вам понравилось это чтение, нажмите кнопку.

Хотите получать больше подобных статей? Подпишитесь на меня здесь. Иногда я отправляю подписчикам контент, который никогда раньше не видел.

Я надеюсь, что это было полезно! Увидимся в Твиттере.

Хакерский полдень - это то, с чего хакеры начинают свои дни. Мы часть семьи @AMI. Сейчас мы принимаем заявки и рады обсудить рекламные и спонсорские возможности.

Если вам понравился этот рассказ, мы рекомендуем прочитать наши Последние технические истории и Современные технические истории. До следующего раза не воспринимайте реалии мира как должное!