Changeset 5936

Show
Ignore:
Timestamp:
01/31/08 13:11:21 (5 years ago)
Author:
cho45
Message:

lang/ruby/net-irc/trunk/examples/lig.rb:

いろいろちゃんと動くように

  • chanop がいないと LimeChat? の rejoin が誤動作してしまうので常に chanop つけるように
  • 自分の nick とかの処理をちゃんとするようにして、JOIN/PART の状態が正常に管理できるように
  • uid をつけるときパイプに(読みやすいのと、ustream ちっく)
Files:
1 modified

Legend:

Unmodified
Added
Removed
  • lang/ruby/net-irc/trunk/examples/lig.rb

    r5933 r5936  
    5050                @lingr.login(@real, @pass) 
    5151                @user_info = @lingr.get_user_info[:response] 
     52 
     53                u_id, o_id, prefix = *make_ids(@user_info) 
     54                post @prefix, NICK, prefix.nick 
    5255        end 
    5356 
     
    6972                        res = res[:response] 
    7073                        res["occupants"].each do |o| 
    71                                 u_id, o_id, nick = *make_ids(o) 
    72                                 post nil, RPL_WHOREPLY, channel, o_id, "lingr.com", "lingr.com", nick, "H", "0 #{o["description"].to_s.gsub(/\s+/, " ")}" 
     74                                u_id, o_id, prefix = *make_ids(o) 
     75                                post nil, RPL_WHOREPLY, channel, o_id, "lingr.com", "lingr.com", prefix.nick, "H", "0 #{o["description"].to_s.gsub(/\s+/, " ")}" 
    7376                        end 
    7477                        post nil, RPL_ENDOFWHO, channel 
     
    8790                        if res[:succeeded] 
    8891                                res[:response]["password"] = password 
    89                                 o_id = res[:response]["occupant_id"] 
    90                                 post "#{@nick}!#{o_id}@lingr.com", JOIN, channel 
     92 
     93                                u_id, o_id, prefix = *make_ids(@user_info) 
     94                                post prefix, JOIN, channel 
     95                                post server_name, MODE, channel, "+o", prefix.nick 
     96 
    9197                                create_observer(channel, res[:response]) 
    9298                        else 
     
    133139                                                        next if m["id"].to_i <= info[:hcounter] 
    134140 
    135                                                         u_id, o_id, nick = *make_ids(m) 
     141                                                        u_id, o_id, prefix = *make_ids(m) 
    136142 
    137143                                                        case m["type"] 
    138144                                                        when "user" 
    139145                                                                if first 
    140                                                                         post nick, NOTICE, chan, m["text"] 
     146                                                                        post prefix, NOTICE, chan, m["text"] 
    141147                                                                else 
    142                                                                         post nick, PRIVMSG, chan, m["text"] unless info[:o_id] == o_id 
     148                                                                        post prefix, PRIVMSG, chan, m["text"] unless info[:o_id] == o_id 
    143149                                                                end 
    144150                                                        when "private" 
    145151                                                                # TODO 
    146                                                                 post nick, PRIVMSG, chan, "\x01ACTION Sent private: #{m["text"]}\x01" unless info[:o_id] == o_id 
     152                                                                post prefix, PRIVMSG, chan, "\x01ACTION Sent private: #{m["text"]}\x01" unless info[:o_id] == o_id 
    147153                                                        when "system:enter" 
    148                                                                 post "#{nick}!#{o_id}@lingr.com", JOIN, chan unless nick == @nick 
     154                                                                _, _, myprefix = *make_ids(@user_info) 
     155                                                                unless prefix.nick == myprefix.nick 
     156                                                                        post prefix, JOIN, chan 
     157                                                                        post server_name, MODE, chan, "+o", prefix.nick 
     158                                                                end 
    149159                                                        when "system:leave" 
    150                                                                 post "#{nick}!#{o_id}@lingr.com", PART, chan unless u_id == @user_info["user_id"] 
     160                                                                _, _, myprefix = *make_ids(@user_info) 
     161                                                                unless prefix.nick == myprefix.nick 
     162                                                                        post prefix, PART, chan 
     163                                                                end 
    151164                                                        when "system:nickname_change" 
    152                                                                 post nick, NOTICE, chan, m["text"] 
     165                                                                post prefix, NOTICE, chan, m["text"] 
    153166                                                        when "system:broadcast" 
    154167                                                                post nil,  NOTICE, chan, m["text"] 
     
    163176                                                                if o["nickname"] 
    164177                                                                        nick = o["nickname"] 
    165                                                                         o_id = m["occupant_id"] 
    166                                                                         post "#{nick}!#{o_id}@lingr.com", JOIN, chan 
     178                                                                        u_id, o_id, prefix = make_ids(o) 
     179 
     180                                                                        post prefix, JOIN, chan 
     181                                                                        post server_name, MODE, chan, "+o", prefix.nick 
    167182                                                                end 
    168183                                                        end 
     
    187202 
    188203        def make_ids(o) 
    189                 u_id = o["user_id"] 
     204                u_id = o["user_id"] || "anon" 
    190205                o_id = o["occupant_id"] || o["id"] 
    191                 nick = o["nickname"].gsub(/\s+/, "") + "^#{u_id || "anon"}" 
    192                 [u_id, o_id, nick] 
     206                nick = (o["default_nickname"] || o["nickname"]).gsub(/\s+/, "") + "|#{u_id}" 
     207                pref = Prefix.new("#{nick}!#{u_id}@lingr.com") 
     208                [u_id, o_id, pref] 
    193209        end 
    194210end