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



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