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、ダウンロードしておいてくださいね!