Rieceで特定単語に対してGrowlを反応させる

「それLimechatでできるよ」なんだけど、Rieceでやってみた。

まず、~/.riece/initファイルを編集。

(setq riece-server "ircnet"
  riece-server-alist
    '(("ircnet" :host "irc.tokyo.wide.ad.jp")
      ("freenode" :host "chat.freenode.net" :coding utf-8)
      ("twitter" :host "localhost" :username "name" :nickname "name" :password "password" :service 16668 :coding utf-8)
      ("gmail" :host "localhost" :username "name" :nickname "name" :realname "name@gmail.com" :password "password" :service 16800 :coding utf-8)
))
(setq riece-startup-server-list '("twitter" "gmail" "freenode"))
(setq riece-startup-channel-list
  '("#gmail gmail" "#1986 freenode" "#twitter twitter"))

passが直書きなのはどうなのか…ってところですが、これでとりあえず、rieceでlogを見るところまでできた。

次にgrowlに通知するところだけど、Rubyで適当に書く。

#! /opt/local/bin/ruby
require 'rubygems'
require 'ruby-growl'

g = Growl.new("localhost", "ruby-growl", ["ruby-growl Notification"],nil,"growl")
g.notify("ruby-growl Notification",ARGV[0],ARGV[(1..ARGV.length)].join(" "))

実質2行とかやばす。

で、このスクリプトを実行させるためのやつを.emacsに書いておく。

(setq riece-keywords '("syou6162" "syou"))

(add-hook 'riece-keyword-notify-functions
	  (lambda (keyword message)
	    (progn
	      (start-process-shell-command "riece-keyword-notify" nil "~/ruby/growl.rb" 
					   (riece-format-identity (riece-message-speaker message) t)
					   (riece-message-text message))
	      message)))

するとgrowlで適当にnotifyしてくれる。本当は特定userに対してやりたいんだけど、まあちょっと置いておく。