Class: Slacky::Bookkeeper

Inherits:
Object
  • Object
show all
Defined in:
lib/slacky/bookkeeper.rb

Instance Method Summary collapse

Constructor Details

#initialize(client) ⇒ Bookkeeper

Returns a new instance of Bookkeeper.



3
4
5
# File 'lib/slacky/bookkeeper.rb', line 3

def initialize(client)
  @client = client
end

Instance Method Details

#handle_channel(event) ⇒ Object



38
39
40
41
42
43
44
45
46
# File 'lib/slacky/bookkeeper.rb', line 38

def handle_channel(event)
  @client.on event do |data|
    channel_id = data.channel.is_a?(String) ? data.channel : data.channel.id
    Channel.find(channel_id).tap do |channel|
      yield channel, data
      puts "Channel ##{channel.name}: #{event}"
    end
  end
end

#keep_the_booksObject



11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
# File 'lib/slacky/bookkeeper.rb', line 11

def keep_the_books
  @client.on :channel_created do |data|
    web_client.channels_info(channel: data.channel.id).tap do |resp|
      if resp.ok
        channel = Channel.channel resp.channel
        puts "Channel ##{channel.name}: channel_created"
      end
    end
  end

  handle_channel(:channel_deleted)   { |c| c.delete }
  handle_channel(:channel_archive)   { |c| c.archive }
  handle_channel(:channel_unarchive) { |c| c.unarchive }
  handle_channel(:channel_rename)    { |c, data| c.rename data.channel.name }

  @client.on :group_joined do |data|
    next unless data.channel.is_group
    channel = Channel.group data.channel
    puts "Channel ##{channel.name}: group_joined"
  end

  handle_channel(:group_left)        { |g| g.delete }
  handle_channel(:group_archive)     { |g| g.archive }
  handle_channel(:group_unarchive)   { |g| g.unarchive }
  handle_channel(:group_rename)      { |g, data| g.rename data.channel.name }
end

#web_clientObject



7
8
9
# File 'lib/slacky/bookkeeper.rb', line 7

def web_client
  @client.web_client
end