「replyTimelineChangeByUser」の編集履歴(バックアップ)一覧はこちら
「replyTimelineChangeByUser」(2010/08/05 (木) 04:13:48) の最新版変更点
追加された行は緑色になります。
削除された行は赤色になります。
//php
//通常のフォローユーザ、特定のユーザ、Bot、ごとにタイムライン反応用パターンファイルを変えるサンプルです。
//Bot宛に決まった台詞で話しかけることで特定のユーザリストに追加されます。
//タイムライン反応を作成するときに、特定のユーザリストを見て、反応ファイルを変更します。
//動作保証はしません
//EasyBotter 本体
//====================
//function makeReplyTweets
//冒頭($replyTweets = array(); のあとあたり)に以下の2行を追加
$aryAdduser = array();
$aryDeluser = array();
//「if(empty($status) || $status == "[[END]]"){」の前に以下を追加
//タイムライン反応するユーザリストに追加
if (stristr($status, "[[REPTL]]")) {
$user = (string)$reply->user->screen_name;
$aryAdduser[] = $user;
$status = str_replace("[[REPTL]]", "", $status);
}
//タイムライン反応するユーザリストから削除
if (stristr($status, "[[NOREPTL]]")) {
$aryDeluser[] = (string)$reply->user->screen_name;
$status = str_replace("[[NOREPTL]]", "", $status);
}
//「return $replyTweets;」の前に以下を追加
//--------------------
//タイムライン反応ユーザのファイルへの追加と削除
$userfname = "replyTLusers.txt";
if (count($aryAdduser) > 0 || count($aryDeluser) > 0) {
if (file_exists($userfname) == false) {
touch ($userfname);
chmod($userfname, 606);
}
$buf = file($userfname);
$fp = fopen($userfname, "a+");
$users = array();
foreach($buf as $u) {
$u = trim($u);
array_push($users, $u);
}
flock($fp, LOCK_EX);
//追加
$users = array_merge($users, $aryAdduser);
$users = array_unique($users);
//削除
foreach ($aryDeluser as $u) {
for ($i = 0; i < count($users); $i++) {
if (strcmp($users[$i], $u) == 0) {
unset($users[$i]);
break;
}
}
}
//ファイルへの書き込み
ftruncate($fp, 0);
foreach ($users as $u) {
fputs($fp, $u."\n");
}
fclose($fp);
}
//--------------------
//====================
//makeReplyTimelineTweets
//「$replyTweets = array();」の前に以下を追加する
$org_repfile = $replyPatternFile; //デフォルトのファイル名を保管
//「//リプライパターンと照合」の前に以下を追加する
//ユーザリストを読み込む。
$fname = "replyTLusers.txt";
$users = array();
if (file_exists($fname)) {
$tmp = file($fname);
foreach($tmp as $u) {
$users[] = trim($u);
}
}
//■■特定の人には別パターン■■
$userName = (string)$tweet->user->screen_name;
switch(true){
case stristr($userName, "bot")://botと名のつくアカウント名に対して
$replyPatternFile = "bot_pattern.php";//bot_pattern.phpを適用する
$this->_replyPatternData[$replyPatternFile] = $this->readPatternFile($replyPatternFile);
break;
case in_array($userName, $users):
echo " $userName - 特定ユーザ用反応 $text<br />";
$replyPatternFile = "xxx_pattern.php"; //xxx_pattern.phpを適用する
$this->_replyPatternData[$replyPatternFile] = $this->readPatternFile($replyPatternFile);
break;
default://それ以外
echo " $userName - デフォルト反応 $text<br />";
$replyPatternFile = $org_repfile; //デフォルトのパターンファイル名
}
//====================
//====================
//通常の@でリプライを返すパターンファイルに以下を追加。台詞などは適時変更OK。[[NOREPTL]] と [[REPTL]] が入っていることが必要。
"話し?かけないで" => array(
"[[NOREPTL]]{name}さんにたくさん話しかけるのをやめます。",
),
"話し?かけて" => array(
"[[REPTL]]{name}さんにたくさん話しかけます。",
),
//php
//通常のフォローユーザ、特定のユーザ、Bot、ごとにタイムライン反応用パターンファイルを変えるサンプルです。
//Bot宛に決まった台詞で話しかけることで特定のユーザリストに追加されます。
//タイムライン反応を作成するときに、特定のユーザリストを見て、反応ファイルを変更します。
//動作保証はしません
//EasyBotter 本体
//====================
//function makeReplyTweets
//冒頭($replyTweets = array(); のあとあたり)に以下の2行を追加
$aryAdduser = array();
$aryDeluser = array();
//「if(empty($status) || $status == "[[END]]"){」の前に以下を追加
//タイムライン反応するユーザリストに追加
if (stristr($status, "[[REPTL]]")) {
$user = (string)$reply->user->screen_name;
$aryAdduser[] = $user;
$status = str_replace("[[REPTL]]", "", $status);
}
//タイムライン反応するユーザリストから削除
if (stristr($status, "[[NOREPTL]]")) {
$aryDeluser[] = (string)$reply->user->screen_name;
$status = str_replace("[[NOREPTL]]", "", $status);
}
//「return $replyTweets;」の前に以下を追加
//--------------------
//タイムライン反応ユーザのファイルへの追加と削除
$userfname = "replyTLusers.txt";
if (count($aryAdduser) > 0 || count($aryDeluser) > 0) {
if (file_exists($userfname) == false) {
touch ($userfname);
chmod($userfname, 606);
}
$buf = file($userfname);
$fp = fopen($userfname, "a+");
flock($fp, LOCK_EX);
$users = array();
foreach($buf as $u) {
$u = trim($u);
array_push($users, $u);
}
//追加
$users = array_merge($users, $aryAdduser);
$users = array_unique($users);
//削除
foreach ($aryDeluser as $u) {
for ($i = 0; i < count($users); $i++) {
if (strcmp($users[$i], $u) == 0) {
unset($users[$i]);
break;
}
}
}
//ファイルへの書き込み
ftruncate($fp, 0);
foreach ($users as $u) {
fputs($fp, $u."\n");
}
fclose($fp);
}
//--------------------
//====================
//makeReplyTimelineTweets
//「$replyTweets = array();」の前に以下を追加する
$org_repfile = $replyPatternFile; //デフォルトのファイル名を保管
//「//リプライパターンと照合」の前に以下を追加する
//ユーザリストを読み込む。
$fname = "replyTLusers.txt";
$users = array();
if (file_exists($fname)) {
$tmp = file($fname);
foreach($tmp as $u) {
$users[] = trim($u);
}
}
//■■特定の人には別パターン■■
$userName = (string)$tweet->user->screen_name;
switch(true){
case stristr($userName, "bot")://botと名のつくアカウント名に対して
$replyPatternFile = "bot_pattern.php";//bot_pattern.phpを適用する
$this->_replyPatternData[$replyPatternFile] = $this->readPatternFile($replyPatternFile);
break;
case in_array($userName, $users):
echo " $userName - 特定ユーザ用反応 $text<br />";
$replyPatternFile = "xxx_pattern.php"; //xxx_pattern.phpを適用する
$this->_replyPatternData[$replyPatternFile] = $this->readPatternFile($replyPatternFile);
break;
default://それ以外
echo " $userName - デフォルト反応 $text<br />";
$replyPatternFile = $org_repfile; //デフォルトのパターンファイル名
}
//====================
//====================
//通常の@でリプライを返すパターンファイルに以下を追加。台詞などは適時変更OK。[[NOREPTL]] と [[REPTL]] が入っていることが必要。
"話し?かけないで" => array(
"[[NOREPTL]]{name}さんにたくさん話しかけるのをやめます。",
),
"話し?かけて" => array(
"[[REPTL]]{name}さんにたくさん話しかけます。",
),
表示オプション
横に並べて表示:
変化行の前後のみ表示: