Commit e0b1223
Changed files (5)
lib/del/connection.rb
@@ -55,9 +55,16 @@ module Del
client.send(message)
end
+ def deliver_to_room(jid, message)
+ muc = @mucs[jid.strip.to_s]
+ muc.say(encode_string(message)) if muc
+ end
+
def disconnect
puts "byte me!"
client.close
+ rescue IOError, SystemCallError => error
+ Del.logger.error(error)
end
private
lib/del/default_router.rb
@@ -2,6 +2,8 @@ module Del
class DefaultRouter
def route(message)
Del.logger.info(message.to_s)
+
+ message.reply(message.text.reverse)
end
end
end
lib/del/message.rb
@@ -8,6 +8,10 @@ module Del
@source = source
end
+ def reply(message)
+ source.reply(robot, message)
+ end
+
def to_s
"#{source}: #{text}"
end
lib/del/robot.rb
@@ -2,10 +2,11 @@ module Del
class Robot
attr_reader :connection, :router
attr_reader :users, :rooms
- attr_reader :name
+ attr_reader :jid, :name
def initialize(configuration:)
@connection = Connection.new(configuration: configuration)
+ @jid = configuration[:jid]
@name = configuration[:name]
@router = configuration[:router]
@users = configuration[:users]
@@ -20,11 +21,16 @@ module Del
end
def receive(message, source:)
+ return if source.from?(self)
router.route(Message.new(message, robot: self, source: source))
end
- def send_message(jid, message)
- connection.deliver(jid, message)
+ def send_message(jid, message, room: nil)
+ if room.nil?
+ connection.deliver(jid, message)
+ else
+ connection.deliver_to_room(room, message)
+ end
end
end
end
lib/del/source.rb
@@ -7,6 +7,14 @@ module Del
@room = room
end
+ def from?(robot)
+ user.attributes.jid == robot.jid.to_s
+ end
+
+ def reply(robot, message)
+ robot.send_message(user.jid, message, room: room)
+ end
+
def to_s
"#{user.mention_name}:#{room}:"
end