トップページ⇒php
1001コメント336KB

【Twitter】 BOT製作支援スレ

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん2009/09/27(日) 14:15:59ID:Dz08qoo4
見当たらなかったので立ててみた

[公式] http://twitter.com/
[Twitter 開発ブログ 日本語版] http://twitterjp.blogspot.com/

*どの言語でもOKですがソースを書く際は何の言語なのかも記載してください。
*初心者のために、なるべくぶつ切りのソースではなく全体的に載せてほしいです。
0063nobodyさん2009/10/17(土) 19:23:27ID:???
マルコフ連鎖って、chasenやmecabなんかが使えるサーバーじゃないと
形態素解析が使えないから、単語単位での分け方け方じゃなくて、
スペース、句読点くぎりしかできなかったはずだけど、違うのかな。
yahoo apiを使えばできるの?
0064nobodyさん2009/10/17(土) 20:51:02ID:???
>>1-1000
twittanの管理人?がおかしいので、twittanにDM投げるだけのBotつくってくだしあ><;
0065nobodyさん2009/10/17(土) 21:18:42ID:???
>>62
botに実装しない形では完成してるの?
0066nobodyさん2009/10/17(土) 22:05:52ID:???
今、銀さんのbotを見て作ってたんだけど、
定期つぶやきについては最初はうまくできたのに、
リプライ機能もつけようとしてtxtファイルを作ったら、
リプライはおろか定期つぶやきもしてくれなくなった…
手動でphp実行で投稿しようとしてもだめ
txtファイルを消してもだめ
どなたか知恵下さい...
0067nobodyさん2009/10/18(日) 00:36:54ID:???
前のつぶやき(20件)と全く同じ発言しようとしてるからじゃね?
それでもダメなら作り直した方が楽な気がする。
0068nobodyさん2009/10/18(日) 00:44:50ID:???
今、24時間以内に同じ内容のpostをしたらブロックされる規制が導入されてる
らしいね。

Twitter、重複つぶやきをブロック開始
http://jp.techcrunch.com/archives/20091014cleaning-up-the-stream-twitter-kills-duplicate-tweets/

あと直近の10postと同じ内容でなければ、24時間以内でなくとも投稿できるらしい。

