忍者ブログ

[PR] []

×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

公式RTに反応するのを防ぐ。@EasyBotter [twitter bot]

今月中旬以降くらいに、botのツイートが公式RTされたときに反応するようになってました。
公式RTはリプライでもメンションでもないので、反応されたら困ります。
reply_pattern.phpの編集かと思ったけどそれより、最新のAPIに変更することで反応しなくなりました。

EasyBotter非公式wiki
http://www26.atwiki.jp/easybotter_wiki/pages/34.html

パーミッション666にとありますが、ロリポは600でOKです。
PR

ロリポサーバでEasyBotter [twitter bot]

さくらサーバでEasyBotter と特に違いはなかったと思います。
さくらはcgiモードで動くんだったと思いますが、ロリポは普通に動く、くらいですかね?
パーミッションは推奨値があるのだけど、元々さくらを使ってたのとか
EasyBotter配布元の指定だったりとか理由はあるのだけど
うちではこうなってます。


ig.phpが、data.txtにあたります。
phaさんの説明では、「data.txtとreply_pattern.phpとlog.datのパーミッションを666に」
とのことなんだけど、そこんとこ666と606と604が混在してる理由はちょっと…わからん^^;
でもこれで、GAE-Cron使って動かすことができています。
reply_pattern.phpは666ということだけど、これは604になってんですよね。
ちゃんと、設定したように返事してます。
ただ、1時間に一回などの定期ポストは使ってないので、ここらへんで動かなくなったりするのかもしれません。

ちなみにロリポの推奨値は、
php 604
dat 600
…となってます。

配布されているスクリプトを使う場合、基本的にはサーバの指示に従い、動かなかったら配布元の推奨値も試してみる、というのがいいと思います。

ということで、サーバの指示にあわせてきました。
不具合があったら追記したいと思います。

条件を満たして最初に叩かれたときだけポストする [twitter bot]

ある条件があります。
条件を満たして最初に叩かれたときだけポストする。というのをつくります。

ある条件とは、基準となる日時からどれだけ時間(分)が経過しているか、ということなのですが
cronで5分おきに叩いているので、10000分~100010分の間であれば、という指定にします。

$pastmin=経過分

if($pastmin>10000 && $pastmin <10010){処理}

(これだと実際は、10001~10009ですが気にしない。)

ひとつだけならこれでいいのですが、時間が経過していくごとに別の処理をしたい場合がちょっとめんどくさいです。
あと、経過分を計算して指定するというより、とある数値がxになったら、ポストしたい。

具体的に言うと、「満腹度」というものがありまして、これは一定時間ごとにどんどん減っていく数字で、
0になると、バーチャルペットが死んでしまいます。
なので、5を切ってから1になるまでカウントダウンのポストをしたいのです。

「満腹度(=$hungry)」を計算する式はすでにあるので、あとはそれが5になったとき、4になったとき、、とポストすればいいのですが
この間、「もうすぐ餓死してしまいますよ」という警告なども発するため、
おそらくその合間に何度も「満腹度が$hungryになりました」というポストをしてしまうことになります。
満腹度が下がったときだけでいいので、
ロックフォルダのようなものを使うことにしました。
ftpで見たときファイルよりディレクトリの方が分かりやすいので。

満腹度が5になったら、そのお知らせをポストし、hungry5というディレクトリを作る。
ディレクトリがあるときはポストしない。
満腹度が4になったら、ディレクトリhungry5を削除し、満腹度のお知らせをポスト、ディレクトリhungry4を作成。
ディレクトリがあるときはポストしない。
以降、満腹度が1になるまで繰り返し。です。

if( $hungry==5 && !file_exists(hungry5) ){
$data = array("満腹度が【 5 】になりました。");
mkdir(hungry5);
}elseif( $hungry==4 && file_exists(hungry5) ){
rmdir(hungry5);
$data = array("満腹度が【 4 】になりました。");
mkdir(hungry4);
}

/*省略*/

elseif($hungry==0){//最後に、ディレクトリhungry1を消しておく
rmdir(hungry1);
}


作ってみたら、$hungry==4になって最初のポストのときはhungry5があるんで
hungry5があれば、それを削除した上でポストしてディレクトリhungry4をつくる、でよさそう
まとめてみないと、なくてもいいものをあれこれくっつけてたりします\(^o^)/
…足りなくて動かないことも、多々ありますorz

※このファイルをアップロードするディレクトリのパーミッションによっては、うまく動作しないです。
atpages(www19.atpages.jp)では、botプログラムが入っているディレクトリのパーミッションを707にすることで動作しました。


今回はこの本だけ参考にして作れました。


評価、あんまりよくないようですけどね^^;
初心者にはありがたい本です。
目的に利用できそうなものを目次から探して使うわけです。
ま、ネット上のリファレンスでも事足りるのだけど、なんでか、こういうところでは本を使うんですよね。
この本に載ってなくて、こういうことってphpでできないの?なんてことがあったら、そのときは検索してます。
だいたい解決します。

