【Ubuntu】Ruby で Skype bot を作る
前回(0から Linux に Ruby を導入する - seconの日記)で Ubuntu 上での Ruby 環境を構築したので、今回はそれを活かして Skype bot を作ってみる。
もとい Skype bot を作るために環境を整えたのだけどね。
今回は、特定の単語に反応する bot を作っていく。
今回やること
Skype のインストール
bot 用のアカウントは既に作ってある前提で進めるので、無い場合は作っておく。
Skypeのインストールは Ubuntu 上で行う。
http://www.skype.com/ja/
ページ下部にある Skype のダウンロード → Linux を選択。ディストリビューションは Ubuntu 12.04 (multiarch)を選び、ダウンロードが始まったら保存する。
ダウンロードが完了したらターミナルを開き、次のコマンドを入力。
$ skype
スカイプが開いたらOK。
エディタのインストール
最初からインストールされているテキストエディタ(gedit)でもよいのだけれど、折角なので別のものをインストールしてみる。
という訳で Sublime Text 2 をインストールする。他に使いたいものがあればそちらをインストールすると良い。
$ sudo add-apt-repository ppa:webupd8team/sublime-text-2 $ sudo apt-get update $ sudo apt-get install sublime-text
これでインストール完了。起動するときはこう。
$ sublime-text
Launcher に登録しておくと便利かもしれない。
このままだと日本語が入力できないので、さらにパッケージをインストール。
$ cd ~/.config/sublime-text-2/Packages $ git clone https://github.com/xgenvn/InputHelper.git
こうすることで、[Ctrl + Shift + Z] で日本語入力用のウィンドウが立ちあがる。
Skype bot の作成
やっと環境が整った、といいたいところだけどその前に gem をインストール。
$ gem install skype ruby-dbus
とりあえずこれでOK。
それと、
/home/secon/src/ruby/skypebot
のようにスクリプトファイルを保存する用のディレクトリを先に作っておく。
では、 Skype bot 用のスクリプトファイルを作っていく。
require 'rubygems' require 'skype' Skype.config :app_name => "my_skype_app" # bot のユーザー名 hearing_threshold = 10 last_id = 0 last_time = Time.now.to_i loop do Skype.chats.each do |chat| chat.messages.each do |m| next unless last_id < m.id last_time = m.time.to_i next unless Time.now.to_i - last_time < hearing_threshold # 過去ログの発言に反応するのを防止 chat.post "pong" if m.body.include? "ping" last_id = m.id end end sleep 1 end
Ruby ファイルとして skypebot ディレクトリに保存し、実行してみる。
bot の名前は alice にした。
alice さんは「ping」と打つと「pong」と返してくれる。
もちろん複数の言葉に反応することも可能。
グヘヘ。
対応する言葉さえ作ってしまえば言わせたい放題である。プロフィール画像をかわいい女の子にしてしまえばもう完璧。
組み合わせは無限大、自分だけの bot を作ってみてはいかがだろうか。