javaでツイッターbotの作成

サリーのネタは、お客さんからもらったお題に、即座に謎かけで答えるというものだが、このデータを作っているうちに、どうせなら、twitterのbotも作成しようという気になって、javaで作成した。
その要点を記録しておこうと思う。javaで全てのことができるのが素晴らしい!!
アカウントは、 @aigeinin で、このアカウントを作成すると、それに伴って開発者サイトにログインできる。そのサイトで、作成するbotのアプリケーションを登録すると、4つのキー文字列がもらえる。私の場合、javaで作成するので、twitter4jのライブラリを使ってアプリを作成する。
twitter4jは、以下のサイトからダウンロードできる。
http://twitter4j.org/ja/index.html
初歩的な使い方、作り方はネットにたくさん情報があるので、ここでは記載しない。
まず、ツイッターオブジェクトを作成する。
Twitter twitter = new TwitterFactory().getInstance();
4つのキーをセットする(それぞれの文字変数に入れておく)
twitter.setOAuthConsumer(consumerKey, consumerSecret);
twitter.setOAuthAccessToken(new AccessToken(accessToken, accessTokenSecret));
ツイートを最新の20個取得する。
List<Status> statuses = twitter.getMentionsTimeline();
statusとは、以下よく出てくるが、ツイート(返信も含む)のことだ。statusesを一個一個表示(一部の内容だけ)させると以下のようになる。

for (Status status : statuses) {
    System.out..println(
        "《Statusの表示》\n"
        + "getName > " + status.getUser().getName() + " : \n"
        + "getScreenName > " + status.getUser().getScreenName() + " : \n"
        + "getInReplyToScreenName > " + status.getInReplyToScreenName() + " : \n"
        + "getInReplyToStatusId > " + status.getInReplyToStatusId() + " : \n" // 返信じゃない -1
        + "getInReplyToUserId > " + status.getInReplyToUserId() + " : \n"
        + "getCreatedAt > " + status.getCreatedAt().toString() + " : \n"
        + "getText > " + status.getText() + " : \n"
        + "getId > " + status.getId()
    );
}

status IDが大事だ。全てのツイートは、このIDを持っている。もしこのツイートが、他のツイートの返信ならば、getInReplyToStatusId()にその元ツイートのIDが入っている。新規ツイートならば、この値は-1だ。このことはとても重要。
getScreenName()が、@で始まる、いわゆるユーザーIDだ。ツイートの内容は、その全体が、getText()で取得できる。
ツイートのStatus IDがわかると、twitterオブジェクトから、
twitter.showStatus(statusID)
で、そのもとツイートがstatusで取得できる。showなのだが、statusそのものが取り出せるところが、最初戸惑った。
新規のツイートは、tweetにツイートすべきテキストを入れて、
twitter.updateStatus(tweet);
でできる。
リプライ(リプ、返信)は、まず、返信の内容を、tweetにテキストで入れて、StatusUpdateオブジェクトを作成する。
StatusUpdate supd = new StatusUpdate(tweet);
そのオブジェクトに返信の対象となったもとツイートのIDをセットする。
supd.inReplyToStatusId(status.getId());
そして、オブジェクトを引数にツイートさせる
twitter.updateStatus(supd);
となる。
リプライのところは、詳しいマニュアルがないので、勘でやったらうまくいったという感じだ。
これだけで、ツイッターbotのほとんどのことができるはずだ。

足郎2が進まない

本当は、ハード的には組み上がった足郎2を本格的に動かしていなければならない状況なのだが、予想外の事態が発生したために、そちらは全く進まなくなった。
というのは、私的ロボットのサリーと私のコンビ(サリーと教授)が漫才グランプリのM-1の一回戦に合格してしまったのだ。それ嬉しいことだが、合格するとは正直思っていなかった。そもそも、ロボットのコンビで漫才と言えるのかどうか、それすら怪しかった。が、演芸ロボットを普及していかなければならないという使命感で、出たのだ。

普通、二人でやる漫才で、着飾ったロボットを抱えて順番待ちするのは恥ずかしかったが、まあ、一度だけだと思った。合格を知ったときは、腰を抜かすほど驚いた。プロでも落ちるM-1なのだ。
10月に2回戦があるので、そのために、ネタのデータやプログラムを改定していかなければならない。それに忙殺されている。だから、足郎には手が回らないというわけだ。