From 4f3e91223c75ee70705de468ae640c0e12b6a349 Mon Sep 17 00:00:00 2001
From: Adhidarma Hadiwinoto <adhisimon@gmail.com>
Date: Tue, 17 Mar 2015 23:30:25 +0700
Subject: [PATCH] relay message from admin

---
 index.js | 33 ++++++++++++++++++++++++++-------
 1 file changed, 26 insertions(+), 7 deletions(-)

diff --git a/index.js b/index.js
index d81e280..1b83833 100644
--- a/index.js
+++ b/index.js
@@ -22,12 +22,16 @@ function isAdmin(user) {
   return (admins.indexOf(user) >= 0);
 }
 
-function broadcast(destinations, message) {
+function broadcast(destinations, message, exclude) {
     var destinations = destinations.split(',');
     var destinationCount = destinations.length;
 
     for (var i=0; i < destinationCount; i++) {
-        destination = destinations[i]
+        destination = destinations[i];
+        if (destination == exclude) {
+            continue;
+        }
+
         logger.info('Sending message to ' + destination);
         YahooMessenger.sendPM(destination, message);
     }
@@ -85,6 +89,7 @@ function onYmLoginSuccesful(data){
 }
 
 function onYmPM(data) {
+    var direction = 'IN';
 
     if (config.globals.debug == 1) {
       console.log(data);
@@ -100,15 +105,13 @@ function onYmPM(data) {
         loggedPM = loggedPM.slice(0, 10);
     }
 
-    direction = 'IN';
-
     partner = data.sender;
-    if (partner = data.sender) {
+    if (partner == data.user_id) {
         partner = data.target_user;
         direction = 'OUT';
     }
 
-    var message = striptags(data.message)
+    var message = striptags(data.message).trim();
 
     logger.info('New ' + direction + ' message from ' + data.sender + ' to ' +  data.target_user + ': ' + message);
 
@@ -129,7 +132,23 @@ function onYmPM(data) {
         sentdate
     );
 
-    broadcast(config.yahoomessenger.report_to, '@' + data.sender + ': ' + message);
+    broadcast(config.yahoomessenger.report_to, '@' + data.sender + ': ' + message, partner);
+
+    if ((direction == 'IN') && (isAdmin(partner))) {
+        if (message.charAt(0) == '@') {
+            target = message.split(' ', 1).join();
+            target = target.slice(1);
+
+            var messageToForward = message.replace('@' + target, '').trim();
+            if (messageToForward == '') {
+                return;
+            }
+
+            logger.info('Forward to ' + target + ': ' + messageToForward);
+            YahooMessenger.sendPM(target, '@' + partner + ': ' + messageToForward);
+        }
+
+    }
 }
 
 function onYmBuddyAddRequest(data) {
-- 
1.9.0