Class: Lita::Adapters::Tox

Inherits:
Adapter
  • Object
show all
Defined in:
lib/lita/adapters/tox.rb

Overview

Tox adapter for the Lita chat bot.

Instance Method Summary collapse

Constructor Details

#initialize(robot) ⇒ Tox

Returns a new instance of Tox.



18
19
20
21
22
23
24
25
26
27
28
29
30
31
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
# File 'lib/lita/adapters/tox.rb', line 18

def initialize(robot)
  super

  options = ::Tox::Options.new

  if config.savedata_filename && File.exist?(config.savedata_filename)
    savedata_file = open(config.savedata_filename)
    options.data = savedata_file.read
    savedata_file.close
  end

  @tox = ::Tox.new(options)

  log.info("ID: #{@tox.id}")

  @tox.name = robot.name if robot.name
  @tox.status_message = config.status if config.status

  @tox.on_friend_request do |key|
    @tox.friend_add_norequest(key)
  end

  @tox.on_friend_message do |friend_number, text|
    user = User.new(friend_number)
    source = Source.new(user: user)
    message = Message.new(robot, text, source)

    message.command!
    robot.receive(message)
  end

  @tox.on_group_invite do |friend_number, data|
    @tox.join_groupchat(friend_number, data)
  end

  @tox.on_group_message do |group_number, peer_number, text|
    unless @tox.group_peernumber_is_ours(group_number, peer_number)
      user = User.new(-1 - peer_number) # TODO
      source = Source.new(user: user, room: group_number)
      message = Message.new(robot, text, source)

      robot.receive(message)
    end
  end
end

Instance Method Details

#runObject



64
65
66
# File 'lib/lita/adapters/tox.rb', line 64

def run
  @tox.loop
end

#send_messages(target, messages) ⇒ Object



78
79
80
81
82
83
84
85
86
# File 'lib/lita/adapters/tox.rb', line 78

def send_messages(target, messages)
  messages.reject(&:empty?).each do |message|
    if target.user.id.to_i >= 0
      @tox.friend_send_message(target.user.id.to_i, message)
    else
      @tox.group_message_send(target.room.to_i, message)
    end
  end
end

#shut_downObject



68
69
70
71
72
73
74
75
76
# File 'lib/lita/adapters/tox.rb', line 68

def shut_down
  if config.savedata_filename
    savedata_file = open(config.savedata_filename, 'w')
    savedata_file.write(@tox.savedata)
    savedata_file.close
  end

  @tox.kill
end