Hatena::ブログ(Diary)

EasyBotterでのbot作成法

2010-08-31 基礎編

6.基礎編(4):キャラbotを作ろう

前回までで自動でpostとリプライができる環境が整ったかと思います。

これで基本的なキャラbotが作れます。

ここからはキャラ別にセリフを入れていきましょう。

【ちょっと注意】反応させる語句に半角、全角のカッコを入れるとうまく反応しません。顔文字に反応させる時は注意してください。

(例) (∵) ←のような顔文字に反応させる場合は、∵ だけに反応させるようにする、等

製作者のみなさんの作家性が出ると思います。 楽しくて魅力的なbotにしましょう! (∵)ノシ


bot説明ページを作る】

botアカウントのweb欄に説明ページへのリンクを貼っておきましょう。

説明ページには非公式botである旨は必須で、他にリプライパターン等を記載しておくといいでしょう。



【参考・cron時間設定の目安】

botの定時postは1時間に1回、

replyは5分に1回にしています。

2分に1回などにも設定できますが、サーバの負荷も大きくなるのでこのあたりがちょうどいいかと思います。

実行する時間が異なるので、定時postを行うフォルダとリプライを行うフォルダは別フォルダで作りましょう。(character_bot、character_bot_replyなど)

cronも個別に設定で。

どちらかのフォルダに自動フォロー返し(autoFollow)を入れるとよろしいかと。

1つのフォルダでpostとリプライができる方法もありますが、スクリプトが複雑になるのでおすすめはしません。



以上で基礎編は終了です。

次からは応用編になります。高度な設定に興味のある方は引き続きお付き合い下さいませ。

5.基礎編(3):cronを設定する

ここではbotを定期的に実行させるためのcronの設定を行います。

ここの設定はかなり時間がかかる(数時間)ので、まとまった時間が取れる時に行ってください。

ここでいきなり内容が難しくなってしまうかもしれませんがあしからず…


cronはサーバーに備え付けである場合もありますが、@pagesにはありません。

私の場合は状況に合わせて2種類のcronを使っています。

1.Google App Engine(GAE)(無料)

2.Webcron.org(有料)


以下詳細

1.Google App Engine(GAE)(無料)

googleが提供している無料のcronサービスです。

初期設定が大変ですが、動作に信頼性があり、何より無償なのが利点かと思います。

5分間隔でもしっかり動作するので、リプライを実行するcronはこちらにしています。


・設定方法

設定の際にG-mailアカウント携帯電話メールアドレスが必要なので準備をしておいて下さい。

その後、↓の通りに設定を行ってください。

http://d.hatena.ne.jp/twibotbot/20091211/1260500313

本来の説明ページは事情により閉鎖されてしまい、避難所的なページになっております。

定員オーバーの可能性や、幾つかソフトをダウンロードしたりしなければならないなどハードルが幾つかありますが、書かれている通りにやっていけば設定できますので根気よくやってみてください。

(定員オーバーの件は未確認です。)



2.Webcron.org(有料)

海外サイトで情報を入力して実行してもらう形式です。動作は安定しています。

http://www.webcron.org/index.php

アカウントを取得してください。(登録する名前は必ず英語表記にすること)

登録メールアドレス宛に確認メールが行くと思うのでクリックして登録完了の流れで。

支払いはクレジットカードで前払い制です。

cron一回の実行あたり0.0001ユーロ程度かかります。これは1時間に1回実行するだけなら一ヶ月に10円くらいしかかからない計算です。

※向こうはヨーロッパなので日本と時差が7時間あります。時間設定の際はご注意下さい。



1,のGAEが定員オーバーだった場合など他のcronを探したい場合はコチラから探してみてください。

http://pha22.net/twitterbot/cron.php

4.基礎編(2):botに話しかけてみる(@返信に反応)

今回はbotのリプライ機能について説明します。

reply_pattern.phpにもデフォルトで会話パターンが入っています。

このファイルもデフォルトのまま特に手は加えずに動作確認してみるという方向で。最初ですしね。

編集するのはbot.phpだけです。


1.bot.phpの編集・動作確認

テキストエディタで開いて、

//=============================

//botの動作をここに書いてください

//先頭に//がある行はコメント扱いなので実行しません。実行したい行の頭の//を削除してください。

//=============================

$response = $eb->autoFollow();

$response = $eb->postRandom("data.txt");

