bot制作まとめ
twitterのbot基本動作まとめ
[PR]
×
[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。
2-1.@付きリプライで反応させたい言葉とTL上で反応させたい言葉を区別したい
前述でも述べたようにTL上で「私、このゲーム好きなんだよね」と言ってbotが「私のこと好きなの?!」と勘違いして反応されても困るんです。
そこで、
・TL上では「好き」に反応させたくない
・@付きの発言のみ「好き」に反応させたい
という事になるので。
TL上で反応させたいワードを書き込むファイルをreply_pattern.phpに書くならば、それと中身はそのまんま流用してreply_pattern2.phpとか作ってそっちに@付きの発言のときに反応させたいワードを書けば済む話なんです。
そしたらreply_pattern.phpに「好き」という言葉は入れず、reply_pattern2.phpにのみ「好き」という言葉を登録しとけば良いわけですね。簡単なお話。
次に。@付きリプライの時の反応ワードを入れたのをreply_pattern2.phpとして作ったとして。
TL上では反応ワードが無い限りreply_pattern.php内の言葉を喋ったりはしないのですが、@付きでbot宛てに何か言われた場合、botはreply_pattern2.php内の反応ワードと一致するものがないか探します。
ファイルのダウンロードされた当初の@付きで反応するリプライプログラムはbot.phpでは以下のようになっています。
$response = $eb->reply(2,"data.txt","reply_pattern.php");
まず、@付きの反応ワードはreply_pattern2.phpに書き込むことにしたので
$response = $eb->reply(2,"data.txt","reply_pattern2.php");
になりますね。
「2」の数値は自分がリプライを実行させたい間隔に合わせて下さい。私は2分間隔が良かったので「2」のままです。
ここで、data.txtにbotの喋らせたい言葉を色々書き込んでいた場合、もし受け取った@付きリプライの内容にreply_patter2.phpの反応ワードと一致するものがなかった場合、botはdata.txt内の何かを相手に返す事になります。
例えばbotが「○○」、フォロワーが「□□」というtwitter idだったとして(超適当)
□□「@○○ ご飯食べに行こう!」
と、フォロワーさんから言われても「ご飯」や「食べに」なんて言葉が登録されてなくてdata.txt内の言葉をランダムに掃きだし
○○「@□□ おはよう!今日も良い天気だね!」
とか言われるより
○○「@□□ ごめん。上手く聞き取れなかったみたいだ…」
なんて言われた方が現実味がありますよね。
なので、data.txtと同じ要領で反応ワードに引っ掛からなかった時の返答を書き込んだテキストファイルを(ここではnot.txtとして)作成します。(上手く聞こえなかった・今忙しいの・まだその言葉は勉強中etc...を書き込んでみて下さいな)
で、プログラムは以下のようになります。
$response = $eb->reply(2,"not.txt","reply_pattern2.php");
また、確実に2分間隔で実行させる為に私はこんな感じでプログラムに書き足しています。
*@付きリプライの部分
if(date("i") % 2 === 0){
$response = $eb->reply(2,"not.txt","reply_pattern2.php");
}
*TL上で反応する部分
if(date("i") % 2 === 0){
$response = $eb->replyTimeline(2,"reply_pattern.php");
}
2分間隔じゃなくて5分にしたいなら「date("i") % 5 === 0」「replyTimeline(5,"reply_pattern.php");」のように数値を変えればいいだけです。
この辺のifとかの説明はまた次の時にでも。
そこで、
・TL上では「好き」に反応させたくない
・@付きの発言のみ「好き」に反応させたい
という事になるので。
TL上で反応させたいワードを書き込むファイルをreply_pattern.phpに書くならば、それと中身はそのまんま流用してreply_pattern2.phpとか作ってそっちに@付きの発言のときに反応させたいワードを書けば済む話なんです。
そしたらreply_pattern.phpに「好き」という言葉は入れず、reply_pattern2.phpにのみ「好き」という言葉を登録しとけば良いわけですね。簡単なお話。
次に。@付きリプライの時の反応ワードを入れたのをreply_pattern2.phpとして作ったとして。
TL上では反応ワードが無い限りreply_pattern.php内の言葉を喋ったりはしないのですが、@付きでbot宛てに何か言われた場合、botはreply_pattern2.php内の反応ワードと一致するものがないか探します。
ファイルのダウンロードされた当初の@付きで反応するリプライプログラムはbot.phpでは以下のようになっています。
$response = $eb->reply(2,"data.txt","reply_pattern.php");
まず、@付きの反応ワードはreply_pattern2.phpに書き込むことにしたので
$response = $eb->reply(2,"data.txt","reply_pattern2.php");
になりますね。
「2」の数値は自分がリプライを実行させたい間隔に合わせて下さい。私は2分間隔が良かったので「2」のままです。
ここで、data.txtにbotの喋らせたい言葉を色々書き込んでいた場合、もし受け取った@付きリプライの内容にreply_patter2.phpの反応ワードと一致するものがなかった場合、botはdata.txt内の何かを相手に返す事になります。
例えばbotが「○○」、フォロワーが「□□」というtwitter idだったとして(超適当)
□□「@○○ ご飯食べに行こう!」
と、フォロワーさんから言われても「ご飯」や「食べに」なんて言葉が登録されてなくてdata.txt内の言葉をランダムに掃きだし
○○「@□□ おはよう!今日も良い天気だね!」
とか言われるより
○○「@□□ ごめん。上手く聞き取れなかったみたいだ…」
なんて言われた方が現実味がありますよね。
なので、data.txtと同じ要領で反応ワードに引っ掛からなかった時の返答を書き込んだテキストファイルを(ここではnot.txtとして)作成します。(上手く聞こえなかった・今忙しいの・まだその言葉は勉強中etc...を書き込んでみて下さいな)
で、プログラムは以下のようになります。
$response = $eb->reply(2,"not.txt","reply_pattern2.php");
また、確実に2分間隔で実行させる為に私はこんな感じでプログラムに書き足しています。
*@付きリプライの部分
if(date("i") % 2 === 0){
$response = $eb->reply(2,"not.txt","reply_pattern2.php");
}
*TL上で反応する部分
if(date("i") % 2 === 0){
$response = $eb->replyTimeline(2,"reply_pattern.php");
}
2分間隔じゃなくて5分にしたいなら「date("i") % 5 === 0」「replyTimeline(5,"reply_pattern.php");」のように数値を変えればいいだけです。
この辺のifとかの説明はまた次の時にでも。
PR