したらばTOP ■掲示板に戻る■ 全部 1-100 最新50 | |

Botの改造方法を紹介するスレ

1pha:2009/12/03(木) 20:47:24
各所に細かい改造方法をかいてくれている人がいるので、そういうURLを集めたいです。
phaのスクリプトに関するものじゃなくてもいいです。どんなものでも参考になるので。

2pha:2009/12/03(木) 20:48:18
呟きbotメモ  phaさんのreply_random.phpにおうむ返しを追加するスクリプト
http://mukurobot.blog101.fc2.com/blog-entry-3.html

「「hogehoge」って言って」と話しかけると「hogehoge」って返してくれるサンプル

3pha:2009/12/03(木) 20:49:41
ぼっと倉庫:phaさんのに単語拾いを実装する場合のメモ。
http://blog.livedoor.jp/bot_1go/archives/1634282.html

相手の発言から名詞を抜き出して発言に利用するサンプル。
Yahoo APIの形態素解析を使ってるのでYahoo APIの登録(無料)が必要。

4西っち:2009/12/04(金) 19:44:39
時間帯によって読込先のファイル変更する改造です。

記事にはしていないのでURLでなくてすみません…

//$file = "post_random.txt"; //発言を書き込んだファイルの名前(変更可能)
プログラム内に上の一文があるので消すか、コメントアウトする

--
$jikan = idate("H");

switch ($jikan) {
case 0:
case 23:
case 22:
case 21:
$file = "時間帯が22時から0時の時に発言するファイル名.txt";
break;
case 16:
$file = "時間が16時の時に発言するファイル名.txt";
break;
case 18:
$file = "時間が18時の時に発言するファイル名.txt";
break;
default:
$file = "上記時間帯以外に発言するファイル名.txt";
}

--
代わりに上記の条件判定分を入れるとランダムpostを時間帯ごとに違うファイルから読み込めます。
拙いですがもしcron何個も走らせることができないけど、夜と昼で発言内容変えたい人がいましたら使ってみてください。

5うら:2010/01/15(金) 15:43:14
連続投稿回避関数つくった

// $messageを、投稿ログの各行と比較。違う文を選ぶまでループ。違う文を返します。
// 空のファイルtwit_log.txtをサーバにアップロードし、パーミッションを666に設定してください。
function rento_check(){
 $rento_limit = 10;  // n個前まで投稿を記録し、二重投稿を回避する
 //以前の投稿ログを読み込み
 $Posttweets = file_get_contents('twit_log.txt');  // 読み込み
 $p_tw = explode("\n", $Posttweets);  // 配列に格納
 //発言リストを読み込む
 $tweets = file_get_contents('RandomPost.txt');  //ランダム発言ファイル
 $tweets = trim($tweets);
 $tweets = preg_replace("@\n+@","\n",$tweets);
 $tw = explode("\n", $tweets);
 $message = $tw[array_rand($tw)];  //発言をランダムに一つ選ぶ
 
 while(true) {
   if(in_array($message, $p_tw)){  //発言にあるか?無ければ抜ける
     $message = $tw[array_rand($tw)];  //発言をランダムに一つ選ぶ
   }
   else { break; }  //無ければ抜ける
 }
 //投稿ログをローテート
 $p_tw2[0] = $message;
 for( $i = 1; $i < $rento_limit; $i++ ){  //1から$rento_limit直前まで
   if($p_tw[$i-1]) {
     $p_tw2[$i] = $p_tw[$i-1];  //古いのを送る。例:$p_tw2[1] = $p_tw[0]
   } else { break; }  //投稿が少ない時は抜ける
 }
 $p_tw_output = join("\n",$p_tw2);  //配列結合
 $fp = fopen('twit_log.txt', 'w');  //ファイルオープン
 flock($fp, LOCK_EX);  // ファイルのロック(排他制御)
 fwrite($fp,$p_tw_output);  //ファイル書き込み
 fclose($fp);  //ファイルクローズ
 
 return $message;  //違う文を戻り値として返す
}

6うら:2010/01/15(金) 15:55:17
>>5を post_random.phpの <? と ?> の間の適当なところに放り込め。最後がいい?
全角空白入ってるから、コピペ注意。
あとは47行目〜54行目の

