iyuichiの私的開発ログ

渋谷で働くWebエンジニアのログ. Java, Android, iOS, Docker, GCP, AWS, ゲーム開発

Twitter Bot by Node.js

twitterにアプリ登録する

 

接続に必要なconsumer key, consumer secret, access token, access token secretを取得するために登録を行います。

https://apps.twitter.com

こちらのサイトにアクセスします。

botでつぶやきたいアカウントでログインしてください。

プログラムを動かしたときに正しくできていればここでアプリ登録したアカウントでメッセージが投稿されてしまいますのでご注意を。

node-twitterを利用する

https://github.com/jdub/node-twitter

今回はこれを利用しました。

 

npm install twitter --save

 

 

利用方法はとてもかんたんでした。

 

var twitter = require('twitter');

 


var bot = new twitter({
  consumer_key : "xxxxxxxxxx" /* 各自記入 */,
  consumer_secret : "xxxxxxxxxx" /* 各自記入 */,
  access_token_key : "xxxxxxxxxx" /* 各自記入 */,
  access_token_secret : "xxxxxxxxxx" /* 各自記入 */
});
bot.updateStatus("this is test tweet by bot program.",function(data){
  console.log(data);
});

 

実行する

 

node app.js

 

 

これだけで実行したらつぶやくことはできました。

 

定期実行する

 

さっきのスクリプトをcronとかで時間設定して動かすこともできるけど、今回はnode.js上で実現してみます。

 


require('date-utils');
var twitter = require('twitter');
var url = "http://monasan.info/blog/f-marinos/"
var interval = 28800000; // 8時間

var bot = new twitter({
    consumer_key : "xxxxxxxxxx" /* 各自記入 */,
    consumer_secret : "xxxxxxxxxx" /* 各自記入 */,
    access_token_key : "xxxxxxxxxx" /* 各自記入 */,
    access_token_secret : "xxxxxxxxxx" /* 各自記入 */
});
// tweet every {interval} ms
setInterval(
  function tweet() {
    // メッセージが重複しないように日付と時間を入れる
    var dateStr = new Date().toFormat("YYYY/MM/DD/ HH24:MI");
    bot.updateStatus("メッセージ" + url + " - " + dateStr,function(data){
    console.log(data);
  });
}, interval);

 

 

 

setIntervalで実現できました。

好きな間隔でintervalを設定しましょう。

 

プロセスの起動にはforeverを利用します。

foreverのインストールはnpmコマンドで。

 

sudo npm install forever -g

 

 

インストールできたら実行してみます。

 

forever start app.js

 

 

起動したプロセスの確認は以下の通り。

 

$ forever list

info: Forever processes running

data: uid command script forever pid id logfile uptime

data: [0] 34EC /usr/bin/nodejs app.js 6381 6383 /home/xxxxx/.forever/34EC.log 0:0:33:7.778