Easybotterでbotを作ってみる(cron編)

Easybotterでbotを作ってみる(cron編)

さて、それではいよいよcron編に・・・。
cronとは自動でサーバーにアップしたプログラムにアクセスしてくれるものなのですが。
これが結構大変でして・・・。最初はフリーのものをお借りしました。

Free Web Cron Service
http://www.mywebcron.com/

ところが・・・うまく動かない・・・。
最初サーバーを@pagesさんでやっていたのがよくなかったのか、動かねえ(泣)。
他のもいろいろ試してみたんですが、こちらが使い勝手がよさそうに見えて(というより、これがいちばん動きそうな気配だったんです)。
サーバー替えたりしたんですが・・・定期運転と呼べるものではなくて・・・原因がわからないのがつらい。

それで、某bot管理人さんにお聞きしたところ(もううまくいかなくて見境いなかった)、こちらを紹介していただきました。

web cron.org
http://webcron.org/

有料なのですが、とてもお安いということで。
ところがですね・・・こちらでも動かない、というより、動いたり動かなかったり(泣)。
半ば諦めてました。
いろいろ検索した結果、どうやらサーバーとcronの相性とかあるらしくて。
とりあえずお試しでロリポップさんをお借りして、付属のcronを使ってみることに。
そしたら・・・動いた!!



こ、こいつ・・・動くぞ!


↑別にいらないアムロのセリフ

いや・・・まあそれよりですね、動いたことが確認できたら、中身をすこし改造します。
このままだといろは歌を延々と話すbotになってしまうので。

まずは、bot.phpのファイルをTeraPad(勝手に相性をテラコヤスとしております・・・子安さんのように活躍してほしくて)で開きます。
作るボットをどういうものにするかで、改造の仕方は異なるのですが、わたしが作りたいのは、順番通りに原作のセリフをはいて、リプライ反応をする、TL反応をする、というものです。

まずは最初にある//を取り除きます。
$response = $eb->postRotation("rotation.txt");
といったように、""に任意のテキスト名をいれてください。そしてこのファイルも同時に作成してくださいね(当たり前)。
セリフは話させたいものを入れていってください。それは原作でもいいし、自由に好きなように、という感じですかね。
ファイル名に間違いがないようにお気をつけください。お試しの時点で//ははずしてあるはず(と記載するのを忘れていましたね・・・マニュアル通りにやればそうしているはず・・・です)ので、ファイル名だけ好きなものに変えておきます。
あとは、リプライとタイムラインのほうもいれておきます。
既存のファイルがありますので、それに足していけばいいかと。
TL反応のほうは自分でファイル作ります。といっても、リプライのものをそのまま別名保存して、中身をいれかえればいいだけです。簡単。

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

最初の数字は、反応速度で、分です。cron動作の数字と合わせてくださいね。

ただ、これだけでは、cron開始毎に動いてしまいますので、
if(date("G") % 2 === 0 && date("i")<= 4){
のように、時間を指定してください。
php正規表現を書くほどわたしもよくわかりませ・・・(ダメじゃん。
これは2時間おきのプログラムです。

if(date("G") % 2 === 0 && date("i")<= 4){
$response = $eb->postRotation("rotation.txt");
}

こんなふうに{}でプログラムを閉じてあげれば、2時間おきにしてくれるはずです。
ifは英語と同じで、もし〜ならば、ということですね。そういう条件を直接入力して、プログラムを動かしていくものなんですね、phpって。

で、twittbotやったことあるひとならわかると思うんですが、反応語をいれていきます。
おはよう、と言ったら、おはようと返す、といったような。
それはreply_pattern.phpを開けるとコメントに書いてありますし、正規表現が使えますので、調べてがんばってください。

例えば、おはよう|おはよ|オハヨ
にすると、これら3つの語に反応しますよ、ということです。
あとは、
().*()
ですね。たとえば、(茶).*(ください)
といれると、茶かつください、のときに反応します、ということです。
語句が離れていても反応します。
こういうのをですね、例えば、

"(茶).*(ほしい|飲|くだ|欲)"=> array(
"ほうじ茶でいい?どうぞ!",
"日本人はやっぱお茶だよな〜vほい、煎茶。濃い目にいれといた",
),

こういう風にいれこんでいくんです。
わたしは一度作ったものをもう一度ちょっと改変して作っていますが、はじめから作るとなると結構大変かもしれません^^;。
あと反応語以外のものはdata.txtのほうにランダム反応としていれてあります。
例えば、「わかんねえー」みたいななんでも対応しそうな言葉にしておきます。
ランダムにでてくる(はず)なので、どれがあたるかわかりません。
もっと性能を上げていくやり方もあるのですが、それはまた後ほど・・・。

さらっと書きましたが、これ、わたし有休を使って2週間近くかけて作りました(吐血。
いまなぜうまく動いているのかもわたしにはさっぱりわかりません←。

というわけで、また今日書けたら映画評を書きます。
話題のホームズ観てきましたのでv