Twitterの方でジョセフbotというものを作ってみました。
一定時間ごと(現在では3時間に1回)に作中の台詞をpostするだけのプログラムです。
ちなみに現段階では未完成で、話しかけられてもreplyを返すことができず、台詞も一部しか搭載できてません(現段階では2話、9話、23話、24話のみ)。
(reply機能追加しました。台詞もほとんど追加完了しています)
reply機能は某所で公開されていたソースコードを試してみたのですが、どういうわけだかcronでの定期実行がうまく動かず、無茶な動かし方をしようとしたところ暴走しましたorz。これは参考にしたソースコードが悪かったというよりも、中途半端に改変したのが悪かったのかもしれません。
ブラウザ経由で動かした時には上手いこと動いたのですが、cronでphpファイルを定期的に実行させようとした時に限ってエラーが出て動きませんでした。なんでだ。
ひとまず現段階でのソースコードを公開しておきます。大元のソースはこちらのページを参考にさせていただきました。
<? /* ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ Twitter Post ver.1.0 https://palemag.kazeki.net/blog/ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ */ $username = "twitterユーザー名"; $password = "twitterパスワード"; $logfile = "bot.txt"; $lines = file($logfile); srand(time()); shuffle($lines); $message = $lines[0]; $params = "status=". rawurlencode($message); $url = "http://twitter.com/statuses/update.xml?"; $fp = fopen($url.$params, 'r', false, stream_context_create(array( "http" => array( "method" => "POST", "header" => "Authorization: Basic ". base64_encode($username. ":". $password) ) ))); $result = ""; while(!feof($fp)){ $result .= fgets($fp); } fclose($fp); ?>
これが一体何をするもんかっちゅーと、「設定したtwitterアカウントに決められた文章をpostする」というプログラムで、つまりphpの動くレンタルサーバーに置いてやったら、アクセスされる度にランダムで1回postするというもの。
基本的な手順としては大体こんな感じになります。
- twitterにbot用のアカウントを作成する。
キャラbotの場合は名前欄にキャラ名を入れたり、プロフィール欄に「○○のbotです」みたいな説明文を入れたり、アイコンをそのキャラの画像にしてみたり色々カスタマイズしてみると宜しいかと思います。
とりあえず今はアカウントだけ作っておけば、アイコンの変更とかは後からゆっくりやっても可。 - 上記のzipファイルをダウンロードして解凍し、「twitter_post.php」の以下の行の””の中身を先ほど作ったtwitterのユーザー名とパスワードに書き換えて保存。
$username = “twitterユーザー名”;
$password = “twitterパスワード”; - 「bot.txt」をテキストエディタで開き、botに喋らせたい内容を一行ずつ書いていって保存。一行につきpost一つ分の内容になるので、一行が140文字を越えないように注意。
※twitter_post.php、bot.txt共に文字コードはUTF-8、改行コードはLFで保存してください。
- 上記のファイル2つをphpの使えるサーバーにアップロードする。
無料サーバーでも、xrea.comとかland.toとか@PAGES等ではphpが使用可能。 - twitter_post.phpのパーミッションに実行権限を与える。
サーバーによって違うかもしれませんが、とりあえず755にしておけば間違いはないはず…
あとはアップロードしたtwitter_post.phpにアクセスしてやれば、そのたびにbotがランダムで発言するわけですが、何もしなくても一定時間事に喋らせたい場合はもう一手間必要になります。
ちなみに自分が借りている80code.comではphpも4と5が使い分けられる上にcronも使用可能という安い割に至れり尽くせりなサーバーなのですが、生憎現在は新規登録を停止している様子です。
cronが使えないレンタルサーバーの場合は、cron-job.orgというサービスを使うのがいいかと思います。指定したurlに指定した時間ごとにアクセスしてくれる大変便利なサービスなのですが、ドイツ語のサイトなのでこのへんのページを参考に登録してください。
cron タスクの設定 【 Cron-job.org の利用】
cronが使える場合は、管理画面のどっかにこんな感じのフォームがあるはずなので、以下のような感じで入力します。
分 | 時 | 日 | 月 | 曜日 | コマンド |
0 | */3 | * | * | * | php -f /var/www/hogehoge/public_html/twitter_post.php |
コマンドの欄にはファイルの絶対パスを放り込めば動くと思っていたのですが、実はそれだけでは動きません。PHPを動かしたいときは絶対パスの前に「php -f 」というのを付けてあげると動くようです。
一時間に一度発言させたい場合はフォームの「分」のところに0〜59の数値を、それ以外の時間のところには「*」と入れてください。3時間に1度の場合は「時」のところを「*/3」にすれば、3時間おきに発言するようになります。
この赤字の部分はphpファイルへの絶対パスを入れる必要があるわけですが、サーバーによって違うのでお使いの環境に合わせて変更してください。
ちなみに自分が説明するまでもなく、ぐぐれば参考になるページは色々と出てきます。はてなブックマークに色々と放り込んでおいたので、参考にしてみてください。