したらばTOP ■掲示板に戻る■ 全部 1-100 最新50 | |
レス数が900を超えています。1000を超えると投稿できなくなるよ。

TwitterBotPHP質問スレ

617名無しさん:2011/01/15(土) 14:17:18
特定の単語をリプされたとき、人格が変わるようなbotを考えています。
1単語を言われたときに分岐
2発言したユーザーIDを記録(同じなら上書き)
3ユーザーIDが記録されている人に対しては特定のリプライファイル
4更に特定の単語を言われたら終了(ユーザーIDを削除)
という流れで考えた為、以下のようにしたのですが巧く動きません
(具体的には同時に複数の人が記録されていると巧く分岐しない、
 一人ではなく全部の記録を削除してしまう時があるなど)
そもそも非推奨の関数を使っているせいもあると思うのですが、他に方法がありましたらご教授いただけませんでしょうか?

※初心者過ぎて非常に馬鹿な書き方をしている気がしますが……

if(preg_match("/(単語|単語)/",$reply->text, $matches) === 1){
$userName = (string)$reply->user->screen_name;

$fs = fopen('ファイル.txt','r');
while(!feof($fs)){
$str = fgets($fs);
$items = explode("\t",$str);//開いたデータを配列に
$name = trim($items[0]);
if (trim($name) != ''){
if (preg_match('@'.$name.'@',$userName)){
$data = file('ファイル.txt');
$data = ereg_replace($userName, $userName, $data);
file_put_contents( 'ファイル.txt', implode('\n', $data) );
}}else{
//ファイルに書き込み
$fp = fopen('ファイル.txt','a');
flock($fp,LOCK_EX);
fputs($fp,$userName."\r\n");
fclose($fp);
}
}
}

//終了
if(preg_match("/(単語)/",$reply->text, $matches) === 1){
$userName = (string)$reply->user->screen_name;

$data = file('ファイル.txt');
$data = ereg_replace($userName, "", $data);
file_put_contents( 'ファイル.txt', implode('\n', $data) );

}

//分岐対応

$fs = fopen('ファイル.txt','r');
while(!feof($fs)){
$str = fgets($fs);
$items = explode("\t",$str);//開いたデータを配列に
$name = trim($items[0]);

if (trim($name) != ''){
$userName = (string)$reply->user->screen_name;
if (preg_match('@'.$name.'@',$userName)){
$replyPatternFile = "reply_patternX.php";//reply_patternX.phpを適用する
$this->_replyPatternData[$replyPatternFile] = $this->readPatternFile($replyPatternFile);
}
}
}


新着レスの表示


名前: E-mail(省略可)

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

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

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

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