実はこんなbotを作っています。 [twitter bot]

http://twitter.com/liv_info

リヴリーアイランドというサービスがあるのですが、バーチャルペット、ていうんですかね。「生き物様のモノを飼う」サービスです。

腹が減る生き物なので、あんまり放置すると死んじゃいます。
またストレスも数値的に加算され、一定時間で家出します。
諸々の理由により、その餓死や家出が発生する前に知ることが出来ると助かるので、という動機。

餓死も家出も、メンテナンスによって回避されます。つまり、メンテナンスの日時から、その日その時間を計算できるということ。

まずは手動で計算して定期ポストファイルに書き込んでました。
メンテのたびに変更するのは、
家出の前にポストするファイル
餓死の24時間くらい前にポストするファイル
餓死の2時間くらい前にポストするファイル
家出や餓死が発生する時間を尋ねられたときに返すリプライ用のファイル(reply_pattern.php)
それぞれをポストする時間を設定するbot.php

以上、5ファイル。
いずれめんどくさくなるのが目に見えてます。

そこで、1つのファイルだけ書き換えて済むように変えました。
ポストするべき文、リプライ用の文、全部を1つのファイルから読み出すように。
PHPとは便利なもので、別のファイルを参照することが出来ます。
まずは定期ポスト用のdata.txtなんかを変えます。data.phpなどに。
拡張子だけ変えてもダメなんで。中身も.php用に。
EasyBotter公式にあるような形にします。
公式より少し詳しく書くと、こうです。
<?php
$data = array(
"いろはにほへと ちりぬるを",
"わかよたれそ つねならむ",
"うゐのおくやま けふこえて",
"あさきゆめみし ゑひもせす",
"ん",
);
?>

<?php?>を入れないとダメです。

で、共通のファイルを参照するように指定。
<?phpで改行入れて、
require("sample.php");
を追加。
メンテがあるたびに変えなければならなかったファイル全部をこんな風にします。
bot.phpにも、//botの動作をここに書いてくださいの下あたりにrequire("sample.php");を書いちゃって、参照するのはOK。

さくらサーバでEasyBotter [twitter bot]

先日まで@PAGESサーバ使っていたんですが、トラブルがあってその後おかしくなっていたので、さくらサーバに設置し直しました。

ウチの場合は、botアカウント2つ、そのうち1つは、
EasyBotterを2つ設置して違う動きをさせてたんですが、これが出来なくなりました。
さくらサーバによるのか、Twitter側の仕様によるのか、それとも最初に@PAGESに設置してみたときから実は動いていなかったかもしれません。
二つ設置してたのは、片方はeasybotter.phpの改造をしていたからですが、改造箇所を確認したら、1つで済ませることができたのでいい機会だったかも^p^


で、さくらサーバの場合ですが
手動で動かす分には、666にしないといけないファイル以外パーミッションは変更しなくていいんですが、自動化するに当たりGAE-Cronで動かそうとすると、コード200は返ってくるんですが、投稿やリプライをしてくれません。
bot.phpのパーミッションは755で。

さくらCRONで動かす場合は、パーミッションは変えなくても大丈夫と聞いたことがあります。
たださくらCRONは実行間隔の制限があります。って前に書いたか。
1時間でと書いてあるんで、無視せずその通りに。
とはいえ設定は5つ出来るので12分毎動いてるっぽく見せかけることは可能。
CRONの設定をして自動化する。1

最新記事

オンマウスでタイトル~

ブログ内検索

オススメサーバなど。

はやくて、やすくて、カンタン。
全てが揃った究極のレンタルサーバ、☆さくらのレンタルサーバ
 
ロリポップのドメインは85種類!
きっとお好みのドメインが見つかるはず!
ロリポップはドメイン持ってる人が非常に使いやすいかと。
aaa.jpを取得して、web.aaa.jp、blog.aaa.jp、mail.aaa.jpみたいに、使い分けが出来て便利です。
メアドもたくさん作れて、転送設定なんかもできて良い。
実績から見ても信用できるし、イチオシです。
 
で、ドメイン取るならココ。
時々新規超安キャンペーンやってます。
ムームードメイン

 
お手軽価格で使いがい、あります。
月額250円~で、容量5GB、独自ドメイン、CGI使用、商用利用可能!
FC2レンタルサーバーLite
 
A8.net

プロフィール

HN:hrn
一言:ブログタイトル迷走中。
php初心者/htmlとcssならちょっと得意/javascriptは苦手。必要なことだけ調べるのでいつも遠回り、余計なことばかりしている。
琉金とポリプ飼ってます
透明水彩ってイイヨネ。
 
アクア用品なんかのレビューでは、アフィリエイトリンクつけてるものがあります。
記事が参考になったら、ここから買ってくれると嬉しい。