Twitter ボットの作り方 Perl 編 (1)

Twitter ボットの作り方解説第 1 弾。前提条件と、下準備までを解説します。

前書き

Twitter をある程度使っていると、突然見ず知らずのアカウントから reply をもらったりして、それがボットだという事は良くあります。
そんなとき、自分だったらこういうボットを作るのに!っていう思いがあっても、なかなか作れない人も多いのではないでしょうか?
ここでは、そのまま動作するサンプルを提示する事で、Twitter のボットを作る方法を解説します。
Perl とか詳しくなくても、Linux の知識がある程度あれば、自由にボットを作れるようになるはずです。

目標

だんだんとレベルを上げながら、以下のようなボットを作る事を目標にします。

  • あらかじめ用意された定型文の中からランダムでつぶやくボット
  • 特定のワードに反応して、reply するボット
  • 特定の RSS の内容をつぶやき続けるボット
  • ボットに対するメッセージを Google Yahoo で検索して結果を返すボット

用意するもの

  • ボット用のアカウント
  • Perl 5.8.x が動作する Linux サーバ
  • Perl の CPAN を利用出来る権限 (通常は root 権限)
  • perl スクリプトにパスを通して実行可能にする権限
  • cron を設定出来る権限
  • UTF-8 で編集/保存が出来るエディタ
  • 上記を理解出来る知識

方針

  • CPAN で可能な事はなるべく CPAN でやる
  • DB は使わずデータはファイルで持つ
  • ゆるい感じで厳密なエラー処理とかはしない

ではここからいよいよ本編です!

下準備

Twitter のボットを作成するにあたっては、当然 twitter サーバとのやりとりが必要になるのですが、そのための CPAN ライブラリを導入します。
また、今後のボットを作成するにあたっては、各種設定やデータなどを別ファイルに保存した方がやりやすいのですが、読み書きのしやすさと使いやすさを考慮して YAML を採用します。
まずはこれらの CPAN ライブラリを導入するところからです。

各モジュールのインストール中は結構時間がかかりますが、気長に待ちましょう。
各種オプションは、意味を理解した上であえて変えようとしない限り全てデフォルト (そのまま Enter) で構いません。

$ su -
# perl -MCPAN -e shell
cpan> install YAML::Tiny
cpan> install Net::Twitter

※ CPAN の利用について不明な点があればこういったところを参照して下さい。

CPAN モジュールの追加が完了したら、とりあえず簡単に動作確認をしておきましょう。
まず、config.yml というファイルを作成します。内容は以下のような感じです。

username: "twitter_user_name"
password: "twitter_password"

ここでは、Twitter で使用するアカウントのユーザ名とパスワードを記述しておきます。
プレーンテキストでパスワードが記載されるので、ファイルの権限には気をつけて下さい。

次に、twitbot.pl というファイルを作成します。内容は以下のような感じです。

#!/usr/bin/perl

use strict;
use warnings;
use YAML::Tiny;
use Net::Twitter;

my $config = (YAML::Tiny->read('config.yml'))->[0];
my $twit = Net::Twitter->new(username => $config->{'username'}, password => $config->{'password'});

$twit->update('Perl から Twiitter を更新するテストですよー');

これを UTF-8 で保存し、実行属性を与えます。perl のパスは環境に合わせて修正して下さい。

ここまで準備が出来たら、おもむろにスクリプトを起動します。
config.yml の指定が相対パスになっているので、カレントディレクトリから起動して下さい。

$ ./twitbot.pl

エラーにならず実行が完了したら、Twitter の TL を確認して下さい。
スクリプトからの更新が反映されていたら成功です。

さあ、ここまで出来れば下準備は完了です。
いよいよ次から、実際のボットを作っていきます。

2 thoughts on “Twitter ボットの作り方 Perl 編 (1)

コメントを残す

メールアドレスが公開されることはありません。