//$response = $eb->postRotation("data.txt");

//$response = $eb->reply(5,"data.txt","reply_pattern.php");

//$response = $eb->replyTimeline(5,"reply_pattern.php");

こんな感じになっているかと思います。

今回はautoFollowとpostRandomの行の文頭に//を入れて動作しないようにし、

代わりに下から2行目の『reply(5,"data.txt","reply_pattern.php");』の文頭の//を削除します。

これでreplyが動作するようになりました。

サーバーに再アップロードして手動実行してください。


5分以内に受け取った@はないようです。


という表記が出れば成功です。

この表記は、文字通り5分以内にbotアカウント宛の@返信がない事を表しています。

では次は@返信がある場合で実行してみましょう。




2.botに話しかけてみる

botアカウントへ別アカウントから@を飛ばします。

とりあえず「おはよう」とだけ入力してリプライしてください。

その後、botを手動実行。

Twitterへの投稿に成功しました。~~@(botのID)に投稿したメッセージ:@(別アカウントの名前) Good morning, master. http://twitter.com/aaa_bot/status/********

Twitterへの投稿に成功しました。~~@(botのID)に投稿したメッセージ:@(別アカウントの名前) おはようございます、御主人様 http://twitter.com/aaa_bot/status/********


が出れば返信成功です。

今回はreply_pattern.phpに「おはよう」というワードに反応するパターンが書かれていたためそれに従ってpostがされました。

reply_pattern.phpを読んでいただければすぐにわかると思います。

反応の優先順位は書かれている順になります。

返信するワードが複数ある場合は、ランダムで選択してpostされます。

※@返信に反応するワードがない場合は、data.txtの中からランダムに選択してpostされます。data.txtに何もテキストがない場合は、リプライは行われません。

3.基礎編(1):手動でbotを動かしてみる

EasyBotterにはデフォルトで投稿用の設定、セリフが用意されています。

今回はまだセリフには手を加えず、基本編としてcronなしでの手動投稿をやってみたいと思います。


今回の流れは以下の通り

1. OAuth認証のためのAccess TokenとAccess Token Secretを取得する

2. setting.phpテキストエディタで編集する

3. bot.phpテキストエディタで編集する

4. ファイルをサーバーアップロードする

5. botに手動でアクセスする その1(ランダムpost確認)

6. botに手動でアクセスする その2(自動フォロー返し確認)



1. OAuth認証のためのAccess TokenとAccess Token Secretを取得する

いきなり難しい単語が出てきましたが、早い話がOAuth認証においてアカウントを認識するためのキーとなる情報です。

パスワードの代わりになるようなものといえば分かりやすいかも知れません。

この情報はbotアカウントログインした状態で以下のページにアクセスすることで入手できます。

↓リンク先をご一読下さい。

http://pha22.net/twitterbot/2.0/setting.php

ページの一番下にある「OAuth認証について」のリンクをクリック→次に出てきたページの「→→→Twitter内のOAuth認証用ページ←←←」をクリックすることで

Access TokenとAccess Token Secretの項目にそれぞれテキストボックスが出てくると思います。(空欄の場合は更新をするか、先程のリンクからやり直して下さい。)

その2つボックスの中にある文字の羅列が、現在ログインしているbotアカウントAccess TokenとAccess Token Secretになります。

この2つの羅列を丸々コピーして、適当にテキストエディタに保存しておいて下さい。次項でsetting.phpにペーストします。


2. setting.phpテキストエディタで編集する

EasyBotter2.04betaフォルダ内にある「setting.php」をテキストエディタで開いてください。

MKEditorの「開く」コマンドでは最初はdata.txtだけしか表示されない場合があります。

それはtxtファイルだけしか表示されない設定になっている状態ですので、ウィンドウ下部にある「ファイルの種類」からすべてのファイルを表示させるようにしてください。phpファイルも表示されるはずです。


以下のような表記があるかと思います。

//設定

$screen_name = ""; //botのid名

$consumer_key = "WtNt5W6js77cFHvKyVgf6Q"; // Consumer keyの値

$consumer_secret = "h3In28YiiRxtg4PTpkhPmrlJSGOCTG2oh3hslQ"; // Consumer secretの値

$access_token = ""; // Access Tokenの値

$access_token_secret = ""; // Access Token Secretの値

twitterへのアクセスに必要な情報を入力します。

