Twitter bot application. (Written in Perl)
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
conf
log
mylib
stats
README.txt
main.pl
sakura-local.tar.bz2
twitter.sh

README.txt

===============================================================================
 粒粒bot Ver. 0.4.0
                                                           2013/07/16 ozuma

    Bot URL:  http://twitter.com/ozumaBot
    配布 URL: http://homepage1.nifty.com/y-osumi/works/code/twitter_bot.htm
===============================================================================


 Twitterで呟いたりしてくれるbotです。
 なるたけ初心者の方に簡単設定しやすいように作ってあるので、そのぶん機能は抑えめです。

 初期設定として、私の敬愛する漫画家・安永航一郎氏の「陸軍中野予備校」に登場する有川雄妻さんっぽくしてみました。


■動作環境
  * UNIX系OS(FreeBSD/Linux) + Perl 5.8以上
  * Perlのモジュールとして YAML / Net::Twitter が必要です


■主な機能
  (1) 1時間に1回、ランダム投稿します。その時間に応じた挨拶も付けられます。
  (2) @id で話しかけられた場合、内容に設定したキーワードが含まれている場合はその返答を、無ければ設定したデフォルト応答をします。


■インストール方法
* 必要なもの
 - ボット用のTwitterアカウント
 - cronが動かせるサーバ
   ※私はさくらのレンタルサーバで動かしています。この場合、Net::Twitter がインストールされていないので自前で入れる必要があります。CPANでホームディレクトリのlocal配下に入れると良いでしょう。
   それが面倒くさいひと向けに、私の $HOME/local 配下をまとめて同梱してあります(sakura-local.tar.bz2)。

* 設定方法
 Twitter のOAuthはなかなかややこしいため、設定が非常に煩雑となっております。
  - 配布ファイルを展開します。
  - (さくらのレンタルサーバの場合)同梱のsakura-local.tar.bz2をホームディレクトリ直下に[local]というディレクトリ名で展開します。Net::Twitterを自前でインストールしている場合は、この項目は必要ありません。
  - 以下のブログ記事にまとめた通り、Access TokenとAccess Token Secretを取得します。
  http://d.hatena.ne.jp/ozuma/20121230/1356801529
    = 上記エントリ内の「Access TokenとSecretの取得」を参照。
    = このアプリのConsumer keyは、mylib/Twitter.pm 内に直接書いてありますのでそちらを参照。
  - 得られたacess_tokenとaccess_secretを、conf/token.txt に入力してください
  - conf/greeting.txt, conf/random_message.txt, conf/reply_keyword.txt の3つを好きなようにいじります。詳細は「メッセージファイルの書き方」を参照。
  - twitter.shを開き、PERL5LIBなどの変数を、Net::Twitterをインストールした適切なディレクトリに設定します。私の場合は$HOME/localにPerlモジュールを入れているのでその設定を入れてありますが、システムディレクトリに既に入っているならこの設定は不要。
  - ファイル全てを、botを動かすサーバにコピーします。confフォルダやmylibフォルダもそのままコピー。
  - main.pl と twitter.sh の二つのファイルに実行権限(Execute)を加えます。(説明によって、「+x(プラスx)する」とか「eXecuteにチェックを入れる」とか「パーミッションを755にする」とか書かれています)
  - 通常は既にWrite権限が付いているはずなので設定は要らないはずですが、stats/random_meslog.txt と stats/sinceid.txt の二つのファイルに書き込み権限(Write)を加えます。「+wする」とか書かれているのではないかと。
  - サーバでcron登録し、twitter.shを実行します。10分ごとくらいが適当でしょう。
    例) */10 * * * * /home/ozuma/bin/twitter_bot/twitter.sh > /dev/null


■メッセージファイルの書き方
* はじめに
 confフォルダ内の greeting.txt, random_message.txt, reply_keyword.txt をいじることにより、ボットの返答メッセージを変えることができます。
 なおこれらのファイルは初期設定のままでもボットは正常に動きますので、まずはデフォルト状態での正常動作を確認してからカスタマイズしてください。

