Создание бота в Twitter с использованием API-интерфейса Twitter является одним из фундаментальных приложений API-интерфейса Twitter. Чтобы создать бота Twitter с Nodejs, вам нужно выполнить следующие шаги, прежде чем продолжить:
- Создать новый аккаунт для бота
- Подайте заявку на доступ к API на сайте developer.twitter.com
- Убедитесь, что на вашем компьютере установлены Node.js и NPM
Мы будем создавать Twitter-бота с Nodejs для отслеживания определенного хэштега, затем ставить лайки и ретвитить каждое сообщение, содержащее этот хэштег.
Встать и бежать
Во-первых, вам нужно инициализировать ваше приложение узла, запустив npm init
и заполнив необходимые параметры. Затем мы устанавливаем Twit, пакет NPM, который облегчает взаимодействие с API Twitter.
Джава
xxxxxxxxxx
1
$ npm install twit --save
Теперь перейдите на панель инструментов разработчика в Твиттере, чтобы создать новое приложение, чтобы вы могли получить ключ потребителя, секрет потребителя, ключ токена доступа и секрет токена доступа. После этого вам необходимо установить эти ключи как переменные среды для использования в приложении.
Вам также может понравиться:
Использование Twitter с Python и Tweepy
Сборка бота
Теперь в файле ввода приложения инициализируйте Twit секретными ключами из вашего приложения Twitter.
Джава
xxxxxxxxxx
1
// index.js
2
const Twit = require('twit');
3
const T = new Twit({
4
consumer_key: process.env.APPLICATION_CONSUMER_KEY_HERE,
5
consumer_secret: process.env.APPLICATION_CONSUMER_SECRET_HERE,
6
access_token: process.env.ACCESS_TOKEN_HERE,
7
access_token_secret: process.env.ACCESS_TOKEN_SECRET_HERE
8
});
Прослушивание событий
Потоковый API Twitter предоставляет доступ к двум потокам: пользовательскому и общедоступному. Мы будем использовать публичный поток, который является потоком всех публичных твитов. Вы можете прочитать больше о них в документации.
Мы собираемся отслеживать ключевое слово из потока общедоступных твитов, поэтому бот будет отслеживать твиты, содержащие «#JavaScript» (без учета регистра).
Ключевые слова для отслеживания
Джава
xxxxxxxxxx
1
// index.js
2
const Twit = require('twit');
3
const T = new Twit({
4
consumer_key: process.env.APPLICATION_CONSUMER_KEY_HERE,
5
consumer_secret: process.env.APPLICATION_CONSUMER_SECRET_HERE,
6
access_token: process.env.ACCESS_TOKEN_HERE,
7
access_token_secret: process.env.ACCESS_TOKEN_SECRET_HERE
8
});
9
// start stream and track tweets
11
const stream = T.stream('statuses/filter', {track: '#JavaScript'});
12
// event handler
14
stream.on('tweet', tweet => {
15
// perform some action here
16
});
Отвечая на события
Теперь, когда мы смогли отследить ключевые слова, теперь мы можем выполнять магию с твитами, которые содержат такие ключевые слова, в нашей функции обработчика событий.
API Twitter позволяет взаимодействовать с платформой, как обычно. Вы можете создавать новые твиты, например, ретвитнуть, ответить, подписаться, удалить и многое другое. Мы собираемся использовать только две функциональности, такие как и ретвит.
Джава
xxxxxxxxxx
1
// index.js
2
const Twit = require('twit');
3
const T = new Twit({
4
consumer_key: APPLICATION_CONSUMER_KEY_HERE,
5
consumer_secret: APPLICATION_CONSUMER_SECRET_HERE,
6
access_token: ACCESS_TOKEN_HERE,
7
access_token_secret: ACCESS_TOKEN_SECRET_HERE
8
});
9
// start stream and track tweets
11
const stream = T.stream('statuses/filter', {track: '#JavaScript'});
12
// use this to log errors from requests
14
function responseCallback (err, data, response) {
15
console.log(err);
16
}
17
// event handler
19
stream.on('tweet', tweet => {
20
// retweet
21
T.post('statuses/retweet/:id', {id: tweet.id_str}, responseCallback);
22
// like
23
T.post('favorites/create', {id: tweet.id_str}, responseCallback);
24
});
Retweet
Чтобы ретвитнуть, мы просто statuses/retweet/:id
публикуем также передаваемый объект, который содержит идентификатор твита. Третий аргумент - это функция обратного вызова, которая вызывается после отправки ответа. Хотя это и необязательно, но все же рекомендуется получать уведомления при появлении ошибки.
подобно
Чтобы получить твит, мы отправляем запрос на отправку в favourites/create
конечную точку, также передавая объект с идентификатором и дополнительной функцией обратного вызова.
развертывание
Теперь бот готов к развертыванию. Я использую Heroku для развертывания приложений для узлов, поэтому кратко расскажу об этом ниже.
Во-первых, вам необходимо загрузить инструмент Heroku CLI. Вот документация . Инструмент требует git для развертывания. Есть и другие способы, но развертывание из git кажется проще, поэтому вот документация .
В Heroku есть функция, при которой ваше приложение засыпает после некоторого времени бездействия; это может рассматриваться как ошибка для некоторых людей. Смотрите исправление здесь .
Вы можете прочитать больше в документации Twitter, чтобы создавать более крупные приложения. Здесь есть вся информация, о которой вам нужно знать.
Вот исходный код на случай, если вам интересно.
Дальнейшее чтение
Создание карты для игры в Twitter Bot: сохранение и получение состояния игры в / из AWS DynamoDB