G-chan Square

じーちゃん/へたっぴの綴る、日々のつれづれとか。
twitterのまとめとゲームネタが中心。2015年からロードバイク/ミニベロ始めました。

[PHP] PHPでIRCBOT作ろう

こんばんわ、じーちゃんです。

今回はPHPネタです。

今から数年前……そう4年くらい前かな? 
じーちゃんにとって、IRCのBOT作るときは言語環境はperlしか選択の余地がありませんでした。
なので、perlでサーバー常駐型のBOTとか作ったんですが、いまではLimechat2がJScriptを解釈してくれるのでこれがすごい楽チン! ってことで、BOTを作る環境をperl => JScriptに変更。

まぁ、perlも悪くはないけど……なんか「昔の言語」というイメージが払拭できないw
使い勝手も今となってはイマイチ……っていうか、phpがラク過ぎるんだよねぇ。やはり、配列とハッシュを意識せず使えるってのは本当にラクです。

ま、じーちゃんもWEBサーバーで動くアプリが軒並みほぼ全て「cgi」と呼ばれていた頃は、perlでごりごりいろいろ作ったりしましたが……もういまはperlはshellスクリプトの代わりぐらいしか使ってないですなw


で、JScript on Limechat2は極めて優秀なのですが、いくつか問題点があります。

1)ソースファイルが一つのみ
 include とか require とかってのができません。
 もちろん、Lime2自身にローカルファイルを読む機能があって、JScriptソースファイルをローカルファイルとして読み込んで、なんかの変数にまるまる中身ツッコんで必殺 "eval" をかましてやる! ……ってことは当然できます。
 けど、それをやって外部ファイルの中でエラーが発生すると、"eval" を評価した行がエラーの発生行として扱われるので、どこでエラーが発生したのかわかりづらいことになります。
 じーちゃんの書いたBOT……単一ファイル6千行突破してるのがあるので、いい加減ファイル分割したい……。

2)ClientBOTなので、動かすには動かす人が設定しないとならない
 これも当然の話。
 JScript on Limechat2のBOTは、クライアントで実行されるので、誰か動かす人が設定してやらないとなりません。
 てか、そのためLime2以外のBOTを使っている人は使えないw

さくっと軽くBOT作るには"JScript on Limechat2"は非常に優秀ですが、デカいのがっつり作るにはビミョーに都合が悪い。


というわけで、じーちゃん大好きPHPでIRCBOT作れるライブラリがないかどうか久しぶりに探してみたところ……おお、あった!w

php-IRC
Net_SmartIRC

前者の"php-IRC"は、ダウンロードしてreadmeまで見たんですが面倒くさそうだったんでそれっきりw
後者の"Net_SmartIRC"は、PEAR::Net_SmartIRCではじめるIRC Bot入門というのがあって、サンプルも載っています。

pear install Net_SmartIRC

だけで、すんなり入って、かつサンプルがさくっとそのまま動作したのでこちら採用w

久しぶりにサーバー常駐型BOTを作る熱が再燃してきましたw
やっぱり、PHPはいいね♪

コメントする