EasyBotterからOAuth認証でtwitterにアクセスするために、ID名と4つのキー情報が必要になります。

キー情報のうち2つはEasyBotter共通の情報となるので記入済みです。残りの2つのキー情報とID名がbotアカウント固有の情報となります。

というわけで、早速ID名と先程取得したAccess TokenとAccess Token Secretの文字列を該当箇所の""内にペースト、保存してください。

文字コードと改行コードに注意してください。(『文字コード:UTF-8N(BOMなし)』『改行コード:LF』)

これでsetting.phpの編集は終了です。





3. bot.phpテキストエディタで編集する

次にbot.phpテキストエディタで開きます。

//=============================

//botの動作をここに書いてください

//先頭に//がある行はコメント扱いなので実行しません。実行したい行の頭の//を削除してください。

//=============================

//$response = $eb->autoFollow();

//$response = $eb->postRandom("data.txt");

//$response = $eb->postRotation("data.txt");

//$response = $eb->reply(5,"data.txt","reply_pattern.php");

//$response = $eb->replyTimeline(5,"reply_pattern.php");

ファイル内容は結構ボリュームがありますが、とりあえず↑の部分を見てください。

ここでbotの動作パターンを設定できます。

上から順に、

○最近フォローしてきたユーザーをフォローする。(自動フォロー返し)

○data.txtの中からランダムでテキストを選んで投稿する。

○data.txtに記載されている順番でテキストを投稿する

○5分以内の@返信に対して返信する。(reply_pattern.phpに書かれたパターンに則って)

○5分以内のTL上の語句に対して返信する。(reply_pattern.phpに書かれたパターンに則って)


いずれもbot.phpがアクセスされ実行されたときに起こすアクションです。

上にも書かれている通り、文頭に//が入っているものは動作しません。//の有無で動作を取捨選択していきましょう。

まず最初はランダム投稿のみを行うことにします。

2番目のpostRandomの項目の文頭の//を削除して下さい。

ここでも文字コードに注意してください。ウィンドウ下のバーで確認できます。(普通に入力をしている分には問題はないと思いますが…)

これでbot.phpの設定も終了です。


4. ファイルをサーバーアップロードする

EasyBotterフォルダの名前を適宜変更し(今回はとりあえずtwibot)、FTPソフトを使ってサーバーアップロードします。

アドレスが長くなりすぎない程度に

http://〜(サーバのアドレス)〜/twitbot/bot.php

↑がbotを動作させるときにアクセスするアドレスになります。



5. botに手動でアクセスする その1(ランダムpost確認)

では実際にbotにアクセスしてみましょう。

先ほどのアドレスをバーに入力してアクセス!


Twitterへの投稿に成功しました。~~@(botのID)に投稿したメッセージ:(data.txtに書かれている文章:いろは文のどれか)


↑な感じの表示が出れば投稿成功ですヽ(∵)ノ

英文が並んでいる場合は、phpのエラーが起こっています。

文字コードと改行コードが間違っていないか?

・セリフやコメント部分以外で全角スペースが入っていないか?

・setting.phpで入力したAccess〜の値が間違っていないか?

このあたりを確認してみて下さい。

エラー文の末尾に「line〜」という表記がある場合には該当するphpファイルでエラーとなっている行を指していますので参考にして下さい。


6. botに手動でアクセスする その2(自動フォロー返し確認)

次に自動フォロー返しの動作確認をしたいと思います。

再びbot.phpを編集します。

//=============================

//botの動作をここに書いてください

//先頭に//がある行はコメント扱いなので実行しません。実行したい行の頭の//を削除してください。

//=============================

//$response = $eb->autoFollow();

$response = $eb->postRandom("data.txt");

//$response = $eb->postRotation("data.txt");

//$response = $eb->reply(5,"data.txt","reply_pattern.php");

//$response = $eb->replyTimeline(5,"reply_pattern.php");

postRandomの一つ上、autoFollowの行の文頭の//を削除して保存してください。

これでランダムpostと自動フォロー返しが機能するようになりました。

サーバーアップロードされているtwibotフォルダをに変更を反映させます。

フォルダ内のbot.phpだけを上書きアップロードしても問題はないと思いますが、確実性、わかりやすさを優先してtwibotフォルダを一旦削除して、新規でアップロードし直してください。

(上書きを繰り返していると変更がうまく反映されない場合があるそうです。)

