Node.jsを使って、特定のツイートをしている人をフォローする

お馴染みのtwitterモジュールを使います。

フォローのAPIの公式ドキュメントはこちら(POST friendships/create)


使うメソッド



  • .stream('statuses/filter')で特定ツイートを検索


  • .post('friendships/create')でフォローします。

フォローする際はユーザーのIDかスクリーンネームを渡してあげる模様です。

フォロー関連はなかなかサンプルが見つからないですね。


https://www.npmjs.com/package/twitter



筋トレのハッシュタグでツイートしている人をフォローするコード


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を指定してしまっていたのが原因だったみたいです。


tweepyでツイート検索キーワードでフォローしたいがエラーで出る


正しいのは、client.post('friendships/create', {user_id:data.user.id});という指定ですね。


参考