スペースが入っても反応できるソース
あいずさんに非常に参考になるソースを貼っていただいたので、メモします
else if(stristr($com, "つ")){
if(preg_match("/煙草|たばこ|タバコ/u",$com) > 0){
$key = array_rand($tabako);
$post = $tabako[$key];
$return =$reply_name." ".$post;
}
}
このソースで
・「煙草、たばこ、タバコ」など表記を変えても認識するようにしたい
・「つ煙草 どうぞ」など、スペースが入っても機能するように。
・「つ煙草」だけでも機能するようにしたい
ということができるそうです。
ということは…おかげでソースが整理できそうです!
今までひらがな、カタカナ、半角カタカナで分けていたのを、
これでかなりすっきりさせることができそう!
あいずさん、本当にありがとうございます!
追記
blackcatさんがコメント欄に「気をつけないといけない例」を書いてくださっています!
たばこをあげる以外の時、「煙草は体に悪いから気をつけた方が良いよ」などというようなリプライをしてもたばこをあげた反応が返ってくるそうです。
その場合を考慮した対処法が書かれているので、そちらもぜひ参考にしてくださいねー!
blackcatさんありがとうございました!
cronがグレました
新年早々cronがグレました。
私はなんとかcronを見つけることができ、前よりも返事ができるようになりました。
たまたま見つけることができたので、ラッキーとしか言いようがありません。
私がどのcronを使っているかご質問なさるのはご遠慮くださいませ。
本当はここ使ってるよ!と言いたいのですが、今回のようになっては困りますので…w
応援しかできないことが何より悔しい。
書けよ、ケチくせーな!と思うかもしれませんが…ごめんなさい。
Test OAuth update.が投稿できないあなたへ
2010年6月にBasic Authは廃止予定…なにそれこわい
つーことで遅れながらも、少しだけOAuthに手をつけてみた。
http://wolf.silk.to/labo/oauth.html
を見ればほとんどの人がすぐTest OAuth update.を投稿できます。
だがしかし、自分はほとんど勢に入んなかった。
どこで引っかかったか紹介します。
まずoauth_test.phpで引っかかるという。
もう初期段階で引っかかった。
実行したら
上の方に
Warning: array_merge() [function.array-merge]: Argument #2 is not an array in (省略)OAuth.php on line 249
が出て、下の方には
/account/verify_credentials.xml
Could not authenticate you.
が出た。
まずここで引っかかった人はOAuth.phpにある
if ($token)
$defaults['oauth_token'] = $token->key;$parameters = array_merge($defaults, $parameters);
return new OAuthRequest($http_method, $http_url, $parameters);
の
$parameters = array_merge($defaults, $parameters);
に
$parameters = array_merge($defaults,(array)$parameters);
というように(array)を加えてください。
するとあら不思議。
上のエラーがみごと消える。
次は下のエラーを消す。
oauth_test.phpにある
$content = $to->OAuthRequest('https://twitter.com/account/verify_credentials.xml', array(), 'GET');
のGETの位置を変える。
$content = $to->OAuthRequest('https://twitter.com/account/verify_credentials.xml', 'GET', array());
こういうふうに。
そして、実行するとあら不思議!
下のエラーがみごと個人情報に!
実際にPHP+OAuthでTwitterにPOSTするのプログラムを実行するときも
$req = $to->OAuthRequest("https://twitter.com/statuses/update.xml",array("status"=>"Test OAuth update."),"POST");
を
$req = $to->OAuthRequest("https://twitter.com/statuses/update.xml","POST",array("status"=>"Test OAuth update."));
に直してあげてください。
少しでもお役にたてれば嬉しいです。
追記
[2009/12/16] twitterOAuth.phpのことでご指摘があったので、修正しました。この説明ではバージョン0.1.1を使っています。
紹介していただいているサイトさんでの指摘というのは、バージョン0.1.1以外(0.2.0-betaなど)を使ってしまったためにエラーが出ていると思われます。
「twitterOAuth.php」であり、「twitteroauth.php」ではありません。ご注意ください。
コピペですいません。
みなさん、バージョンに注意ですよ!
曜日のよって返答変更
if( !preg_match ( "/RT/", $var ) ){ $name = $XML->status[$i]->user->name; $id = $XML->status[$i]->id; $now_d = $XML->status[$i]->created_at; ←リプライされた日時 $message = serif($reply_name,$name,$com,$now_d); tweet($message ,$username,$password,$id); }
function serif($reply_name,$name,$com,$now_d){ $yasumu=array("そうですね…おやすみなのでまったりさせていただきます。", "ふぅ…そうですね。では、そうすることにします。"); $yasumanai=array("今日は平日ですよ?まぁ、俺は暇なんで変わらないですが。", "休むと杉下さんに怒られてしまいます><"); else if(stristr($com, "休め")){ if(stristr($now_d, "sun")){ $key = array_rand($yasumu); $post = $yasumu[$key]; $return = $reply_name." ".$post;} else if(stristr($now_d, "sat")){ $key = array_rand($yasumu); $post = $yasumu[$key]; $return = $reply_name." ".$post;} else{ $key = array_rand($yasumanai); $post = $yasumanai[$key]; $return = $reply_name." ".$post;} }
var_dump($XML);とvar_dump($now_d);
をして見比べてもいいと思います。
preg_matchを使えばもっとスマートになります。
ちょっと自由
$tea1=array("ダージリンストレートティー",
"ニルギリ",
"アッサムミルクティー",
"ウヴァミルクティー");
$key1 = array_rand($tea1);
$post1 = $tea1[$key1];
$tea2=array("紅茶ですか…杉下さんのでいいか…はい つ[".$post1."]",
"今、コーヒーしかありません。すいません。",
"了解です。つ[".$post1."]");
else if(stristr($com, "ください")) {
else if(stristr($com, "紅茶")){
$key2 = array_rand($tea2);
$post2 = $tea2[$key2];
$return =$reply_name." ".$post2;}
}
俺得神戸君botのソースの1部です。
もっといい方法があるのかもしれませんが、
こんな感じで紅茶をあげる以外のことをできるようにしました。
前からの悩みなんですが、定期発言がランダムにならず毎日同じ台詞を言ってしまうんです。
どうにか直したいんですが…いい方法があれば是非とも教えてください。