トップ «前の日記(2006-10-19) 最新 次の日記(2006-10-23)» 編集

Route 477



2006-10-22

[ruby] delegate.rbとfowardable.rbってどう違うの?

違いは、

  • Forwardableは指定したメソッドのみを委譲する
  • Delegateはぜんぶのメソッドを委譲する

です。(参考:るびま:標準添付ライブラリ紹介 【第 6 回】 委譲)

つーか、Forwardableってそもそもmethod_missing使ってないんですね*1

*1 *_evalでメソッドをひとつずつ定義する

[ruby] はじめてのnadoka bot

nadokaのbotを書いてみたよ。

まず以下の内容で plugin/testbot.nb を保存する。(/somewhere/nadokabot/testbot.nbでもいい)

class TestBot < Nadoka::NDK_Bot
  def on_privmsg prefix, ch, msg
    if ch=="#example:*.jp"  #チャンネル名が %example の場合
      send_notice(ch, "#{prefix.inspect} ! #{ch.inspect} ! #{msg.inspect}")
    end
  end
end

次に、nadokarcを以下のように書き換える。

BotFiles = [
 'testbot'
]

(testbot.nbをplugin/以外に置いた場合は、以下も)

Plugins_dir = ['./plugins', '/somewhere/nadokabot']

で、bot経由で「/nadoka reload」と発言する。"configuration reloaded"と帰ってきたら成功。

あとは、指定したチャンネルで適当になんか喋ると、botが

00:02 (yhara) #<Nadoka::NDK_Manager::PrefixObject:0x4039ca28 @user="yhara", @nick="yhara",
  @prefix="yhara!yhara@NadokaProgram", @host="NadokaProgram"> ! "#example:*.jp" ! "hoge"

みたいな感じで発言するはず。

あとは発言内容を変えるなりなんなり。

日本語を発言したいときは、

send_notice(ch, "こんにちは".tojis)

のようにjisコードに変換してやらないと文字化けすると思います。