http://koty.sakura.ne.jp/lab/twittpedia/index.php?duplicate%20text
0069662009/10/18(日) 00:50:08ID:???
>>67 >>68
うわぁありがとう だからか!すごい納得いった。
テストのつもりだったから
発言4種類くらいで6分間隔くらいで喋らせようとしてたわ。
ほんとサンクスです!! もうちょっと頑張ってみる
0070nobodyさん2009/10/18(日) 00:58:06ID:???
ああ、10件だったっけ…
0071nobodyさん2009/10/18(日) 00:59:39ID:???
> 24時間以内
というのは間違いみたい。数日経っても動かないボットもいる。
テスト用に作った発言の種類が3つのボットだけど。
0072nobodyさん2009/10/18(日) 01:18:12ID:???
そうなると直近の10post分だけどっか別のファイルに記録しておいて、投稿前に
その中に同じ内容が含まれていたら違う発言をpostするようにしたら何とか回避
できるかな。
発言を11個以上用意しておく必要があるけれど。
0073662009/10/18(日) 01:28:40ID:???
今セリフを増やして言葉も変えたら、とりあえず手動での投稿は受け付けたから
やっぱりセリフの重複が問題だったみたい。
ここのスレなかったら多分諦めてたわ、ありがとう助かった!^▽^
0074nobodyさん2009/10/18(日) 10:07:36ID:???
>>65
うん
0075nobodyさん2009/10/18(日) 15:22:23ID:???
>>57
この8bitnoteの方にあるPOST内容から発言を引用するスクリプトを丸コピーしてみたら
Parse error: syntax error, unexpected T_LNUMBER, expecting T_VARIABLE or '$' in /usr/local/www/
ってエラー出るんだけど質問受付てないし何がいけないんだかさっぱりわかんね
0076nobodyさん2009/10/18(日) 15:24:59ID:???
パースエラーだろが
0077nobodyさん2009/10/18(日) 18:42:16ID:???
bot同士で会話させるた時にある程度会話するとリプライしないようにできる方法ない?
0078nobodyさん2009/10/18(日) 19:07:59ID:???
>>77
http://d.hatena.ne.jp/tomoaki96/20091014#p1
0079nobodyさん2009/10/18(日) 19:22:35ID:???
corn-job.orgって使えるcronの数決まってる?
0080nobodyさん2009/10/19(月) 00:15:54ID:slCeJxW2
なんかおもろいbot教えて
0081nobodyさん2009/10/19(月) 00:38:11ID:???
リプライに関して。
プログラムは基本的に動くんだけど、
たまに「@ID」のみの空白リプライ返してるときがある。
単に負荷がかかりすぎ、ってことなのかな?
同じ症状出た人いたら教えて欲しい……。
0082nobodyさん2009/10/19(月) 02:47:24ID:???
POSTするステータス自体が、何らかの要因でそうなってるんじゃないの?
あとは、\0 が入ってるとか。
どっかにログとして保存しとくと確認しやすいかも
0083nobodyさん2009/10/19(月) 03:19:16ID:???
空リプライはこれが原因とかじゃないかな?
http://d.hatena.ne.jp/bardothodol/20090912
0084nobodyさん2009/10/19(月) 12:45:05ID:???
作ってみたしリプライの出来るんだがシカトが多いなと思ったら
リプライを読み込むまでにもらった最新の一件にしかリプライしないようだ
原因は何が考えられるでしょうか?
0085nobodyさん2009/10/19(月) 13:10:49ID:???
作ってみた内容がわからんから何とも言えない
0086nobodyさん2009/10/19(月) 16:55:12ID:???
最新の一件にしか反応しないようなソースだからじゃないのとしか
0087nobodyさん2009/10/19(月) 19:17:47ID:???
corn-job.orgが使ってるけど1/3くらいの割合で作動しない気がする
どっか2分間隔でcron使える鯖ないかな
0088nobodyさん2009/10/19(月) 20:17:59ID:???
elseif( preg_match("/(.+)(なのか|だったのか)/",$text)){ {//「なのか」または「だったのか」の前に何かしら文字があった場合にマッチ
$nanoka = $1;  //「なのか」または「だったのか」の前の文字を$nanokaに代入  ←この行でパースエラーになるんだけど何がおかしいの?
$mes = array("$nanokaなのかー"); //$nanokaを台詞に組み込んで引用!
$mes_n = count($mes) - 1;
$mesrand = mt_rand (0,$mes_n);
0089nobodyさん2009/10/19(月) 20:19:37ID:???
全角スペースが入ってるから
0090nobodyさん2009/10/19(月) 20:27:16ID:???
>>88
elseif( preg_match("/(.+)(なのか|だったのか)/",$text,$match)){ {
$nanoka = $match[1];  
0091nobodyさん2009/10/19(月) 20:29:06ID:???
>>88
あと
>$mes = array("$nanokaなのかー"); //$nanokaを台詞に組み込んで引用!
>$mes_n = count($mes) - 1;
>$mesrand = mt_rand (0,$mes_n);
は何をやりたいのかよくわからないのだけど
これだと count($mes) は必ず1になると思う
0092nobodyさん2009/10/19(月) 20:39:42ID:???
>>1-1000
twittanの管理人?がおかしいので、twittanにDM投げるだけのBotつくってくだしあ><;
0093nobodyさん2009/10/19(月) 20:40:27ID:???
ああ$1とか書いてるからか・・・
0094nobodyさん2009/10/19(月) 20:41:58ID:???
>>90
迅速な回答ありがとう
おかげでとりあえずエラーは消えたが何故かリプライに反応はしなかった
0095nobodyさん2009/10/19(月) 21:40:31ID:???
corn-job.org2分間隔と30分間隔で使ってるけど2分の方ほとんど機能しねえ
間隔長い方がいいのか?関係あんのかな
0096812009/10/19(月) 22:14:13ID:???
>>82 >>83
ありが�d ちょっと試してみる。
空リプライをポストしないようにすればいいんだな、とりあえず。
0097nobodyさん2009/10/19(月) 22:56:38ID:???
bot動かすのに一番向いてる鯖ってどこ
cron使えるとこで
0098nobodyさん2009/10/19(月) 23:11:03ID:???
俺の鯖
0099nobodyさん2009/10/19(月) 23:22:10ID:???
さくらサーバーってcron最短で何分間隔で使えるんだろ
0100nobodyさん2009/10/19(月) 23:26:10ID:???
twitterにアクセスできて、任意のプログラムを動かせるのであれば
鯖である必要すらない。
0101nobodyさん2009/10/19(月) 23:48:38ID:???
>>93
Perlやってると陥るミスだな。
構文微妙に似てるせいで同じとこと違うとこを混同しやすい。
0102nobodyさん2009/10/20(火) 00:42:14ID:???
手動だとちゃんとポストされるのにcronがポストしてくれない
ドイツのサイト使ってるけどここだめなのか
0103nobodyさん2009/10/20(火) 01:12:52ID:???
普通にcron使えよw
0104nobodyさん2009/10/20(火) 02:01:10ID:???
ちょっと前に名前を呼ばれてたので名前を出すけど@phaです。
特定の単語に特定の単語を返す機能は次のバージョンアップで付ける予定です。
もうちょっと待ってくださいー。
0105nobodyさん2009/10/20(火) 02:45:47ID:???
>>102
例のドイツのサイト、多分今すごく負荷かかってるんじゃないか?
良くも悪くも、かなり認知度高まってきた感じだし。
0106nobodyさん2009/10/20(火) 05:16:21ID:???
>>104
すっごい頼りにしてる。
0107nobodyさん2009/10/20(火) 17:59:03ID:???
@phaさんが配布してるのと、
時間になったら寝たり、時間帯のつぶやきを組み合わせようとして
途中までうまくいってたんだけど
文字化けしちゃってうまく出来なかった・・・。
誰かやってうまく行った人居ませんか?
0108nobodyさん2009/10/20(火) 18:25:20ID:???
>>104
@phaさんキタ━━━━(゚∀゚)━━━━!!
待ってます!!!!!!!
0109nobodyさん2009/10/20(火) 18:42:07ID:???
>>104
お世話になってます
0110nobodyさん2009/10/20(火) 18:50:55ID:???
>>107
文字コードの設定を見直してみ
UTF-8になってないと化ける
0111nobodyさん2009/10/20(火) 19:50:08ID:???
cron-job.orgが使い物にならないからxreaでcron動かそうと思ったが設定とか全くわかんね
正直ナメてたわ誰か助けて
0112nobodyさん2009/10/20(火) 20:38:42ID:???
xreaのcronだったら下のほうに解説ないかな。
もしくはcronでぐぐって設定とかをちょっと勉強するのがよいかも。
0113nobodyさん2009/10/20(火) 20:45:56ID:???
とりあえず、シェルっていうのが必要ということはわかった
このシェルスクリプトをサーバーにうpして、それにアクセスするとnotfoundになるんだけど間違ってるから?

#!/bin/sh
/usr/local/bin/php /virtual/ユーザID/public_html/reply.php
exit

見よう見まねでこんな感じでやってみたんだけど
0114nobodyさん2009/10/20(火) 20:56:17ID:???
>>110
それがUTF-8になってるんだよね。
一度消してうpしなおしても駄目でさ、エラーも出るんだけど、文字化けしてつぶやかれてるし。
カスタマイズ前でつぶやけば文字化けしないんだけども。
もうちんぷんかんぷん。
PHP素人が調子に乗って弄るもんじゃないね。

>>111
私もよく解らないから例だけども。
改行コードを「LF」保存で「cron1.sh」(他の名前でも.shだったらおk)ってファイルを作成。

#!/bin/sh
#PHP
/usr/local/bin/php /virtual/ユーザー名/public_html/botフォルダとか/動かしたい.php
exit

で、logとかpublic_htmlフォルダとか色々所らへんに「cron1.sh」をうp
属性は「705」あたりで平気だと思う。(うpする場所は他の所でも多分大丈夫だと思う。)
ログインしてCOREジョブページで設定。
毎時間0分動かしたい場合は「分」に「0」毎時間15分に動かしたい場合は「分」に「15」を入力
/virtual/ユーザー名/〜には「cron1.sh」を置いた場所を指定
例どおりだったら

/virtual/ユーザー名/cron1.sh

一時間に1回が限度だから時間をずらして設定1、設定2とか
やれば一時間に複数回動かすことが出来るっぽい
で「保存」して反映されれば動くっと。
説明ヘタクソでごめん・・・これで解るといいんだけど・・・

長々と失礼しました。
0115nobodyさん2009/10/20(火) 21:02:14ID:???
>>114
詳しい説明ありがとう
この改行コードってのがググった時にも出てきたんだがこれはどこで設定できるんだ?
0116nobodyさん2009/10/20(火) 21:14:40ID:???
>>115
×COREジョブ ○CRONジョブ
ごめん。

自分はテキストエディタTeraPadで「ファイル」→「文字/改行コード指定保存」で指定出来たよ
何のテキストエディタでcron1.shを作るかによって変わると思うから
使ってるテキストエディタで改行コードについてググればいいんじゃないかな?
0117nobodyさん2009/10/20(火) 21:41:44ID:???
>>116
�dクス
とりあえず言われた通りに設置してみた
相変わらずcron.shはNot Foundになるが…大丈夫なのか
0118nobodyさん2009/10/20(火) 21:58:03ID:???
Not Found?
ファイルが無いって意味じゃないっけ?
ファイルのURL間違えてない?
0119nobodyさん2009/10/20(火) 22:21:59ID:???
cronがちゃんと実行されてるとメールが来るはずだよな
来ないということは実行されてないってことなのか
0120nobodyさん2009/10/20(火) 22:23:37ID:???
xreaってメール来るんだっけ。
僕は使ってるけど来てないな。設定によるのかもしれないが
0121nobodyさん2009/10/20(火) 22:40:53ID:???
なにがおかしいのか動作しないっぽい
こんだけ丁寧に教えてもらったのに申し訳ない…
手動ではちゃんと動くからcronの設定が間違ってるんだろうけど
0122nobodyさん2009/10/20(火) 23:49:43ID:???
10のプログラムの方のソースで、TL引用するbot作れんかなと思って、それを元に色んな所を参考にしてやってるんだが
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:???
あー、やっぱりcron-job調子悪いのか…

2つBOT置いてるのに片方が反応しても片方が一日沈黙している。
別鯖探してるけれどなかなかいいのがないなぁ。
改変もエラーばかりだし、なんでBOT作ったのか自分でもわかんなくなってきたよ


いや、でも負けないけどさ。
0124nobodyさん2009/10/21(水) 08:57:38ID:???
8bitさんのコメにあるのと同じ質問で申し訳ないのですが
リプライに対する反応語句を増やすにはどこを増やしていじればよいのですか?
if構文から見て自分なりに増やしても、反応すらしてくれません。
0125nobodyさん2009/10/21(水) 09:25:24ID:???
>>123
自鯖?
cronでこけるときって文字エンコードがらみが経験上多い。
普通にコマンドラインで動かすと動くんだけど、cronで動かないとか。
print文とかあったらコメントアウトしてみるとか

レンタル鯖でcronはあきらめたほうがいい
01261232009/10/21(水) 10:15:59ID:???
>>125
ありがとー 自鯖じゃなくて、銀さんのところで見た@PAGES使ってる。
いかんせん初心者@勉強中なもんで、ソースはいじらずに使ってるだけなんだけど
昨日くらいからcron-jobが全く動かなくなってしまってる。
超過エラーは出ててもそれまでは動いてたんで、元鯖が不調なせいかなと思ってた。
手動ならおkぽいから、phpは平気(当然だが)なんだけどね。

>レンタル鯖でcronはあきらめたほうがいい
あー…もう素直にBOT手放すしかないのかなあ…PHP楽しいのに。
0127nobodyさん2009/10/21(水) 10:36:05ID:???
cron-job.org安定しないよなー…
他にcron使える手段が自分にはないから仕方ないけど
ときどき実行に失敗するのは我慢できるが
勝手にアクティブ設定が無効になるのは勘弁してほしい
0128nobodyさん2009/10/21(水) 11:34:03ID:???
有料だけどすごく安いのでwebcron.orgはどうかしら
0129nobodyさん2009/10/21(水) 11:38:32ID:???
webcron.org使ってるけど動作は安定してると思う。
webcron.orgも昔は無料だったんだけど、無料である程度人が集まった時点で有料化された。
なのでそのうちcron-job.orgもそのうち有料化されて、そしたら動作も安定するんじゃないかと思ってる
0130nobodyさん2009/10/21(水) 11:58:44ID:???
いろいろと本格的にやりたいんならsheevaplug買えばいいよ
玄人から出るみたいだし
0131nobodyさん2009/10/21(水) 19:56:40ID:???
シェルスクリプトって文字コードUTF-8でいいの?
0132nobodyさん2009/10/21(水) 20:19:29ID:???
>>79>>87>>95
googleappengine使えば、好きなだけcron設定できるよ
0133nobodyさん2009/10/21(水) 20:43:51ID:???
>>132
今GAEが対応してる言語ってpythonかjavaだけじゃない?
php対応してたら使いたいけどなー

>>>79>>87>>95
>googleappengine使えば、好きなだけcron設定できるよ
0134nobodyさん2009/10/21(水) 21:23:16ID:???
pythonでいいじゃん
0135nobodyさん2009/10/21(水) 21:26:06ID:???
制限あるじゃん
0136nobodyさん2009/10/21(水) 23:03:06ID:???
自分のPCにapacheとphpインストールしてcron動かせばいいじゃん
立ち上げっぱなしになるのがネックだけど
0137nobodyさん2009/10/22(木) 00:00:16ID:???
@phaです。
プログラミングができなくても作れるTwitter botの作り方
http://pha22.net/text/twitterbot.html
少しバージョンアップしました。
特定の単語に特定の単語を返す機能と、現在の時間を組み込める機能を付けました。
よかったら試してみてくださいー
0138nobodyさん2009/10/22(木) 00:10:26ID:???
>>137
お疲れ様です。
0139nobodyさん2009/10/22(木) 05:06:11ID:???
>>137
本当に有難う。
0140nobodyさん2009/10/22(木) 07:38:40ID:???
>>137
ありがとうございます!
0141nobodyさん2009/10/22(木) 08:23:56ID:???
>>137
いけました!
有難う御座います!!
しかし、中身に記載されてるバージョンが1.1のまんまでしたよー
0142nobodyさん2009/10/22(木) 14:33:42ID:???
リプライをもらうと@だけ発言する、うちのボット…
0143nobodyさん2009/10/22(木) 15:09:08ID:???
>>142
確実にソースが間違ってる。がんがれ
0144nobodyさん2009/10/22(木) 17:51:54ID:???
>>141
バージョン直しました
0145nobodyさん2009/10/22(木) 18:32:14ID:???
おつかれさまです!!!!
0146nobodyさん2009/10/22(木) 19:04:13ID:???
自分のbotが他のbotにフォローされてるんだけどフォロー返したら会話がループしそうなんだよな
0147nobodyさん2009/10/22(木) 19:14:00ID:???
この新しいreply_patternってやつをreply_randomに組み込めばいいんだよね?
なんかエラー吐くんだけどどこに置けば?
0148nobodyさん2009/10/22(木) 19:37:46ID:???
たまにリプライするとき@の前にドットつけてるbotいるけど何の意味があんの?
0149nobodyさん2009/10/22(木) 20:45:08ID:???
>>147
reply_pattern.php のファイルの場所を移動させなくてもそのまま置いておけばできたよ
0150nobodyさん2009/10/22(木) 21:26:28ID:???
>>143
だよねぇ。。
がんばるわ。
0151nobodyさん2009/10/22(木) 23:02:20ID:???
>>137
ありがとうございましたー!!
でも動かないー!
0152nobodyさん2009/10/23(金) 00:01:49ID:???
>>151
どんな状態で動かない?
0153nobodyさん2009/10/23(金) 00:20:42ID:???
>152
反応が全くない。TL上のワードを拾うわけじゃないんですよね?
普通に@無視される…
まぁ、@つけても無視されるんですが。おやすみ入れてもスルー。
0154nobodyさん2009/10/23(金) 01:31:51ID:???
>>137
本当にありがとうございますー!
今まで特定の語句への返信は、
phaさんのを参考にして作ったという某ブログのスクリプトを使っていたんですが
こちらの方がすっきりしていてサイズが小さく済む+追加しやすいのでこちらに変えました
定期ランダムポスト+特定の語句へのリプライはphaさんのスクリプト
TLから特定の語句を拾ってのリプライは某ブログのスクリプトという
合わせ技でもなんとか動いてます
こんなに使いやすいスクリプトを作って下さり、本当にありがとうございました
0155nobodyさん2009/10/23(金) 07:18:12ID:???
>>137
構文を追加したらRT対策が解除される、ということは不可能でしょうか?
.@での挨拶が多いので対応出来なくて…
0156nobodyさん2009/10/23(金) 12:22:52ID:???
リプライの応用で、特定のワードには反応しないってことはできるのかな?
0157nobodyさん2009/10/23(金) 12:44:10ID:???
phaさんのリプライ返すのを改変してTL中にキーワードがあったら返すのつくってるんだが
自分の発言にキーワードがあった場合やリプライ時でも返してしまう
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:???
>>157
datファイルをつくってそこに最新のTLを蓄積
$host = "http://twitter.com/statuses/friends_timeline.xml";

ってやったほうがいいかも
0160nobodyさん2009/10/23(金) 14:26:03ID:???
>>158
全然投稿で着てないわけじゃないんでしょ?
だったらやっぱり重複制限に引っ掛かってるのかもしれないから
適当にtxtファイルの中身増やしてテストしてみたら?
0161nobodyさん2009/10/23(金) 16:46:40ID:???
cron-job.org落ちた?
0162nobodyさん2009/10/23(金) 16:49:29ID:???
落ちてるね
■ このスレッドは過去ログ倉庫に格納されています