EasyBotter 非公式wiki

reply

最終更新:

匿名ユーザー

- view
だれでも歓迎! 編集
※wikiの編集が分からなくて、追加してほしい項目がある場合はページ下の「コメント」から誰かに頼んで下さい。

改造方法を紹介するスレにあった「単語拾い」をver.2.0で使いたい [#c1629660]

EasyBotter.php内
if(strpos($text,"{tweet}") !== FALSE && !empty($reply)){
   $tweet = preg_replace("@\.?\@[a-zA-Z0-9-_]+\s@u","",$reply->text);
   $text = str_replace("{tweet}",$tweet,$text);
}
//フッターを追加
$text .= $this->_footer;
の直前に、以下を追記する。
//■■ここから名詞拾い■■
if(strpos($text,"{ran_meishi}") !== FALSE && !empty($reply)){
//アプリケーションID
$apiKey = "***********************";
$apitweet = preg_replace("@\.?\@[a-zA-Z0-9-_]+\s@u","",$reply->text);
$apiurl = "http://jlp.yahooapis.jp/MAService/V1/parse?appid=".$apiKey."&filter=9&sentence=".$apitweet;
$apirss = file_get_contents($apiurl);
$apixml = simplexml_load_string($apirss);
//配列「meishi」を作る
$meishi = array();   
// 特定の単語、指定字数以下の名詞を弾きながら配列に名詞を追加
foreach($apixml->ma_result->word_list->word as $apiitem)
{
	//拾いたくない単語
	if ((ereg("ダタラ|モスマン|モコイ", $apiitem->surface)==False) && (mb_strlen($apiitem->surface) > 3*2)){
		$meishi[]=$apiitem->surface;
	}
}
//リプライの中に名詞がない場合の単語をセット(複数設定可)
if ($meishi[0] == ""){$meishi = array("<censored>","×××","■■■");}
//名詞をランダムに選ぶ
$ran_meishi = $meishi[array_rand($meishi)];
//名詞を変換する
$text = ereg_replace("{ran_meishi}", "$ran_meishi", $text);
}

備考 [#e06b9c91]

ぼっと倉庫がソースです。
使い方はこちらのサイトの解説をよく見ること。


自動フォロー返しした時にリプライで知らせたい [#ycc2942f]

EasyBotter.php内
//自動フォロー返し
function autoFollow(){
$response = $this->getFollowers();
$followList = array();
foreach($response as $user){
	$follow = (string)$user->following;
	if($follow == "false"){
		$followList[] = (string)$user->screen_name;
	}
}
foreach($followList as $screen_name){
	$response = $this->followUser($screen_name);
}
}
とある部分を探す。
foreach($followList as $screen_name){
$response = $this->followUser($screen_name);
}
の直後に
//■■フォローした時にリプライを送る■■
foreach($followList as $rscreen_name){
$value = array("status"=>"@{$rscreen_name} フォロー完了しました!");
$response = $this->setUpdate($value);
$result = $this->showResult($response);
$results[] = $result;
}
を入れる。
「フォロー完了しました!」は自由に変更してもOK。

鍵付きの人へ何度も話しかけてしまう場合 [#q1c3b296]

BBSより転載です。
EasyBotter.php内
//自動フォロー返し
function autoFollow(){
(略)
if($follow == "false"){
//自動フォロー返し
function autoFollow(){
(略)
if($follow == "false" && $user->protected == "false"){
と変更する。
鍵付きの人へフォロー返しを行いません。


正規表現を使った言葉返しで、言葉遊びをさせる(文字列の並びを変える。) [#x3c977be]

EasyBotter.php内
//リプライを作る
(略)
//リプライパターンと照合
(略)
for($i=1;$i <count($matches);$i++){
$p = "$".$i;
$status = str_replace($p,$matches[$i],$status);
}
を探す。
$status = str_replace($p,$matches[$i],$status);
//■■言葉遊びする■■
if(preg_match("/言葉遊び/u",$status)){
$kotoba_asobi = $this->mb_str_shuffle($matches[$i],"UTF-8");
}else{
$kotoba_asobi = $matches[$i];
}
$status = str_replace($p,$kotoba_asobi,$status);
に変更する。

EasyBotter.php内ラスト
}
?>
の直前に
function mb_str_shuffle($str,$enc){
$buff = array();
while ($len = mb_strlen($str,$enc)) {
	$buff[] = mb_substr($str,0,1,$enc);
	$str = mb_substr($str,1,$len,$enc);
}
shuffle($buff);
return implode('',$buff);
}
を追記する。

備考 [#ucd102de]

mb_str_shuffle()はどう書く?org betaソースです。

「言葉遊び」部分はリプライパターンに応じて変更して下さい。
この一例はリプライパターンで「『$1』…言葉遊びしてみたよ~♪」とリプライさせる時の例になります。
「『$1』…言葉遊びしてみたよ~♪」とリプライする時のみ、$1を言葉遊びさせます。
言葉遊び:$1が「あいうえお」だとすると、「あおういえ」「うえあおい」等とランダムに文字列を入れ替えます。


自動フォローではなく特定のリプライを貰った時のみ対象にフォロー要請&リプライする(新API対応版) [#v3f312b5]

「フォローして」「リムーブして」とリプライをした時にBOTに対象への処理を行う。
※実際は「フォローして」「リムーブして」等の簡単な言葉ではないものを推薦。「フォローして。○○○(BOTの名前)」等。
reply_pattern.php $data = array();内に
//半自動フォロー、リムーブ
"フォローして"=> array(
"[[AUTOFOLLOW]]フォローしました",
"[[AUTOFOLLOW]]フォローしたよ",
),
"リムーブして"=> array(
"[[AUTOREMOVE]]リムーブしました",
"[[AUTOREMOVE]]リムーブしたよ",
),
を追記。

EasyBotter.php内
//リプライを作る
(略)
//リプライパターンと照合
(略)
$re["status"] = "@".$reply_name." ".$status;
を探す。
$re["status"] = "@".$reply_name." ".$status;
switch(true){
//半自動フォロー
case stristr($status, "[[AUTOFOLLOW]]"):
$status = str_replace("[[AUTOFOLLOW]]","",$status);
$followreq = $this->consumer->sendRequest("http://api.twitter.com/1/friendships/create.json",array("screen_name" => $reply["user"]["screen_name"]),"POST");
$re["status"] = "@".$reply["user"]["screen_name"]." ".$status;
break;

//半自動リムーブ
case stristr($status, "[[AUTOREMOVE]]"):
$status = str_replace("[[AUTOREMOVE]]","",$status);
$removereq = $this->consumer->sendRequest("http://api.twitter.com/1/friendships/destroy.json",array("screen_name" => $reply["user"]["screen_name"]),"POST");
$re["status"] = "@".$reply["user"]["screen_name"]." ".$status;
break;

//その他
default:
$re["status"] = "@".$reply["user"]["screen_name"]." ".$status;
}
に書き換える。

備考:フォロー告知をDMにしたい場合(リムーブは出来ません。) [#b0266ba0]

switch(true){
case stristr($status, "AUTOFOLLOW"):
$statusxxx = str_replace("AUTOFOLLOW","",$status);
$followreq = $this->consumer->sendRequest("http://api.twitter.com/1/friendships/create.json",array("screen_name" => $reply["user"]["screen_name"]),"POST");
$followreq = $this->consumer->sendRequest("https://api.twitter.com/1/direct_messages/new.json",array("screen_name" => $reply["user"]["screen_name"],"text" => "$statusxxx"),"POST");
$re["status"] = "";
break;
(略)
}
if(stristr($status, "AUTOFOLLOW")){continue;}


特定のリプライ反応をリプライではなくTL発言にする [#wb35bfa8]

EasyBotter.php内
//リプライを作る
(略)
//リプライパターンと照合
(略)
$re["status"] = "@".$reply_name." ".$status;
を探す。
$re["status"] = "@".$reply_name." ".$status;
switch(true){
//TL発言
case stristr($status, "[[TLH]]"):
$status = str_replace("[[TLH]]","",$status);
$re["status"] = $status;
$rpid = (string)$reply->id;
	file_put_contents($this->_logDataFile,$rpid);
break;
//その他
default:
$re["status"] = "@".$reply_name." ".$status;
}
に書き換える。

reply_pattern.php $data = array();内
""=> array(
"[[TLH]]あれ…誰か呼んだ?",
"その言葉はわからないです",
),
と記入。
ランダムで
「[[TLH]]あれ…誰か呼んだ?」
が選ばれた時、リプライではなくTL上に「あれ…誰か呼んだ?」と発言する。

一度のリプライでリプライ回数の制限する

EasyBotter.php内
//古い順にする
$replies = array_reverse($replies_); 
if(count($replies) != 0){ 
//リプライの文章をつくる
$replyTweets = $this->makeReplyTweets($replies, $replyFile, $replyPatternFile); 
の下に
//リプライ回数の制限 ここから
$reply_max = 3;//1回のreply実行でリプライできる最大数
if(count($replyTweets) > $reply_max){//$replyTweetsが$reply_maxよりおおきかったら
	//$replyTweetsが$reply_max件になるまで配列から要素を削除
	while(count($replyTweets) > $reply_max){
	array_splice($replyTweets,array_rand($replyTweets),1);//ランダムで1件削除
	}
}
//リプライ回数の制限 ここまで 
を追加する

コメント [#fd6efe73]

  • "特定のリプライ反応をリプライではなくTL発言にする "についてなんですが、TLHとはなんでしょうか? -- みゅ子 (2010-09-16 01:23:26)
  • TL発言=TLH これに限らず分からないのならまずは検索して調べましょ -- zero (2010-09-16 21:05:38)
  • zeroさんありがとうございます。"TLH twitter"で検索したのですがいまいちよく分からず;次からはもっと検索してみます。すみませんでした。 それと「特定のリプライ反応をされる単語」は何処で設定できるのでしょうか?><; -- みゅ子 (2010-09-17 22:17:33)
  • TL上の特定の単語に反応してTL発言をする、というのは可能ですか? -- フィル (2010-10-26 19:32:23)
  • TLに反応してTL発言をするのはリプライ反応をTL発言にするの応用でできます。 -- ナナシスター (2010-11-03 18:05:32)
  • リプライに関してreply_patternにない場合にはdata.txtからランダム発言ではなく、何も返さないようにするにはどうすればよいのでしょう -- 774 (2010-11-23 23:36:19)
  • 「フォローした時にリプライを送る」で{name}を使いたいのですがうまくできません。どなたかご教授いただけませんでしょうか。自分でも調べてみたのですがわかりません。 -- りん (2010-12-20 16:41:08)
  • フォロー要請&リプライする をするとどうもエラーになるのですが・・・原因分かる方いますか? -- なな (2011-04-12 23:51:31)
  • ↑まだ分からないならBBSのTwitterBotPHP質問スレの方へ -- 通りすがり (2011-04-19 00:37:45)
  • TLHとリプライサンプルの「([^\s、。]+?)は好き?"」「"$1おいしいです"」は併用できませんか?(動きませんでした) -- なし (2011-06-18 19:01:07)
  • 「単語拾い」で、拾った発言を返す文章はdata.txtに書くのでしょうか? -- 774 (2011-07-07 00:35:47)
  • ↑reply.txt -- 名無しさん (2011-07-07 20:24:33)
  • ↑「reply_pattern.php」ではありませんか? --   (2011-07-08 01:02:17)
  • 自動フォロー返しした時にリプライで知らせたいをDMで知らせることはできるのでしょうか。 -- 名無しさん (2011-09-06 17:27:09)
  • 非公式RTに反応させることはできないでしょうか? -- 名無しさん (2011-09-10 01:30:13)
  • 過去ログ内で紹介されてましたけど、EasyBotter.phpの中でRTを検索するとそれらしきところが出てきます。あとは御自分でドウゾ -- 名無しさん (2011-09-13 20:22:51)
  • 名詞拾いで、TLの名詞を拾って、その言葉を盛り込んでTLでつぶやくというのは出来ますか? 出来るのならどこをどう改編したら良いでしょうか。 -- 名無しさん (2012-05-24 22:02:30)
  • リプライをもらったツイートに対してfavをする機能はどのように実装しますか -- 名無しさん (2012-07-02 20:27:11)
  • 特定の言葉がTL上にあるとき、favをする機能の実装はどうすればできますか -- 名無しさん (2012-07-02 20:30:28)
  • Ver2.5を新APIにしたら半自動フォロー&リムーブが出来なくなりました…コピペしただけなので、こうなった理由が分からず困ってます; -- 名無しさん (2012-10-19 23:35:08)
  • ↑Twitterがまた仕様変更したようですね。easybotterの作者さんが修正版を近々出すそうなので待ちましょう。 -- 名無しさん (2012-10-20 15:07:20)
  • 新APIにしてから、viaが自分の設定したのとAPIで2重反応されます。私だけでしょうか? -- 名無しさん (2012-11-15 16:01:40)
  • バージョン2.1.1でも『特定のリプライ反応をリプライではなくTL発言にする』機能を使いたいのですが、どうすれば使えますか? -- 七種 (2012-12-29 23:36:47)
  • 2.1.2だと上記の半自動フォローが使えないと思うのですがどう修正すればいいのでしょう…リプを返す所までは修正出来ましたがフォローを返せません… -- 名無しさん (2013-01-31 12:13:29)
  • http://badosyan3.blog84.fc2.com/blog-date-201301.html -- 名無しさん (2013-02-01 21:11:41)
  • ↑途中送信失礼しました。「自動フォローではなく特定のリプライを貰った時のみ対象にフォロー要請&リプライする(新API対応版) [#v3f312b5]」の部分は↑のサイトの方が参考になるかも…? -- 名無しさん (2013-02-01 21:12:29)
  • ↑ありがとうございます、無事フォロー出来ました! -- 名無しさん (2013-02-02 02:53:34)
  • 2.1.2で単語拾いを使うにはどうすればいいのでしょうか。エラーが出て使えません…。 -- 名無しさん (2013-02-20 03:29:33)
  • 自動フォロー返しした時にリプライで知らせたい、の通りにやるとバージョン2.1.2では動きません。どなたか分かる方いらっしゃいませんか? -- 名無しさん (2013-02-21 13:32:05)
  • 自動フォローではなく特定のリプライを貰った時のみ対象にフォロー要請&リプライする(新API対応版)↑の参考URLが見れません。どなたか方法わかる方いらっしゃいますでしょうか。 -- 名無しさん (2013-06-13 15:44:15)
  • ↑自動フォローではなく特定のリプライを貰った時のみ対象にフォロー要請&リプライする(新API対応版)の参考URLが見れないのですがどなたか参考になるページを教えていただけないでしょうか。 -- 名無しさん (2013-06-13 15:45:08)
  • 名詞拾いの件ですがリプライの単語を拾うのではなくTL上の単語を拾わせるにはどこをどう変えればいいですか? -- 名無しさん (2013-06-21 01:19:04)
  • 自動フォローではなく特定のリプライを貰った時のみ対象にフォロー要請&リプライする(新API対応版) [#v3f312b5]と、備考:フォロー告知をDMにしたい場合(リムーブは出来ません。) [#b0266ba0]の部分について直してみました。あっているという保証はできませんが試してみてください -- 名無しさん (2013-08-02 16:07:13)
  • 「自動フォローではなく特定のリプライを貰った時のみ対象にフォロー要請&リプライする(新API対応版) [#v3f312b5]」ですが「http://api.twitter.com/1/friendships/create.json」では動かないようです。「http://api.twitter.com/1.1/friendships/create.json」に修正したら動きました。 -- 名無しさん (2013-08-18 10:22:38)
  • 上のコメントの方へ。ここはEBの古いバージョンの記述なので、新APIはvなしのものからv1になったときの新APIのことだと思いますよ。APIv1.1のはver.2.1版に書いたほうがよかったかもしれません。 -- 名無しさん (2013-08-18 23:58:15)
  • いつの間にか function followUser($id) でエラー161に成ってる状態が続いていまして、フォロー返しが出来なく成ってしまいました。手動では出来ます。何が問題なのか分かりませんでしょうか? -- 名無しさん (2015-03-22 19:56:28)
名前:
コメント:

タグ:

+ タグ編集
  • タグ:

このサイトはreCAPTCHAによって保護されており、Googleの プライバシーポリシー利用規約 が適用されます。

目安箱バナー