[
板情報
|
カテゴリランキング
]
したらばTOP
■掲示板に戻る■
全部
1-100
最新50
| |
Botの改造方法を紹介するスレ
1
:
pha
:2009/12/03(木) 20:47:24
各所に細かい改造方法をかいてくれている人がいるので、そういうURLを集めたいです。
phaのスクリプトに関するものじゃなくてもいいです。どんなものでも参考になるので。
2
:
pha
:2009/12/03(木) 20:48:18
呟きbotメモ phaさんのreply_random.phpにおうむ返しを追加するスクリプト
http://mukurobot.blog101.fc2.com/blog-entry-3.html
「「hogehoge」って言って」と話しかけると「hogehoge」って返してくれるサンプル
3
:
pha
: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ページから投稿内容の追加変更削除を行うプログラム
です。
8
:
OAuth上での変換
:2010/02/08(月) 04:48:06
//id、名前を変換する
//タイムラインからランダムに最近発言した人のデータを取る
if(preg_match("@{timeline_id}@",$message) === 1){
$timeline_id_result = $to->OAuthRequest("
http://twitter.com/statuses/user_timeline.xml?count=20",array(),"GET");
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);
}
if(preg_match("@{timeline_name}@",$message) === 1){
$timeline_name_result = $to->OAuthRequest("
http://twitter.com/statuses/user_timeline.xml?count=20",array(),"GET");
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);
}
9
:
名無しさん
:2010/02/08(月) 04:50:12
って続き書こうと思ったらNGワードが入ってるようで書き込めないw
同様にfriends.xmlとfollowers.xml呼び出してみてる…んだけども
これで出来てるんだけど、どうかな…重いかな?
10
:
inoue_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
(省略可)
:
※書き込む際の注意事項は
こちら
※画像アップローダーは
こちら
(画像を表示できるのは「画像リンクのサムネイル表示」がオンの掲示板に限ります)
スマートフォン版
掲示板管理者へ連絡
無料レンタル掲示板