LoginSignup
13
15

More than 5 years have passed since last update.

node.jsを使ってtwitter botを作ってみる

Last updated at Posted at 2016-11-14

twitterにアプリ登録する

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

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

node-twitterを利用する

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

app.js
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上で実現してみます。

app.js
require('date-utils');
var twitter = require('twitter');

var url = "http://xxxxxxxxxxxxxxxx"
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
13
15
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
13
15