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

Прежде чем мы начнем

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

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

Команда npm init - это пошаговый инструмент для построения вашего проекта. Вам будет предложено ввести несколько аспектов проекта в следующем порядке:

  • Название проекта,
  • Первоначальная версия проекта,
  • Описание проекта,
  • Точка входа в проект (имеется в виду главный файл проекта, давайте установим его на bot.js),
  • Тестовая команда проекта (для тестирования)
  • Репозиторий проекта git (где можно найти исходный код проекта)
  • Ключевые слова проекта (теги, относящиеся к проекту)
  • Автор проекта
  • Лицензия проекта (по умолчанию ISC - большинство проектов Node.js с открытым исходным кодом принадлежат MIT)

После выполнения npm init шагов, описанных выше, файл package.json будет сгенерирован и помещен в текущий каталог.

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

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

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

В том же каталоге создайте новый файл с именем config.js.. Этот файл будет служить идентификатором для вашего приложения-бота Twitter. Мы заполним эти поля после того, как сгенерируем ключи из продуктов для разработчиков Twitter.

module.exports = {
  consumer_key: "",
  consumer_secret: "",
  access_token: "",
  access_token_secret: "",
  timeout_ms: 60 * 1000,
  strictSSL: true,
};

Пакет Twit

Давайте установим зависимость, которая нам нужна для нашего приложения:

$ npm install twit

Наконец-то пришло время написать код. После завершения установки зависимости перейдите к основному файлу bot.js. Импортируйте зависимость, а также config.jsfile.

const Twit = require("twit");
const config = require("./config.js");

Передайте в зависимость конфигурацию нашего твиттер-приложения.

const T = new Twit(config);

Наша следующая задача для бота - поиск твитов по нашим параметрам. Этот код будет фильтровать общедоступный поток Twitter по запросу «100DaysOfCode», добавлять в избранное и ретвитнуть их.

Вот как выглядит мой bot.js:

const Twit = require("twit");
const config = require("./config.js");
const T = new Twit(config);
const phrase = "100DaysOfCode";
const stream = T.stream("statuses/filter", { track: phrase });
stream.on("tweet", function (tweet) {
  setTimeout(() => {
    gotTweet(tweet);
  }, 9000);
});
function gotTweet(tweet) {
  T.post("statuses/retweet", { id: tweet.id_str }, retweeted);
  T.post("favorites/create", { id: tweet.id_str }, retweeted);
  function retweeted(err) {
    if (err) {
      console.log("Error: " + err.message);
    } else {
      console.log("Retweeted: " + tweet.id);
    }
  }
}

Возможно, вы заметили, что наш config.jsfile все еще пуст, мы исправим это через секунду.

Создать приложение Twitter

На этом этапе вам нужно создать приложение для твиттера. После входа в свою учетную запись Twitter перейдите по этой ссылке, чтобы создать новое приложение. Нажмите кнопку Создать приложение в верхней правой части экрана.

Чтобы сгенерировать ключи API, необходимые для аутентификации продуктов разработчика Twitter, вам будет предложено предоставить описание вашего приложения.

Есть четыре «токена» или «ключа», которые нам нужны от продуктов для разработчиков Twitter. Это случайно сгенерированные строки, которые однозначно идентифицируют ваше приложение. Они необходимы для работы вашего приложения. Выберите вкладку «Ключи и токены доступа».

Вы увидите что-то вроде этого:

Нажмите «Создать», чтобы создать токены, которые будут использоваться для выполнения запросов API от имени вашей учетной записи.

Не сообщайте никому свой секрет токена доступа.

Теперь, когда вы сгенерировали свои токены, все, что вам нужно сделать, это открыть config.jsfile и вставить значения в соответствующее поле.

module.exports = {
  consumer_key: "API key",
  consumer_secret: "API secret key",
  access_token: "Access token",
  access_token_secret: "Access token secret",
  timeout_ms: 60 * 1000,
  strictSSL: true,
};

Твиттер-бот готов покорять мир!

Как использовать

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

$ node bot.js

Как видите, наш бот работает, но есть одна проблема. Это приложение работает на нашем устройстве, мы хотим, чтобы оно работало автономно на сервере, и никогда больше о нем не думаем.

Сервис, который мы собираемся использовать, называется Heroku.

Развертывание Heroku

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

Существует несколько способов развертывания на Heroku, и они отлично документируют каждый шаг, но самый простой способ - загрузить наш существующий проект на GitHub, а затем подключить Heroku к этому репозиторию.

Теперь, когда наш бот подключен к Heroku, все, что нам нужно сделать, это прокрутить вниз и нажать кнопку «Развернуть ветку».

Заключение

И… вот и все! Вы официально развернули своего первого Twitter-бота! Пожалуйста, свяжитесь со мной, если у вас возникнут проблемы или вопросы.