* 記入方法
 メッセージファイルはYAML形式というテキストファイルで書いてあり、テキストエディタ(メモ帳など)で編集できます。

 行頭のハイフン(-)およびキーワード設定部のコロン(:)の後ろに半角スペース[ ]が一つ入っていますが、これが無いとエラーになります。メッセージを変更する場合、この半角スペースを忘れないようにしてください。
 最終行には必ず改行が必要です。最終行に改行が無い場合もエラーになります。
 また、YAMLの仕様で先頭にアットマークが書けないため、@bot_id も書けません。

 行頭が「#」になっている行はコメント行として無視されます。

 ところどころ、ネスト(入れ子)されている部分があります。この場合、行頭にスペースを2個入れて字下げしてあります。ここはTABでは代用できませんので注意してください、必ずスペースです。

 例) [おはよう:                        ]
      [  - おはようございます!         ]
      [  - ……今日は機嫌悪い……       ]
      [  - twiter:nameさん、おっはよー!]

* ファイルの種類
  3つのファイルは、
    random_message.txt : ランダムメッセージ
    greeting.txt       : 挨拶文章
    reply_keyword.txt  : 応答キーワード設定
  になっています。

* ランダムメッセージ
  これは、見れば分かりますね。ひたすら箇条書きで並べるだけです。
  適当に追加するなり変更するなりしてください。

* 挨拶文章
 挨拶文章は、それぞれの時間ごとの設定ができます。通常、ボットは1時間に1回呟きます。この際、挨拶文章ファイルの「22:」の行を変更すれば、22:00台の挨拶が変わるというわけです。
 挨拶文を定型文にしたい場合は、そのまま書いてください。ランダムメッセージを出したい場合は、その部分を「mes:random」という文字列で書いてください。実行時にランダムメッセージに置き換えます。
 同一時刻に、特定の複数のメッセージをランダムに出したい場合は、該当時刻の文章を字下げして箇条書きで挨拶を記入してください。この際も「mes:random」が使えます。
 またコメントアウト(先頭にシャープ#を付ける)しておけば、その時間は挨拶自体を行いません。

 >> 例) [13: うへー。]  --> 13時台は「うへー。」といつも呟きます。
 >> 例) [13: mes:random]  --> 13時台はいつもランダムに呟きます。
 >> 例) [#13: ]  --> 13時台は呟きをしません。
 >> 例) [13:                                   ]  --> 13時台は以下3つからランダムに
          [  - お昼ご飯は食べた?                ]      呟きます。また3つめを選択した
          [  - 眠いわぁ。                        ]      場合は、ランダムメッセージに
          [  - でも「mes:random」とも言うわよ。  ]      置き換えられます。

* 応答キーワード設定
 他ユーザへの応答については、
>> キーワード: 応答メッセージ
 と設定します。キーワードを含む mention (@idで話しかけられること)を受けた場合、そのキーワードに設定した返答をします。
 どのキーワードにも一致しない mention には、 'default' の応答を返します。そのため、カスタマイズする際には 'default' は項目ごと消さないようにしてください。

 また応答メッセージには、「twitter:name」と書いておくことで、相手の名前を埋め込むことができます。
>> 例) [オヤスミ: はい、twitter:nameさんオヤスミナサイ。]
※キーワードとメッセージの区切りは、「コロン+半角スペース」ということを忘れないでください。間違えると動きません。

 応答メッセージも、同一キーワードに対して複数のメッセージをランダムに出すことができます。その際は挨拶文章と同様に字下げして箇条書きします。
>> 例) [おはよう:                             ]  --> 「おはよう」を含む mention (おは
         [  - おっはよー!                      ]      ようございます、など)を受けた際に、
         [  - おはよう……飲み過ぎた……。      ]      3つからランダムで選んで返答をしま
         [  - twitter:nameさん、おはよう!      ]      す。

 応答のキーワードは書かれている順に上から評価します。そのため、短いキーワードや、ボットの名前はなるたけ下の方に書いて優先順位を下げるのがコツです。
>> 例) [おはよう: おっはよー!                ]
         [おは: おっはー!                      ]
         [好き: あたしも好きよ!                ]
         [雄妻さん: なになに?                  ]
  -->「雄妻さん、好きです」というmentionには、「あたしも好きよ!」と返します。
      また「雄妻さん!」には「なになに?」と返します。


■ライセンス/配布条件
 このソフトウェアによって利用者または第三者が何らかの被害を受けた場合、作者はその責任を一切負いません。
 この事を承諾する限りにおいて、このソフトウェアは、誰でも作者に断りなく利用・改変・配布できます。改変版を再配布する場合も連絡は要りません。


■作者
 ご意見ご要望・ご質問等は以下へ。
 設置方法の質問等、お気軽にメールちょうだいな

      id: ozuma
  mailto: zam00332@nifty.com
     web: http://homepage1.nifty.com/y-osumi/
 twitter: http://twitter.com/ozuma5119

[EOF]