大五郎BOTとは?
知っている人は知っているTwitterBotです。
マルコフ連鎖で適当につぶやいたりリプをしたり、挨拶や任意のキーワードに反応します。
つくば市の天気予報機能、電卓機能、n進数変換器など便利な機能を搭載しています。
名言集
色々あって、favstar.fmから BAN されてしまいました。
替わりに、aclogに登録してます。
機能紹介
つくば市の天気予報機能
例
@daigoroubot 天気
=>今日のつくばの天気は、晴れなのだ。最高気温9℃なのだ。http://goo.gl/IPAuV
@daigoroubot 明日 天気
=>明日のつくばの天気は、晴れなのだ。最高気温9℃、最低気温-1℃なのだ。http://goo.gl/IPAuV
解説
つくば市の天気予報機能なので、茨城県つくば市の天気にしか対応していません。
(今日|明日|明後日)
のつくば市の天気に対応しています。
日を省略した場合、午後3時までは今日の天気、それより後は明日の天気を教えてくれます。
天気の情報は、livedoorのWeather Hacks から取得しています。
教室検索機能
- 筑波大学の全学の授業に対応した検索機能です。
- 検索範囲は、現在が春Aモジュールならば、春Aの全ての授業となります。
- 検索は授業名の部分一致で行います。
- 例えば、「システムプログラム」を検索したいときには、「システムプ」などで検索してください。
- 注意点ですが、先頭からの部分一致なので、「プログラム」では「システムプログラム」を検索できません。
- 検索結果が140文字を超えるときは、複数のツイートに分けて結果を返します。
例
@daigoroubot システムプロ
=>GB31401 システムプログラム 春AB 水1,2 3A306
@daigoroubot 力学
=>FCB1014 力学1 春ABC 火3/木1 1D204 FCB1024 力学1 春ABC 火3/木1 1H101 FCC2014 力学3 春ABC 火1 1D204 FF10544 力学I 春AB 月・火6 3A415 FF17514 力学A 春ABC 水2/金1 3A301
FF17524 力学A 春ABC 水2/金1 3A312 FG10414 力学I 春AB 金3,4 3L201 FG10424 力学I 春AB 木3,4 3A202 GB11214 力学 春AB 金3,4 3A416
電卓機能
例
@daigoroubot 1+1
=>2
@daigoroubot 3たす3は?
=>6
@daigoroubot 2**10 #べき乗
=>1024
@daigoroubot √ 5
=>2.23606797749979
@daigoroubot ∑(1..10)
=>55
@daigoroubot ⅞ * ⅔
=>0.5833333333333333
@daigoroubot (0..10).inject([1, 1]) {|fib, i| fib << fib[i] + fib[i+1] }
=>[1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233]
@daigoroubot PI
=>3.141592653589793
@daigoroubot sin(PI)
=>1.2246063538223773e-16
@daigoroubot log e
=>1.0
@daigoroubot log10(100)
=>2.0
@daigoroubot log2(1024)
=>10.0
解説
基本的にはirbみたいな感じに使ってください。
技術的な点だと、Rubyのセーフレベル4などで作ったSandbox環境の中でeval
して、
スレッドを使って設定した時間でタイムアウトするようになっています。
n進数変換器
例
@daigoroubot 0xFF
=>255
@daigoroubot 0b111
=>7
@daigoroubot 1024 2進数
=>1024 = 10000000000(2進数) 1024(2進数) = 2
@daigoroubot 1024を2進数に
=>1024 = 10000000000(2進数)
@daigoroubot ffは16進数で
=>ff(16進数) = 255
解説
なんと2進数から36進数までに対応しています!
えりたんBOT との連携
えりたんBOT(作者: @manse)と連携し、時々散歩に誘ったり誘われたり、誘いを拒んだりします。
午後2時から7時の間に発動します。
設定
大五郎にDMを送ることでいくつかの機能を設定できます。
設定に成功・失敗した場合は、大五郎はDMに返信します。
挨拶の停止と開始
大五郎の挨拶が鬱陶しいときに利用してください。
挨拶を含め、大五郎が一方的に話しかけることがなくなります。(停止状態でもリプをすれば返事をします。)
停止方法
次のようなDMを送ってください。
挨拶するな
挨拶しないで
開始方法(初期状態)
次のようなDMを送ってください。
挨拶
挨拶して
学習の停止と開始
大五郎はTLの発言から言葉を学習するので、稀にパクリツイートをすることがあります。
パクリツイートをされたくない場合に利用してください。
停止方法
次のようなDMを送ってください。
学習停止
学習しないで
パクツイするな
開始方法(初期状態)
次のようなDMを送ってください。
学習開始
学習して
パクツイして
開発方法など
大五郎はRuby1.9.3で開発されており、月額490円のVPS上で動いています。
- 直前の2単語によるマルコフ連鎖。
- 泥臭いアルゴリズムによって語尾の「なのだ」を実装。
- 他のbotに比べれば、設定ファイルでけっこう柔軟に設定できる感じの設計。
ソースコードはgithubに置いてます。