【Twitter】 BOT製作支援スレ
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2009/09/27(日) 14:15:59ID:Dz08qoo4[公式] http://twitter.com/
[Twitter 開発ブログ 日本語版] http://twitterjp.blogspot.com/
*どの言語でもOKですがソースを書く際は何の言語なのかも記載してください。
*初心者のために、なるべくぶつ切りのソースではなく全体的に載せてほしいです。
0116nobodyさん
2009/10/20(火) 21:14:40ID:???×COREジョブ ○CRONジョブ
ごめん。
自分はテキストエディタTeraPadで「ファイル」→「文字/改行コード指定保存」で指定出来たよ
何のテキストエディタでcron1.shを作るかによって変わると思うから
使ってるテキストエディタで改行コードについてググればいいんじゃないかな?
0117nobodyさん
2009/10/20(火) 21:41:44ID:???�dクス
とりあえず言われた通りに設置してみた
相変わらずcron.shはNot Foundになるが…大丈夫なのか
0118nobodyさん
2009/10/20(火) 21:58:03ID:???ファイルが無いって意味じゃないっけ?
ファイルのURL間違えてない?
0119nobodyさん
2009/10/20(火) 22:21:59ID:???来ないということは実行されてないってことなのか
0120nobodyさん
2009/10/20(火) 22:23:37ID:???僕は使ってるけど来てないな。設定によるのかもしれないが
0121nobodyさん
2009/10/20(火) 22:40:53ID:???こんだけ丁寧に教えてもらったのに申し訳ない…
手動ではちゃんと動くからcronの設定が間違ってるんだろうけど
0122nobodyさん
2009/10/20(火) 23:49:43ID:???if($reply_name != $username){
if( !preg_match ( "/@[a-zA-Z0-9-_]{3,}/", $var ) ){
if( preg_match ( "/(「?.+?」)/u", $var ,$match)){ //←ここ改変
$message = $match[1]; //←付け加え
tweet($message ,$username,$password);
としてみたところ、エラーなどは出ないもののリプライがない…。もうどこをルール違反してんのかわかんねぇw
0123nobodyさん
2009/10/21(水) 08:47:10ID:???2つBOT置いてるのに片方が反応しても片方が一日沈黙している。
別鯖探してるけれどなかなかいいのがないなぁ。
改変もエラーばかりだし、なんでBOT作ったのか自分でもわかんなくなってきたよ
いや、でも負けないけどさ。
0124nobodyさん
2009/10/21(水) 08:57:38ID:???リプライに対する反応語句を増やすにはどこを増やしていじればよいのですか?
if構文から見て自分なりに増やしても、反応すらしてくれません。
0125nobodyさん
2009/10/21(水) 09:25:24ID:???自鯖?
cronでこけるときって文字エンコードがらみが経験上多い。
普通にコマンドラインで動かすと動くんだけど、cronで動かないとか。
print文とかあったらコメントアウトしてみるとか
レンタル鯖でcronはあきらめたほうがいい
0126123
2009/10/21(水) 10:15:59ID:???ありがとー 自鯖じゃなくて、銀さんのところで見た@PAGES使ってる。
いかんせん初心者@勉強中なもんで、ソースはいじらずに使ってるだけなんだけど
昨日くらいからcron-jobが全く動かなくなってしまってる。
超過エラーは出ててもそれまでは動いてたんで、元鯖が不調なせいかなと思ってた。
手動ならおkぽいから、phpは平気(当然だが)なんだけどね。
>レンタル鯖でcronはあきらめたほうがいい
あー…もう素直にBOT手放すしかないのかなあ…PHP楽しいのに。
0127nobodyさん
2009/10/21(水) 10:36:05ID:???他にcron使える手段が自分にはないから仕方ないけど
ときどき実行に失敗するのは我慢できるが
勝手にアクティブ設定が無効になるのは勘弁してほしい
0128nobodyさん
2009/10/21(水) 11:34:03ID:???0129nobodyさん
2009/10/21(水) 11:38:32ID:???webcron.orgも昔は無料だったんだけど、無料である程度人が集まった時点で有料化された。
なのでそのうちcron-job.orgもそのうち有料化されて、そしたら動作も安定するんじゃないかと思ってる
0130nobodyさん
2009/10/21(水) 11:58:44ID:???玄人から出るみたいだし
0131nobodyさん
2009/10/21(水) 19:56:40ID:???0133nobodyさん
2009/10/21(水) 20:43:51ID:???今GAEが対応してる言語ってpythonかjavaだけじゃない?
php対応してたら使いたいけどなー
>>>79>>87>>95
>googleappengine使えば、好きなだけcron設定できるよ
0134nobodyさん
2009/10/21(水) 21:23:16ID:???0135nobodyさん
2009/10/21(水) 21:26:06ID:???0136nobodyさん
2009/10/21(水) 23:03:06ID:???立ち上げっぱなしになるのがネックだけど
0137nobodyさん
2009/10/22(木) 00:00:16ID:???プログラミングができなくても作れるTwitter botの作り方
http://pha22.net/text/twitterbot.html
少しバージョンアップしました。
特定の単語に特定の単語を返す機能と、現在の時間を組み込める機能を付けました。
よかったら試してみてくださいー
0142nobodyさん
2009/10/22(木) 14:33:42ID:???0145nobodyさん
2009/10/22(木) 18:32:14ID:???0146nobodyさん
2009/10/22(木) 19:04:13ID:???0147nobodyさん
2009/10/22(木) 19:14:00ID:???なんかエラー吐くんだけどどこに置けば?
0148nobodyさん
2009/10/22(木) 19:37:46ID:???0153nobodyさん
2009/10/23(金) 00:20:42ID:???反応が全くない。TL上のワードを拾うわけじゃないんですよね?
普通に@無視される…
まぁ、@つけても無視されるんですが。おやすみ入れてもスルー。
0154nobodyさん
2009/10/23(金) 01:31:51ID:???本当にありがとうございますー!
今まで特定の語句への返信は、
phaさんのを参考にして作ったという某ブログのスクリプトを使っていたんですが
こちらの方がすっきりしていてサイズが小さく済む+追加しやすいのでこちらに変えました
定期ランダムポスト+特定の語句へのリプライはphaさんのスクリプト
TLから特定の語句を拾ってのリプライは某ブログのスクリプトという
合わせ技でもなんとか動いてます
こんなに使いやすいスクリプトを作って下さり、本当にありがとうございました
0155nobodyさん
2009/10/23(金) 07:18:12ID:???構文を追加したらRT対策が解除される、ということは不可能でしょうか?
.@での挨拶が多いので対応出来なくて…
0156nobodyさん
2009/10/23(金) 12:22:52ID:???0157nobodyさん
2009/10/23(金) 12:44:10ID:???自分の発言にキーワードがあった場合やリプライ時でも返してしまう
if( $screen_name != $username){ //自分の発言時は反応しない
if(strpos($re["text"],"@".$username) === False){ //発言の中に@があった場合は反応しない
if(preg_match("/キーワード/",$re["text"])){ //特定のキーワードがあった場合反応する
$replies[] = $re;
}
}
}
こう改変してるんだけどどこがへんなのかな?
条件分岐がうまく動いてないみたいなんだけど
0158nobodyさん
2009/10/23(金) 13:59:49ID:???txtファイルに登録してる発言内容が少ないので同じ発言がたまたま選択されて連投規制に引っかかったのか、
一度に投稿スクリプトを動かし過ぎてAPI規制に引っかかったのか…
同じ内容を続けて投稿してしまわないようなチェック機能とかあったらいいなあ。
適当なtxtファイルを用意して発言内容をそこに書き込む→発言前にそのファイルの内容をチェック、
選択した発言が同じなら発言選択をやりなおすとかだったら実現できるかな。
作ってみようかなあ。
cron-job.orgも登録してみたけどうまくいかないのでcygwin入れてみたけどさっぱりわかんないやorz
0159nobodyさん
2009/10/23(金) 14:12:26ID:???datファイルをつくってそこに最新のTLを蓄積
$host = "http://twitter.com/statuses/friends_timeline.xml";
ってやったほうがいいかも
0160nobodyさん
2009/10/23(金) 14:26:03ID:???全然投稿で着てないわけじゃないんでしょ?
だったらやっぱり重複制限に引っ掛かってるのかもしれないから
適当にtxtファイルの中身増やしてテストしてみたら?
0161nobodyさん
2009/10/23(金) 16:46:40ID:???0162nobodyさん
2009/10/23(金) 16:49:29ID:???0163nobodyさん
2009/10/23(金) 17:44:36ID:???アレどっかにつんであるはずだからさがして
twitterのbotで発言できるようにしてみるか
0164nobodyさん
2009/10/23(金) 20:39:31ID:???他にもこういうひといない?
0165nobodyさん
2009/10/23(金) 22:33:51ID:???これって連投すると規制されるのか?
0166nobodyさん
2009/10/23(金) 23:13:23ID:???・2時間で125以上ポスト出来ない(というメッセージが出たことある)
投稿規制はこの二つだったはず。後者はちょっと曖昧かも。
0167nobodyさん
2009/10/24(土) 00:40:33ID:???定期postの間隔がよっぽど短いとか
リプライ反応する間隔が2分とかで
毎度数十件のpostでもしなきゃされないんじゃね
0168nobodyさん
2009/10/24(土) 00:53:48ID:???cron-job安定しないんだよなー
それとも2分じゃなくて4〜6分間隔くらいにしたらまだましかね?
0169nobodyさん
2009/10/24(土) 01:14:32ID:???80code.com安定してるよー。現在は新規受付停止中だけど。
さくらのスタンダードとエックスサーバーもcron可だったと思うが、使った事無いので動作については分からん
0171nobodyさん
2009/10/24(土) 03:16:09ID:???なぜか同じ文字列を見つけてくれないorz
誰か助言プリーズ
//ログをチェックして直近10件の投稿と重複させない
//ログリストを読み込む
$logfile = "log.txt";
$logs = file_get_contents($logfile);
$logs = trim($logs);
$logs = preg_replace("@(\r\n|\r)@", "\n", $logs);
$logs = preg_replace("@\n+@","\n",$logs);
$logs = mb_convert_encoding($logs, 'UTF-8', 'EUC-JP,SJIS,ASCII,JIS,UTF-8');
$lo = explode("\n", $logs);
for ($c = 0; $c < count($lo); $c++){
if (strcmp($message,$lo[$c]) === 0){
//同じだった場合もう一回ランダム発言を取得しなおしてカウンタを0に戻す
//発言をランダムに一つ選ぶ
$message = $tw[array_rand($tw)];
//カウンタを戻す
$c = "-1";
}
}
0172nobodyさん
2009/10/24(土) 03:24:11ID:???上でググるアプ使ってる人はどうやってるの?
0175nobodyさん
2009/10/24(土) 10:47:44ID:???相手の発言を引用する(○○だよ→○○なんだね)みたいなやり方教えて
0176nobodyさん
2009/10/24(土) 11:24:30ID:???自動的に複数回変更できるスクリプトないですか…ね?
ttp://ameblo.jp/liam7/entry-10363726388.html
ここ参考にしようと思ったらcurl使えなくて
0177nobodyさん
2009/10/24(土) 11:33:14ID:???上の人じゃないけどGAEでcronできたよ。
http://builder.japan.zdnet.com/sp/google-app-engine/story/0,3800086196,20371257,00.htm
http://code.google.com/intl/ja/appengine/docs/python/config/cron.html
http://code.google.com/intl/ja/appengine/docs/python/urlfetch/overview.html
↑ここ参考にした
0178nobodyさん
2009/10/24(土) 11:58:22ID:???誰か、TL上のワード拾って反応するBOTのソースくれー!
バカなのは承知してるし勉強もしてるんだー
0181nobodyさん
2009/10/24(土) 14:40:42ID:???IDとパス以外変更してないのになにこれ?
0182nobodyさん
2009/10/24(土) 15:01:23ID:???0184nobodyさん
2009/10/24(土) 16:31:39ID:???1〜2回うまく行ったけどあとはさっぱり
何か考えられる原因があったらご教授願います
0185184
2009/10/24(土) 16:56:22ID:???@ユーザー名の後のスペースが全角になっていました…orz
お恥ずかしい限りですがご報告だけ。
0187nobodyさん
2009/10/25(日) 00:51:07ID:???あれすごい
0188nobodyさん
2009/10/25(日) 11:11:20ID:???これみたいに一部分だけをランダムに組み替えて発言させるにはどうしたらいいの?
0189nobodyさん
2009/10/25(日) 11:22:48ID:QovXst2Y上記のように、特定の言葉(この場合「商店街」)がつぶやかれたものを検索して
自動的にRTするようなBOTの作り方をご存じの方、ご教示願います。
0191nobodyさん
2009/10/25(日) 17:18:48ID:???そんな高度な技術でもないだろ、
とりあえずphaさんのスクリプト例に取るとpost_random.phpのテキストファイルの内容を一行ずつ読み込んでランダムに一つ選択するところと
reply_random.phpのテキストファイル中の{name}を置き換えるところを応用してくっつければ出来る。スクリプト長くなるけど。
0192nobodyさん
2009/10/25(日) 17:45:15ID:???文頭においてPostしてるだけになるんだけど
ちゃんとしたリプライ送るようにするにはどうすればいい?
0193nobodyさん
2009/10/25(日) 18:05:57ID:???"おはよ"と"オハヨ"のどちらにも対応させる(1セットで)には
どうすればいいのでしょうか?
↓な感じにしたいんですが
"おはよ|オハヨ"=> array(
"おはよう",
"おはよ!",
),
0195nobodyさん
2009/10/25(日) 20:20:59ID:???FTPでアスキーモードで転送できてなくて改行が変になってるのかも
FTPでアスキーモードを指定、とやってみたらどうかなあ
わかんないけど
0196nobodyさん
2009/10/25(日) 21:19:37ID:???DSOで。
0198nobodyさん
2009/10/26(月) 02:00:49ID:???0199nobodyさん
2009/10/26(月) 03:07:52ID:???@付きステータスのアップデート時に、in_reply_to_status_id を付ける。
詳しくはAPI仕様書を読んでね。
>>198
適当な間隔でフォロワーやDMのリストを取得して処理すればいい。
API制限もあるし、1度処理したらファイルに記録しておく必要があると思う。
メール通知を利用するって手もありそうだけど、
メールが来ないことが結構あるような・・・・。
0200nobodyさん
2009/10/26(月) 18:23:57ID:???仕様書読みながらphaさんの改変してin_reply_to_status_id付けようとしてるんだが
updateを使ってなくてどこにいれればいいのかわからん
reply_random.phpじゃなく
Twitter.phpの
function setUpdate($value)
{
return $this->_setData($this->sm_update,
array(
'status' => urlencode($value), in_reply_to_status_id => $id//←ここ
),
array(
'Content-Type' => 'application/x-www-form-urlencoded'
));
}
ここにいれればいいの?
0201nobodyさん
2009/10/26(月) 18:25:16ID:???特定のつぶやきを検索するのには検索用APIが用意されているし、
RTの仕方についてはPOST時に適当な書式に沿ってRTを付けるだけ。
(retweet関係のAPIって正式に公開された?)
それらを適度に組み合わせれば清むので、
別段特殊な技術が必要な訳ではないから何も難しいことはないかと。
ところで、twitter.com/syoutengai で検索したら
なにやらひどいコメントが。
ttp://www.google.co.jp/search?pws=0&q=twitter.com/syoutengai
0202nobodyさん
2009/10/26(月) 18:29:46ID:???自動リムーブだけど1日に1回、friends/idsとfollowers/idsの差分とって処理してる。
フォローも似たような案配でいけるんじゃない?
>199
in_reply_to_status_idって返信先ステータスのIDを指定するでいいんだよね?
送出前のヘッダを出力してみるとin_reply_to_status_idの指定がちゃんとしてあるんだけど、
レスポンスみると無視されてるみたいでハマってるんだ
0203200
2009/10/26(月) 18:36:56ID:???似たような事してる人がいた!
自分はこう書き換えした
function setUpdate($value)
{
if(is_array($value)){
return $this->_setData($this->sm_update,
array(
'status' => urlencode($value['status']),
'in_reply_to_status_id'=>$value['in_reply_to_status_id']
),
array(
'Content-Type' => 'application/x-www-form-urlencoded'
));
}else{
return $this->_setData($this->sm_update,
array(
'status' => urlencode($value)
),
array(
'Content-Type' => 'application/x-www-form-urlencoded'
));
}
}
で、スクリプト側の方で
$st->setUpdate(array('status'=>$status,'in_reply_to_status_id'=>$in_reply_to_status_id));
みたいに書いてたよ
0204nobodyさん
2009/10/26(月) 18:53:10ID:???あいさつをちゃんとしている人(Replyでおはようとか)にはやさしくなっていくとか…
0205nobodyさん
2009/10/26(月) 19:47:55ID:???0206nobodyさん
2009/10/26(月) 20:33:51ID:???おお、助かった!ちょっとやってみ…たらできんかった
エラー起こってないから単にin_reply_to_status_idが取得できてないだけなんかな
0207nobodyさん
2009/10/26(月) 20:39:34ID:???0210nobodyさん
2009/10/27(火) 00:08:03ID:???0211nobodyさん
2009/10/27(火) 00:34:10ID:???0212nobodyさん
2009/10/27(火) 00:36:04ID:???これの場合
$in_reply_to_status_id = $replies2[$i]["in_reply_to_status_id"];
$status = "@".$replies2[$i]["screen_name"]." ".$text;
でいいのか?
0213nobodyさん
2009/10/27(火) 02:46:16ID:???それを12時〜19時までにしたいのですが、うまくいきません
if (preg_match("/^[1-6]{0,1}$/",$now_g)){
$now_g = 'sleep';
};
[1-6]が1時〜6時、{0,1}が単位が0か1の場合というのは何となく分かるのですが
2桁にしたいので{0,1}を{0,2}や{0,1,2} {0-2}にしてもだめでした…
どうすればいいのでしょうか?
それから、翻訳機能を持たせたいのですが、ソースを公開してるところはありませんか
@で特定の単語をくれたら翻訳してくれる…というのをやってみたいです。
『@bot +++たん、[◆◆]を翻訳して』とreplyしたら『@**** 『●●』だよ』というやつです。
ご存知の方、教えてください
0214nobodyさん
2009/10/27(火) 13:25:06ID:???ごめん>202=203なので>203のソースは上手くいかないんだ
phaさんのソースは知らんがin_reply_to_status_id=返信先の記事idだと思ったから
Services_Twitterの出力結果とAPI仕様書照らしあわせて
$in_reply_to_status_id = $replies2[$i]->id;
ってしてる。
>>213
preg_matchじゃなくて単に「$now_gが12より大きく、19より小さかったら」って書けば?
0215nobodyさん
2009/10/27(火) 15:03:13ID:???■ このスレッドは過去ログ倉庫に格納されています