お馴染みのtwitterモジュールを使います。
フォローのAPIの公式ドキュメントはこちら(POST friendships/create)
使うメソッド
-
.stream('statuses/filter')
で特定ツイートを検索 -
.post('friendships/create')
でフォローします。
フォローする際はユーザーのIDかスクリーンネームを渡してあげる模様です。
フォロー関連はなかなかサンプルが見つからないですね。
筋トレ
のハッシュタグでツイートしている人をフォローするコード
app.js
'use strict';
const twitter = require('twitter');
const client = new twitter({
consumer_key: '', // consumer keyを記入
consumer_secret : '', // consumer secretを記入
access_token_key : '', // access tokenを記入
access_token_secret : '' // access token secretを記入
});
// async/awaitで表現
const main = async () => {
const stream = await client.stream('statuses/filter', {'track':'#筋トレ'});
stream.on('data', async data => {
console.log(data.id_str);
try {
await client.post('friendships/create', {user_id:data.user.id});
console.log(`${data.user.name}さんをフォローしました。`);
} catch (error) {
console.log(error);
}
});
}
main();
最初ミスったエラー
こんな感じでCannot find specified user.
というエラーメッセージがちょくちょく出てました。
[ { code: 108, message: 'Cannot find specified user.' } ]
こちらの記事を見て気づきましたが、client.post('friendships/create', {user_id:data.id});
という形で ユーザーのIDじゃなくてツイートのIDを指定してしまっていたのが原因だったみたいです。
正しいのは、client.post('friendships/create', {user_id:data.user.id});
という指定ですね。