Commit e0b1223

mo <mo.khan@gmail.com>
2018-04-28 04:24:29
do not reply to own messages.
1 parent 3f09f3e
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