EasyBotter 非公式wiki
http://w.atwiki.jp/easybotter_wiki/
EasyBotter 非公式wiki
ja
2013-04-17T04:43:27+09:00
1366141407
-
地震で自動停止させる
https://w.atwiki.jp/easybotter_wiki/pages/39.html
※wikiの編集が分からなくて、追加してほしい項目がある場合はページ下の「コメント」から誰かに頼んで下さい。
このページは[[BOTを止めるものじゃなく、止まるものに>http://twbot.blogspot.com/2011/03/bot_13.html]](「簡単じゃない twitter bot」 の作り方メモ)を参考に、
[[EasyBotter -地震で自動停止を導入しました。->http://koi-ha-utsukusii.lovepop.jp/hoitan_WP/?p=139]](ハーイ!ともみです!)にて紹介されたものです。
----
*おおまかな手順
+地震の震度を取得するPHPを作成する。
+震度を取得した日時を記録しておくテキストファイルを作成する。
+botが動作中か停止中かフラグを記録するテキストファイルを作成する。
+手動で停止状態から復帰させるPHPを作成する。
+bot.phpを改造する。
+全部をアップロードして動作させる。
おまけ
手動で停止させるPHPを作成する。
**地震の震度を取得するPHPを作成する
EasyBotterOrg.phpという名前のファイルを作る。
> <?php
> class Easy_botter_org{
> function jisin(){
> //=============================
> //地震判定プログラム
> //=============================
> /* goo 天気 地震情報RSSを読み込み、震度6以上の場合、震度を返す*/
>
> $earthquake_pubtime_txt = 'earthquake_pubtime.txt';
>
> //前回のRSS読み込み日時を調べる
> $last_pubtime = file_get_contents($earthquake_pubtime_txt);
> if ($last_pubtime == ''){
> $last_pubtime = date('Y-m-d H:i:s',time()-300);
> }
>
> //$last_pubtime = '2011-03-11 14:0
2013-04-17T04:43:27+09:00
1366141407
-
ver.2.1/応用/機能追加/乗っ取り対策
https://w.atwiki.jp/easybotter_wiki/pages/38.html
※wikiの編集が分からなくて、追加してほしい項目がある場合はページ下の「コメント」から誰かに頼んで下さい。
このページはpha氏が書いた[[EasyBotterが勝手に動作させられる可能性とその対策>http://pha22.net/twitterbot/gosado.php]]の補助的なものです。
まずは、[[EasyBotterが勝手に動作させられる可能性とその対策>http://pha22.net/twitterbot/gosado.php]]をお読み下さい。
----
*各ディレクトリにindex.htmlを置く
レンタルサーバーによっては、ディレクトリ内にindex.htmlを置かないとIEなどといったブラウザで丸見えになったりします。
*ロボット避けを試みる
ロボット避けのMETAタグやrobots.txtはあくまで指定であり、強制力はありません。
Googleには有効ですか、他の検索エンジンに載ってしまう可能性があります。
**METAタグを追加する
EasyBotter.php内
//表示用HTML
function printHeader(){
$header = '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">';
$header .= '<html xmlns="http://www.w3.org/1999/xhtml" lang="ja" xml:lang="ja">';
$header .= '<head>';
$header .= '<meta http-equiv="content-language" content="ja" />';
$header .= '<meta http-equiv="content-type" content="text/html; charset=UTF-8" />';
$header .= '<title>EasyBotter</t
2014-09-09T15:24:19+09:00
1410243859
-
ver.2.1/応用/機能追加/ID別設定
https://w.atwiki.jp/easybotter_wiki/pages/37.html
※wikiの編集が分からなくて、追加してほしい項目がある場合はページ下の「コメント」から誰かに頼んで下さい。
#contents
*特定のアカウントに対しては、別のリプライパターンを読み込ませたい
EasyBotter.php内
//リプライを作る
function makeReplyTweets($replies, $replyFile, $replyPatternFile){
if(empty($this->_replyPatternData[$replyPatternFile]) && !empty($replyPatternFile)){
$this->_replyPatternData[$replyPatternFile] = $this->readPatternFile($replyPatternFile);
}
(略)
foreach($this->_replyPatternData[$replyPatternFile] as $pattern => $res){
1.
if(empty($this->_replyPatternData[$replyPatternFile]) && !empty($replyPatternFile)){
の直後に
$org_repfile = $replyPatternFile; //デフォルトのファイル名を保管
を追記する。
2.
>foreach($this->_replyPatternData[$replyPatternFile] as $pattern => $res){
の直前に
//■■特定の人には別パターン■■
$userName = (string)$reply["user"]["screen_name"];
switch(true){
case stristr($userName, "bot")://botと名のつくアカウント名に対して
$replyPatternFile = "bot_pattern.php";//bot_pattern.phpを適用する
$this->_replyPatternD
2013-05-30T17:29:23+09:00
1369902563
-
時間分け
https://w.atwiki.jp/easybotter_wiki/pages/36.html
if(date("G") == 7 && date("i") == 30){
2011-09-22T23:38:02+09:00
1316702282
-
最新APIへの変更
https://w.atwiki.jp/easybotter_wiki/pages/35.html
<?php
//=============================
//EasyBotterを呼び出します
//=============================
require_once("EasyBotter.php");
$eb = new EasyBotter();
//$response = $eb->reply(2,"data.txt","reply_pattern.php");
//$response = $eb->postRandom("data.txt");
$response = $eb->autoFollow();
?>
2011-08-20T11:55:02+09:00
1313808902
-
最新のAPIに変更
https://w.atwiki.jp/easybotter_wiki/pages/34.html
*最新APIへの変更
Twitter側の仕様変更がありましたので、EasyBotterで使用しているTwitter APIを最新のものに変更しなければなりません。
以下の解説は&bold(){2011年8月12日現在の情報}です。
**APIとは?
APIとは「Application Program Interface」または「Application Programming Interface」のことです。
参考:[[Wikipedia:アプリケーションプログラミングインタフェース>http://ja.wikipedia.org/wiki/%E3%82%A2%E3%83%97%E3%83%AA%E3%82%B1%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0%E3%82%A4%E3%83%B3%E3%82%BF%E3%83%95%E3%82%A7%E3%83%BC%E3%82%B9]]
EasyBotterではリプライやタイムラインの取得、フォロー・フォロワーのIDや名前を取得、などの際にTwitterAPIを使用しています。
古いTwitter APIを使用し続けていると、挙動がおかしくなったり、全く機能しなくなるおそれがありまです。
今後もTwitter側の仕様変更などでAPIが変更になる場合があるかも知れませんので、公式情報を定期的に確認しましょう。
**API更新方法
&bold(){EasyBotter.php のパーミッションを 666 に変更してから}、
次のスクリプトを replace.php など適当な名前で&color(red){EasyBotter.phpと同じディレクトリに}アップロードして、
ブラウザなどから実行してください。
またはbot.phpの中に<?php ~~ ?>の~~の部分を貼り付けて、bot.phpから実行してもかまいません。
ただしbot.phpから実行する場合、書き換え処理が終了したら、このコードは削除してください。
自動で更新するのが不安な場合は、下記の表に従って手動で書き換えても大丈夫です。
<?php
$target = "
2012-03-07T20:14:21+09:00
1331118861
-
時間分けマスターになる為に
https://w.atwiki.jp/easybotter_wiki/pages/33.html
&color(#ff0000){このページへ誘導されてきた方へ}
----
このページに「&color(#ff0000){&bold(){回答}}」はありません、脱初心者を目指す意欲的な方のお勉強の取っ掛かりをサポートするページです。
このページを読解していただくことでbot.php編集における基本・応用がこなせるようになります。
ソースのコピペは思わぬ誤作動の元となりやすく、またコピペで済ませることで誤作動の原因に気付きにくくなる欠点があります。
bot.phpを構成しているPHPのパーツを理解することで、bot.phpの全体を正しく把握し制御できるようになります。
ここでは「プログラミングができなくても~」というEasyBotterの基本にもとづき、あえてプログラミングの説明らしからぬ方法で説明している部分もあります。
プログラミング初心者にプログラミングの基礎を学んでもらうモノなので、プログラミング慣れした方には違和感あるかと思いますがご容赦ください。
またEasyBotterに関連するものに特化して説明していますので、PHP自体に興味をもたれた方は本家のマニュアルなどを参照されると良いでしょう。
EasyBotterは基本性能が備わっているので、基礎を勉強することで比較的容易に改造に着手することができます。
botをの機能を発展させたいと思う方は是非、基礎を勉強してみてください。
----
#contents
*時間分けとは?
botの動作を複雑化させる為に必要な時間分けですが、何から調べればよいのかわからない、という方も多いのではないでしょうか。
ここでは時間分けで使う内容を分解しそれぞれを理解することで、時間分けをマスターします。
[[時間分け]]を理解している方は以下の内容を正しく理解できるでしょう。
if(date("G") == 7 && date("i") == 30){
$response = $eb->postRandom("0730.txt");
}
正解は「7時かつ30分の場合、0730.txtからランダムポストを行い、7時かつ30分の場合の処理を終える」です。
簡単に書けば「7時30分に0730.txtからランダムポスト」で済みますが、上記のように書いたのには理由
2011-11-10T15:52:12+09:00
1320907932
-
joho_kakusan
https://w.atwiki.jp/easybotter_wiki/pages/32.html
<?php
//設定
$screen_name = ""; //botのid名
$consumer_key = "WtNt5W6js77cFHvKyVgf6Q"; // Consumer keyの値
$consumer_secret = "h3In28YiiRxtg4PTpkhPmrlJSGOCTG2oh3hslQ"; // Consumer secretの値
$access_token = ""; // Access Tokenの値
$access_token_secret = ""; // Access Token Secretの値
//高度な設定
$replyLoopLimit = 3; //リプライのループを防ぐための設定です。大体3回くらいで会話が止まります(多分……)
$footer = ""; //ここにフッターを設定すると発言するときいつも末尾に追加されます
$dataSeparator = "\n"; //data.txtの区切り文字です。改行が無視されるときはここに,(コンマ)などを設定してそれで区切ってください
?>
2011-01-19T00:40:44+09:00
1295365244
-
replyTimelineChangeByUser
https://w.atwiki.jp/easybotter_wiki/pages/31.html
//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;」の前に以下を追加
//--------------------
2010-08-05T04:13:48+09:00
1280949228
-
簡易ローカルチェック
https://w.atwiki.jp/easybotter_wiki/pages/30.html
**時間作動をローカルチェックしたい人向け(簡易)
ソースは[[Twitter Bot BBS>http://jbbs.livedoor.jp/internet/6629/]]から
1.下記のような構成のPHPファイルを作る。
2.そのファイルをPHPが使えるサーバーにアップさせる。
3.そのPHPファイルにアクセスする
(エラーがある場合は、エラーログが出る)
●メインファイル
<html lang=ja>
<head>
<title>PHP動作チェック用</title>
<body>
<h3>動作チェック</h3>
<?php
require("読み出しファイル名");
?>
<hr>
</body>
</html>
上記を適当な名前を付けて拡張子.php(PHPファイル)で保存する。
●読み出しファイル(例)
<?php
if(date("G") > 23 || date("G") < 6){
echo "24時~5時に表示されるよ";
}
elseif(date("G") > 17 || date("G") < 0){
echo "18時~23時に表示されるよ";
}
elseif(date("G") > 11 && date("G") < 18){
echo "12時~17時に表示されるよ";
}
else{
echo "6時~11時に表示されるよ";
}
?>
こちらも同様に適当な名前を付けて拡張子.php(PHPファイル)で保存する。
直接メインファイルに書いても効果があるが、別ファイルにしておく事で
書き換えたい場合、こちらのファイルを書き直すだけで済む。
読み出しファイルなので必要に同じ書き換えてください。
**リプライパターンファイルの簡易チェック
上記のメインファイルをreply_pattern.phpと同じディレクトリに入れるかディレクトリを参照させる。
上記のメインファイルの
<?php
require("読み出しファイル名");
?>
とあるところを
<?php
require("reply_pattern.php");
print_r($data);
2010-07-15T23:15:42+09:00
1279203342