私は現在でも再アップロードの際はフォルダ全削除の上で行っています。


アップロードが完了したら、動作確認に移ります。

あらかじめ別のアカウントからbotアカウントへフォローをしておいて下さい。

それでは再度手動でbotへアクセスして下さい。前回同様、ランダムpost成功のメッセージが出たと思います。

自動フォロー返しに関するメッセージは出ません。

botアカウントにアクセスして、相互フォローできているか確認して下さい。

2.EasyBotter内ファイルの説明

ここでは前回ダウンロードしたEasyBotterフォルダに入っているファイルについて説明したいと思います。

このEasyBotter内のファイルを編集し、フォルダごとサーバーアップロードすることになります。

bot.php botの動作パターンを書くファイル。botを実行する際に外部からアクセスするファイルです。

・data.txt …発言させたい文章を書き込むデータファイル。デフォルトでテキストが書かれています。

・EasyBotter.php botを動かすためのメインのスクリプト。編集しません。

・log.dat …返信履歴を記録するためのファイル。編集しません。

・/PEAR(フォルダ)botを動かすためのライブラリ。編集しません。

・reply_pattern.php …特定の単語に特定の文章を返すためのデータファイル。

・setting.php botにアクセスするためのキーを書き込む設定ファイル。

一部編集しないファイルがあります。

次回からこれらのファイルをちょくちょく編集していきたいと思います。


【最後に注意】これらのファイルを編集する際は、すべて『文字コード:UTF-8N(BOMなし)』『改行コード:LF』で行って下さい。

※MKEditor上では『文字コード:UTF-8N(BOMなし)』『改行コード:LF

また、ファイル内で全角スペースがあるとエラーが発生します。(data.txt、reply_pattern.phpのセリフ部分、文頭に//があるコメント部分を除く)

1.用意するもの

こんにちは。

いつもtwitterbotを走らせている者です。


今回はこれからbot製作を始めたい方向けに、私がどんな感じでbot製作を行ったのかをなるべくわかりやすく説明していきたいと思います。

途中つたない箇所もあるかと思われますが、お付き合い下さいませ。


◎用意するもの

botを走行させる為に必要なものは以下の6点です。

1. EasyBotter

2. レンタルサーバ

3. bot用のtwitterアカウント

4. テキストエディタ

5. FTPソフト

6. cron



以下詳細です。

私が実際に使用しているものを紹介していきます。


1.EasyBotter

botの基本スクリプトです。

私のbotの基本スクリプトは書いておりません。

phaさんが無償公開しております、『EasyBotter』を使用させていいただいております。

http://pha22.net/twitterbot/

トップページからファイルをダウンロードして、適宜編集して使用します。

いくつかのバージョンがありますが、最新版のver.2.04betaをダウンロードして下さい。

【注意】安定版としてver.1.42も公開されておりますが、こちらはtwitterの認証形式の変更に伴い、9月以降投稿ができなくなります。詳細はコチラ→(http://blog.twitter.jp/2010/06/twitter-api-oauth.html)

(ver1.42以前はBASIC認証、ver.2.0以降がOAuth認証)


2. レンタルサーバ

PHP5以上が使用できるサーバが必須要件です。

私は無料の@pagesを使用しています。

http://atpages.jp/


3. bot用のtwitterアカウント

bot用に新規でアカウントを取得してください。

botIDには「bot」があると親切かと思います。

メールアドレスはG-mailなどのwebメールアドレスが取得もしやすくオススメです。


4. テキストエディタ

botのセリフ、スクリプトを編集するためのエディターです。

EasyBotterは『文字コードUTF-8』『改行コード:LF』という指定があります。

これらのコードを確認できるものが望ましいです。

(Windows付属の「メモ帳」ではだめです。)

私は『MKEditor』を使用しています。

http://www.vector.co.jp/soft/win95/writing/se083554.html


5. FTPソフト

botのファイル(EasyBotter)をサーバーアップロードするためのソフトです。

私が使用しているのは、『FFFTP

http://www.vector.co.jp/soft/win95/net/se061839.html


6. cron

cronとは、指定した時間にbotを動作させるプログラムの事です。

レンタルサーバーの中にはcronを取り扱っている所もありますが、有料だったり制約が多かったりするので、

別に用意して使っています。

詳しくは実際にbotを走行させる際に改めて説明いたします。