Чому вам може стати в нагоді власний Twitter-бот і як створити його за півгодини +11
- 16.02.17 11:46 •
- EverydayTools •
- # 321968 •
- Хабрахабр •
- Переклад •
- 2 •
- 8200
- такий же як Forbes, тільки краще.
Twitter-боти можуть значно більше, ніж просто спамити популярні хештеги і невтомно підписуватися на користувачів.
Взяти хоча б оповіщення від Twisst ISS бота. який відправляє вам повідомлення кожного разу, коли Міжнародна космічна станція (МКС) буде видно з вашого місця розташування.
Або боти публічних сервісів на зразок Earthquake Robot. який відправляє твіт про підземні поштовхи більше 5 балів за шкалою Ріхтера, як тільки вони трапляються.
Ну і звичайно, poem.exe. робот, який постить вірші, а також Accidental Haiku. який ретвітів пости, випадково написані у формі хайку.
Спільнота # 100DaysOfCode висилає вам повідомлення з привітаннями, коли ви починаєте # 100DaysOfCode Challenge, і ще кілька - у міру проходження етапів.
Бот вітає користувача
Він також залишає підбадьорливі відповіді на твіти з хештегом # 100DaysOfCode, якщо розпізнає в них негативні емоції (наприклад, досаду).
Бот зчитує емоції
На співбесідах мені часто задають питання: «Що вам дає робота в IT сфері?» Я завжди відповідаю: «Мені подобається автоматизувати повторювані завдання для економії часу, щоб дати собі можливість зосередитися на інших речах. Мені приємно усвідомлення, що я зберіг для себе якийсь час ».
Якщо говорити про моє боті @ScottDevTweets, я здебільшого використовую його, щоб завести розмову зі своїми передплатниками. Таким чином, бот може почати розмову, а я підхоплюю.
Маючи на увазі все сказане, бот етичний рівно в тій мірі, що і людина, яка його запрограмував.
Якщо у вас є якісь сумніви з приводу етичності бота, якого ви створили, подивіться відповідний розділ на botwiki.
Отже, готові почати? Тоді поїхали!
Як створити Twitter-бот за півгодини
Створювати Twitter-бота ми будемо за допомогою twit бібліотеки. Після завершення роботи, він буде лайкать і ретвітів то, що ви вкажете, а також зможе відповідати вашим читачам, вибираючи відповіді з заготовлених шаблонів.
Крок № 1: Налаштуйте Twitter-додаток
Створіть новий обліковий запис в Twitter або використовуйте вже існуючу, щоб створити нове Twitter-додаток.
Після цього ви опинитеся в розділі Application Management, де вам потрібно буде запам'ятати свої ключі. Ваші Consumer Key (API Key) і Consumer Secret (API Secret) повинні бути вже доступні.
Вам потрібно буде перейти в нижню частину сторінки і натиснути на кнопку Create my access token щоб отримати Access Token і Access Token Secret. Запам'ятайте і їх - при налаштуванні бота вам знадобляться всі чотири.
Крок № 2: Налаштуйте середу розробки
Тут я скажу одне: використовуйте Cloud9 - з однією з готових середовищ Node.js весь процес займе кілька хвилин.
Майте на увазі, що, якщо при створенні бота ви вирішите використовувати Heroku і / або Cloud9 IDE (як я нижче), в залежності від регіону проживання, у вас можуть запросити номер кредитної картки.
У дереві проекту видаліть файли проекту-зразка: client, package.json, README.md і server.js. Вони вам не знадобляться, але можете і залишити їх при бажанні.
У новому середовищі Node.js c9 перейдіть в термінал і введіть:
Дерево середовища проекту має виглядати якось так:
Перед налаштуванням бота нам потрібно встановити залежності. Перейдемо в папку проекту за допомогою команди cd tw *, це перемістить вас в
З терміналу введіть:
Це дозволить встановити всі залежності, перераховані у файлі package.json. Якщо видаються будь-які помилки, раджу встановлювати залежності з файлу package.json по одній тій же командою, додаючи назву пакета в кінці.
Ось приклад залежностей в файлі package.json:
А ось команда, щоб встановити їх все:
Якщо ж вам видаються повідомлення-попередження, наприклад, npm WARN package.json [email protected] No repository field - нічого страшного, бот це не зламає, можете не звертати уваги.
Тепер ви можете налаштувати бота. Введіть з терміналу:
Тепер потрібно додати ключі Twitter в файл .env. Просто введіть їх у відповідні поля і збережіть файл.
Що стосується SENTIMENT_KEY, ви можете отримати новий API ключ за посиланням: market.mashape.com/vivekn/sentiment-3 Ключ знаходиться в полі REQUEST EXAMPLE.
Додайте цей ключ в .env файл разом з усіма іншими.
Тепер вам потрібно ввести ім'я Twitter-бота і задати інтервал в хвилинах, з яким він повинен залишати лайки і репоста.
Зверніть увагу: ніякі значення в .env файлі не обрамляются лапками.
Далі ви можете додати в файл strings.js ключові слова, за якими хочете здійснювати пошук, а також вкладені запити.
Додайте списки запитів і підзапитів. Також можете оновити заблоковані запити, якщо хочете занести щось в чорний список
Вводячи список підзапитів, обов'язково залишайте перед ним пробіл. Навіщо? Щоб зчіплюючись з 'node.js' запит 'handy tip' брав вид node.js handy tip, а не node.jshandy tip.
На цьому, по ідеї, все. Зайдіть в термінал і введіть npm start. Ви повинні отримати ось такий output:
Перевірте обліковий запис Twitter:
Крок № 3: Налаштуйте Heroku
Дуже добре, тепер у нас є бот, якого ми можемо протестувати в своєму середовищі розробки. Але залишити його там не можна - потрібно зробити Деплой на Heroku.
Якщо ви ще цього не зробили, щоб створити обліковий запис на Heroku. потім виберіть Create a new app зі списку вище і правіше дашборда. На наступному екрані вбийте назву програми, якщо хочете, а потім натисніть кнопку Create app.
Вам буде представлений дашборда додатки та інструкції для методу деплоя.
Назва вашого додатка має відображатися у верхній частині приладової панелі - це вам знадобиться, коли будете входити в систему Heroku за допомогою інтерфейсу командного рядка Heroku, який ми будемо використовувати для деплоя додатки.
Спочатку будемо здійснювати Деплой через Heroku Command Line Interface (CLI). Увійдіть в Heroku, використовуючи термінал c9 (він повинен бути встановлений за замовчуванням).
Введіть облікові дані:
Проведіть Деплой свого застосування:
Ось такий build output ви повинні отримати в терміналі:
Тепер перевірте output командою:
Все вийшло? Круто!
Налаштування змінних Heroku
Тепер, коли наш бот на Heroku, необхідно додати змінні середовища для зберігання Twitter-ключів. Справа в тому, що файл .env, в якому вони записані, зазначений серед інших в файлі .gitignore, який відправляє на git команду не завантажувати перераховані файли на Heroku.
Таким чином, якщо в майбутньому ми захочемо викласти код в GitHub, нам не доведеться хвилюватися, що наші ключі виявляться в публічному доступі разом з файлом .env - він автоматично буде виключений.
Все, що від вас вимагається - зайти в консоль вашого застосування на Heroku, вибрати секцію Settings і додати свої Twitter-ключі з файлу .env. Потім натисніть на кнопку Reveal Config Vars і додайте змінні з відповідними значеннями.
Задавши змінні в Heroku, перейдіть в файл config.js в поточному проекті. Вам потрібно буде видалити ось цей рядок:
Тепер все готово до того, щоб знову деплоіть Heroku. Команди в консолі повинні виглядати приблизно так:
Потім ви можете перевірити логи в Heroku за допомогою команди
Готово: у вас є бот, який буде виконувати свої функції вічно. Ну, або до тих пір, поки ви не вирішите змінити критерії пошуку.
Деплой Heroku за допомогою GitHub
Також ви можете здійснювати Деплой свого застосування за допомогою підключення до GitHub і автоматично деплоіться до Heroku кожен раз, коли ваша гілка «master» оновлюється на GitHub. Тут все досить прозоро.
Пошук та усунення несправностей в Heroku
Що значить «зламалося» ?!
Загалом, я виявив, що іноді worker визначається як web, що призводить до креш. Спробуйте змінити налаштування worker ось так:
Якщо не допомагає, перейдіть на вкладку Resources і пограйте з настройками там. Як я з'ясував, якщо посувати слайдери у web, heroku і worker, як правило, все приходить в норму. Суть в тому, що вам потрібно активувати Dyno worker - помилка Error R10 (Boot timeout) трапляється через те, що система намагається використовувати замість нього якийсь інший ресурс.
Ось ще одна корисна команда для Heroku:
За замовчуванням ви можете пушіть тільки свою основну гілку, коли працюєте з гілкою розробки (наприклад, dev). Якщо хочете протестувати на Heroku, то можна використовувати команду:
Якщо хочете додати все це в свій репозиторій на GitHub, але не відчуваєте бажання ділитися зі світом своїми ключами - просто вимкніть трекінг файлу .env. Введіть з терміналу команду:
Команди, якими користувався найбільше, я виніс сюди, в gist.
висновок
Тепер ваш Twitter-бот запущений. Надалі ви можете продовжувати працювати з ним і змінювати налаштування.
Подяки
За натхнення я повинен подякувати @amanhimself і його пости про створення власного Twitter-бота.