//発言リストを読み込む
//$tweets = file_get_contents($file);
//$tweets = trim($tweets);
//$tweets = preg_replace("@\n+@","\n",$tweets);
//$tw = explode("\n", $tweets);
//発言をランダムに一つ選ぶ
//$message = $tw[array_rand($tw)];

のようにコメント化して、

$message = rento_check();  //以前と重ならない発言を選ぶ

を直後に入れろ。ファイル名注意な。
うらはphpのプロじゃないので、もっと良いやり方があると思う。
コメント入れたから、各自考えろ。うらのサーバでは動いた。

7少年ありす:2010/01/30(土) 16:17:47
使わせていただいているBotの改造内容をBlogに記載しましたのでこちらにリンクを貼らせていただきます。

http://shonenalice.seesaa.net/article/139776170.html

改造内容は
■擬似CRON設置の時の修正
■自動的に読み込ませる改造
■間隔を置いてツイートさせる改造
■Webページから投稿内容の追加変更削除を行うプログラム
です。

8OAuth上での変換:2010/02/08(月) 04:48:06
&nbsp; &nbsp; &nbsp; &nbsp; //id、名前を変換する
&nbsp; &nbsp; &nbsp; &nbsp; //タイムラインからランダムに最近発言した人のデータを取る
&nbsp; &nbsp; &nbsp; &nbsp; if(preg_match("@{timeline_id}@",$message) === 1){
$timeline_id_result = $to->OAuthRequest("http://twitter.com/statuses/user_timeline.xml?count=20&quot;,array(),&quot;GET&quot;);
preg_match_all("/.*?<screen_name>(.+?)<\/screen_name>/is",$timeline_id_result,$timeline_id_kekka,PREG_SET_ORDER);
$timeline_id_kekkard_keys = array_rand($timeline_id_kekka);
$message = preg_replace("@{timeline_id}@u",$timeline_id_kekka[$timeline_id_kekkard_keys][1],$message);
&nbsp; &nbsp; &nbsp; &nbsp; }
&nbsp; &nbsp; &nbsp; &nbsp; if(preg_match("@{timeline_name}@",$message) === 1){
$timeline_name_result = $to->OAuthRequest("http://twitter.com/statuses/user_timeline.xml?count=20&quot;,array(),&quot;GET&quot;);
preg_match_all("/.*?<name>(.+?)<\/name>/is",$timeline_name_result,$timeline_name_kekka,PREG_SET_ORDER);
$timeline_name_kekkard_keys = array_rand($timeline_name_kekka);
$message = preg_replace("@{timeline_name}@u",$timeline_name_kekka[$timeline_name_kekkard_keys][1],$message);
&nbsp; &nbsp; &nbsp; &nbsp; }

9名無しさん:2010/02/08(月) 04:50:12
って続き書こうと思ったらNGワードが入ってるようで書き込めないw
同様にfriends.xmlとfollowers.xml呼び出してみてる&hellip;んだけども
これで出来てるんだけど、どうかな&hellip;重いかな?

10inoue_ben:2010/03/01(月) 12:20:02
既出だったらごめんなさい。

@bot_name 停止「○○の理由で機能を停止します」
@bot_name 開始「お待たせしました。再開します」

などのコマンド送信で、BOTの停止と開始ができるスクリプトを、EasyBotter1.42とEasyBotter2.04beta用に書きましたが、
どなたかにテストとデバグを丸投げしたいと思います。
(私はEasyBotterユーザーではないので...)

もしやっていただけるご親切な方がいらっしゃいましたら、宜しくお願いします。

詳しくは↓とソースのコメントをご覧下さい。
http://twbot.blogspot.com/2010/03/20100227-28bot-phpbotphaeasybotter1.html

@inoue_ben

11うら:2010/03/10(水) 10:29:34
ええと、ageで。

「簡単じゃない twitter bot」 の作り方メモ 様に Botの緊急停止についてスクリプトと設置方法がありましたので、紹介します。
できればもう、デフォで組み込んで欲しいです > pha 氏

> コマンド送信でBOTの停止・開始を(災害や緊急時のBOT停止)
> http://twbot.blogspot.com/2010/03/20100227-28bot-phpbotphaeasybotter1.html
> EasyBotter用 停止コマンドの設置方法です。
> http://twbot.blogspot.com/2010/03/botbot-easybotter2.html

12名無しさん:2010/04/11(日) 22:31:58
質問です。

http://wiki.livedoor.jp/easybotter_wiki/にある
ランダムPOSTで発言を重複させない様にするを参考にして
//■■ランダムPOST・重複チェック■■の機能を追加してみたんですけど、
二重投稿の回避機能が上手く機能してないみたいで、ランダムPOSTが重複してしまいます。

//■■ランダムPOST・重複チェック■■以降の部分は

//発言を作る
function makeTweet($file, $number = FALSE){

の前にコピペで追記しましたし
$rento_limit = 10; // n個前まで投稿を記録し、二重投稿を回避する
の10の数字を100に変更した以外は書き換えてません。

//ランダムにポスト
function postRandom($datafile = "data.txt"){
$status = $this->makeTweet($datafile);

の一番下の行もちゃんと
$status = $this->rento_check($datafile);
に書き換えてますし、
サーバーにアップしたtwit_log.txtにはちゃんとbotの発言も記録されてます。

特に間違った事をしてるつもりは無いのですが、一体何がいけないのでしょうか?

13名無しさん:2010/04/12(月) 00:23:36
>>12
てか100件も台詞あるの?

14名無しさん:2010/04/23(金) 09:15:36
>>7
こちらで紹介されている
■間隔を置いてツイートさせる改造
というのは
最新のEasyBotter2.04betaでも
動作させることはできるのでしょうか?

EasyBotter.phpに記事通り手を加えて
アプロしてみましたが
cronの間隔でツイートしてしまいました…

15うら:2010/04/23(金) 12:37:22
自動フォロー返しですが、
鍵つきの相手からフォローを受けた時、相手がフォローを許可しない限り、
延々とフォロー返しをし続けてしまいます。
というわけで、そんな状態を回避するための改造です。

EasyBotter2.0
http://jbbs.livedoor.jp/bbs/read.cgi/internet/6629/1265625817/519

16うら:2010/04/23(金) 12:47:46
>>14
できます。

ま、改造なのできちんと理解した上でやってくださいね。
あと、こちらのスレッドは紹介スレなので、質問はスレ違いですかね。

17名無しさん:2010/06/18(金) 12:05:26
EasyBotter2.0に特定キーワードを含むリプライを受け取った場合
自動でフォローまたはリムーブを行いリプライを返す改造をしましたので、その方法を書いてみました。

改造ソースを外部サイトに貼り付けましたので、URLの上から順にご覧ください。
ご自身のbotへ組み込む、EasyBotter 非公式wikiへの転載はご自由にどうぞ。
(これから配布されるEasyBotterそのものに組み込んでもらってもかまいません。)
ただし、このソースが必ず動く保証はできません。テストはしてください。
もっといい方法や間違いがありましたら、教えていただけると幸いです。

ttp://paste.pocoo.org/show/CRlqoeeMLwSdZPuEteAY/

ttp://paste.pocoo.org/show/Os13ybmGHOKFSpKodzD0/

ttp://paste.pocoo.org/show/rCjoqcO74IIq7T5R6Xgy/

ttp://paste.pocoo.org/show/5TLWwMg4gwCjzYpeInKF/

ttp://paste.pocoo.org/show/dY6VDKXQzYZg4mQcL3g4/

18名無しさん:2010/06/18(金) 15:37:47
>>17
if(empty($status) || $status == "[[follow]]"){
if(empty($status) || $status == "[[unfollow]]"){
のempty($status) || って必要あるんでしょうか?
回ってくることはないと思いますが一応・・・

19名無しさん:2010/06/27(日) 15:37:19
広告スレがかなり多くなったので整理・誘導age

20名無しさん:2010/07/10(土) 12:57:54
広告スレがすごく多くなったので整理・誘導age

21名無しさん:2010/09/23(木) 17:45:10
age

22名無しさん:2010/09/25(土) 15:09:41
整理age


新着レスの表示


名前: E-mail(省略可)

※書き込む際の注意事項はこちら

※画像アップローダーはこちら

(画像を表示できるのは「画像リンクのサムネイル表示」がオンの掲示板に限ります)

掲示板管理者へ連絡 無料レンタル掲示板