>   TASYULABS

Net_SmartIRCを利用したPHPのIRCBOT

SmartIRCライブラリを利用してPHPでIRCBOTをつくってみた.
現在はIRC.TASYU.COMの#lobbyで動作中です.

現在の仕様
-URLを検出してURLのタイトルを取得・表示
-ローカルユーザーにオペレータ権限を付与
-Botの終了コマンド

検出部分

#URL検出
正規表現を利用してURLにマッチすると次の動作へ $irc->registerActionhandler(SMARTIRC_TYPE_CHANNEL, '^https?:\/\/([-_.!~*\'()a-zA-Z0-9;\/?:\@&=+\$,%#]+)$', $bot, 'url');
#bot終了
quitと入力されたら次の処理へ $irc->registerActionhandler(SMARTIRC_TYPE_CHANNEL, '^quit$', $bot, 'quit');
#なると付与
チャンネルに誰かがきたら次の処理へ $irc->registerActionhandler(SMARTIRC_TYPE_JOIN, '.*', $bot, 'naruto');

処理部分

#URL検出
リンククッションの時と同じ方法でHTMLを取得後TITLE部抽出
function url(&$irc,&$data){
$url = $data->message;
$urldata = file_get_contents($url);
preg_match_all('@(.*?)@i', $urldata, $title);
$irc->message(SMARTIRC_TYPE_CHANNEL, $data->channel,mb_convert_encoding($title[2][0],"SJIS", "auto"));
}

#なると付与
ニックネームが自分だったら処理をしない
HOSTを参照してローカルのユーザーだったらオペレーション権限を付与
それ以外の場合は「ごきげんよう」と挨拶するw
function naruto(&$irc,&$data){
if ($data->nick == $irc->_nick)
return;

if(preg_match('/^192\.168\.0\.[0-9]{1,3}$/',$data->host))
$irc->op($data->channel,$data->nick);

$irc->message(SMARTIRC_TYPE_CHANNEL, $data->channel,'ごきげんよう '.$data->nick);
}

#bot終了
ごきげんようと挨拶を残して動作を終了する.
これも誤認識しないようにローカルのユーザーが「quit」と入力した場合だけに限定
function quit(&$irc){
if(preg_match('/^192\.168\.0\.[0-9]{1,3}$/',$data->host))
$irc->quit('ごきげんよう.');
}

参考
Docs For Class Net_SmartIRC_messagehandler

ページのトップへ

意見や質問は掲示板をご利用ください.

labs.tasyu.com
リンクについて
Copyright © TASYU All rights reserved.