Twitterbot作り 〜定期的にポストするソースを作ろう2〜

メッセージの設定です。
定期的にポストをする時間と台詞設定までです。

超初心者の銀がbotを作れた - 銀さんのbot 〜不完全〜で紹介した
「キャラクタ系Twitterbotをつくってみた初心者向けまとめ そのいち 」
を見ながら、私の記事も見ていただくと良いかな〜と思います。
元記事からのコピペ多々あります。


メッセージの設定

< ?php

$mes['rand'] = array("台詞1" , "台詞2" , "台詞3" , "台詞4" ); //通常のランダムpost
$mes['morning'] = array("台詞1" , "台詞2" , "台詞3" , "台詞4" ); //起床
$mes['night'] = array("台詞1" , "台詞2" , "台詞3" , "台詞4" ); //就寝前

?>

台詞1や台詞2とかには好きな言葉、言わせたい言葉を入れてください。
もっと細かく時間帯別に発言を変えたい時はこんな風に。

< ?php

$mes['rand'] = array("台詞1" , "台詞2" , "台詞3" , "台詞4" ); //通常のランダムpost
$mes['morning'] = array("台詞1" , "台詞2" , "台詞3" , "台詞4" ); //起床
$mes['day'] = array("台詞1" , "台詞2" , "台詞3" , "台詞4" ); //午前中
$mes['lunch'] = array("台詞1" , "台詞2" , "台詞3" , "台詞4" ); //昼時
$mes['noon'] = array("台詞1" , "台詞2" , "台詞3" , "台詞4" ); //午後
$mes['evening'] = array("台詞1" , "台詞2" , "台詞3" , "台詞4" ); //夜
$mes['night'] = array("台詞1" , "台詞2" , "台詞3" , "台詞4" ); //就寝前

?>

ここでは起床、就寝、通常ランダムだけで行きます。

時間判定の

$now_g = date('G');
$now_i = date('i');
if (preg_match("/^[1-6]{0,1}$/",$now_g)){
$now_g = 'sleep';
};
(0時におやすみ、7時におはようするため1時から6時の間眠らせます。)

を上で作ったやつに入れて…

< ?php

$mes['rand'] = array("台詞1" , "台詞2" , "台詞3" , "台詞4" );
$mes['morning'] = array("台詞1" , "台詞2" , "台詞3" , "台詞4" );
$mes['night'] = array("台詞1" , "台詞2" , "台詞3" , "台詞4" );


$now_g = date('G');
$now_i = date('i');
if (preg_match("/^[1-6]{0,1}$/",$now_g)){
$now_g = 'sleep';
};


?>//時間判定まで入れたソース

こうなります。
ここまでよろしいでしょうか?


で、いよいよ時間通りにポストする設定プログラムに来ました。

switch(true){
case $now_g == 'sleep' : //寝ている時間帯だったら空の配列を指定
$plist = array();
break;
case ($now_g == '0')&&($now_i >= '30') : //0時台かつ30分以降だったらおやすみメッセージの配列を指定
$plist = $mes['night'];
break;
case ($now_g == '7')&&($now_i <= '30') : //7時台かつ30分以前だったらおやすみメッセージの配列を指定
$plist = $mes['morning'];
break;
default : //それ以外の場合はランダムメッセージ配列を指定
$plist = $mes['rand'];
break;
};

説明がコメントアウトされているので、ここは良いかな…?
細かく時間分けるときの例↓

case ($now_g == '8') or ($now_g == '9') or ($now_g == '10') or ($now_g == '11') :
$plist = $mes['day'];
break;

んで、時間判定まで入れたソースに時間通りにポストする設定プログラムを入れる。

< ?php


$mes['rand'] = array("台詞1" , "台詞2" , "台詞3" , "台詞4" );
$mes['morning'] = array("台詞1" , "台詞2" , "台詞3" , "台詞4" );
$mes['night'] = array("台詞1" , "台詞2" , "台詞3" , "台詞4" );


$now_g = date('G');
$now_i = date('i');
if (preg_match("/^[1-6]{0,1}$/",$now_g)){
$now_g = 'sleep';
};


switch(true){
case $now_g == 'sleep' :
$plist = array();
break;
case ($now_g == '0')&&($now_i >= '30') :
$plist = $mes['night'];
break;
case ($now_g == '7')&&($now_i <= '30') :
$plist = $mes['morning'];
break;
default :
$plist = $mes['rand'];
break;
};


?>

あとは、投稿するメッセージを決定するソース

if(! empty($plist)){ //演算子「!」は否定なので、「$plistが空配列じゃなかったら」という意味ですよ
$key = array_rand($plist);
$post = $plist[$key];
}

を加えて、定期的に発言させる台詞を選ぶところまで完成!
以下、すべて加えたソース。

< ?php


$mes['rand'] = array("台詞1" , "台詞2" , "台詞3" , "台詞4" );
$mes['morning'] = array("台詞1" , "台詞2" , "台詞3" , "台詞4" );
$mes['night'] = array("台詞1" , "台詞2" , "台詞3" , "台詞4" );


$now_g = date('G');
$now_i = date('i');
if (preg_match("/^[1-6]{0,1}$/",$now_g)){
$now_g = 'sleep';
};


switch(true){
case $now_g == 'sleep' :
$plist = array();
break;
case ($now_g == '0')&&($now_i >= '30') :
$plist = $mes['night'];
break;
case ($now_g == '7')&&($now_i <= '30') :
$plist = $mes['morning'];
break;
default :
$plist = $mes['rand'];
break;
};


if(! empty($plist)){
$key = array_rand($plist);
$post = $plist[$key];
}

?>

ここまでで一応ソースができましたが、まだ投稿できんとですよ。
次はhttp://labs.transrain.net/products/services_twitter/です。
フルパスがわかるソースも使いますので!
services_twitter、ダウンロードしておいてくださいね!