Class: Atig::Channel::List

Inherits:
Object
  • Object
show all
Defined in:
lib/atig/channel/list.rb

Defined Under Namespace

Classes: Handler

Instance Method Summary collapse

Constructor Details

#initialize(context, gateway, db) ⇒ List

Returns a new instance of List.



32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
# File 'lib/atig/channel/list.rb', line 32

def initialize(context, gateway, db)
  @channels = Hash.new do|hash,name|
    channel = gateway.channel "##{name}", :handler => Handler.new(db, name)
    channel.join_me
    hash[name] = channel
  end

  db.statuses.listen do|entry|
    if entry.source == :list then
      @channels[entry.list].message entry
    else
      lists = db.lists.find_by_screen_name(entry.user.screen_name)
      lists.each{|name|
        @channels[name].message entry
      }
    end
  end

  db.statuses.listen do|entry|
    if entry.user.id == db.me.id
      @channels.each{|_,channel|
        channel.topic entry
      }
    end
  end

  db.lists.listen do|kind, name, users|
    case kind
    when :new
      @channels[name].join_me
      @channels[name].join db.lists[name].users
    when :del
      @channels[name].part_me "No longer follow the list #{name}"
    when :join
      @channels[name].join users
    when :part
      @channels[name].part users
    when :mode
    end
  end
end