示例#1
0
  self.sonarr.get('rootfolder').then(function(result) {
    if (!result.length) {
      throw new Error('Could not get folders, try searching again');
    }

    var folders = result;

    logger.info('user: %s, message: requested to get folder list', self.username);

    var folderList = [], keyboardList = [];
    var response = ['*Found ' + folders.length + ' folders*'];
    _.forEach(folders, function(n, key) {
      folderList.push({ 'path': n.path, 'folderId': n.id });

      response.push('➸ ' + n.path);

      keyboardList.push([n.path]);
    });
    response.push(i18n.__('selectFromMenu'));

    logger.info('user: %s, message: found the following folders %s', self.username, keyboardList.join(','));

    // set cache
    self.cache.set('seriesTypeId' + self.user.id, type.type);
    self.cache.set('seriesFolderList' + self.user.id, folderList);
    self.cache.set('state' + self.user.id, state.sonarr.SEASON_FOLDER);

    return self._sendMessage(response.join('\n'), keyboardList);
  })
示例#2
0
 topic: function() {
   i18stub = {};
   i18stub.locale = "";
   i18stub.data = {};
   i18stub.setLocale = function(str) {
     i18stub.locale = str;
   };
   i18stub.__ = function(str) {
     if(i18stub.data[str]) {
       i18stub.data[str].push(i18stub.locale);
     } else {
       i18stub.data[str] = [ i18stub.locale ];
     }
   };
   fg.setLocalesGeneration(i18stub, [ 'en', 'ru']);
   var f = new fg.Form("TForm", null, null,
                       [ "field1", "text" ],
                       [ "field2", "text", { "class" : fg.__("_name") } ],
                       [ "set", "fieldset", null,
                         [ "field3", "text" ],
                         [ "field4", "text" ] ],
                       [ "field5", "text" ],
                       [ "field6", "text" ] );
   return i18stub.data;
 },
示例#3
0
/*
 * verify admin of the bot
 */
function verifyAdmin(userId) {
  if (isAuthorized(userId)) {
    promptOwnerConfig(userId);
  }

  if (config.bot.owner !== userId) {
    return replyWithError(userId, new Error(i18n.__('adminOnly')));
  }
}
示例#4
0
bot.onText(/\/revoke/, function(msg) {
  var fromId = msg.from.id;

  verifyAdmin(fromId);

  var opts = {};

  if (!acl.allowedUsers.length) {
    var message = 'There aren\'t any allowed users.';

    opts = {
      'disable_web_page_preview': true,
      'parse_mode': 'Markdown',
      'selective': 2,
    };

    return bot.sendMessage(fromId, message, opts);
  }

  var keyboardList = [], keyboardRow = [], revokeList = [];
  var response = ['*Allowed Users:*'];
  _.forEach(acl.allowedUsers, function(n, key) {
    revokeList.push({
      'id': key + 1,
      'userId': n.id,
      'keyboardValue': getTelegramName(n)
    });
    response.push('➸ ' + getTelegramName(n));

    keyboardRow.push(getTelegramName(n));
    if (keyboardRow.length === 2) {
      keyboardList.push(keyboardRow);
      keyboardRow = [];
    }
  });

  response.push(i18n.__('selectFromMenu'));


  if (keyboardRow.length === 1) {
    keyboardList.push([keyboardRow[0]]);
  }

  // set cache
  cache.set('state' + fromId, state.admin.REVOKE);
  cache.set('revokeUserList' + fromId, revokeList);

  return bot.sendMessage(fromId, response.join('\n'), {
    'disable_web_page_preview': true,
    'parse_mode': 'Markdown',
    'selective': 2,
    'reply_markup': JSON.stringify({ keyboard: keyboardList, one_time_keyboard: true }),
  });
});
示例#5
0
 topic: function() {
   var f = new fg.Form("TForm", null, null,
                       [ "field1", "text" ],
                       [ "field2", "text", { "class" : fg.__("_name") } ],
                       [ "set", "fieldset", null,
                         [ "field3", "text" ],
                         [ "field4", "text" ] ],
                       [ "field5", "text" ],
                       [ "field6", "text" ] );
   return f.getContent(i18n);
 },
示例#6
0
SonarrMessage.prototype.sendSeasonFolderList = function(folderName) {
  var self = this;

  var folderList = self.cache.get('seriesFolderList' + self.user.id);
  if (!folderList) {
    return self._sendMessage(new Error('Something went wrong, try searching again'));
  }

  var folder = _.filter(folderList, function(item) { return item.path === folderName; })[0];
  if (!folder) {
    return self._sendMessage(new Error('Something went wrong, try searching again'));
  }

  logger.info('user: %s, message: requested to get season folders list', self.username);

  var seasonFolder = ['yes', 'no'];
  var seasonFolderList = [], keyboardList = [], keyboardRow = [];
  var response = ['*Would you like to use season folders?*'];
  _.forEach(seasonFolder, function(n, key) {
    seasonFolderList.push({ 'type': n });

    response.push('➸ ' + n);

    keyboardRow.push(n);
    if (keyboardRow.length === 2) {
      keyboardList.push(keyboardRow);
      keyboardRow = [];
    }
  });

  if (keyboardRow.length === 1) {
    keyboardList.push([keyboardRow[0]]);
  }

  response.push(i18n.__('selectFromMenu'));

  logger.info('user: %s, message: found the following seasons folder types %s', self.username, keyboardList.join(','));

  self.cache.set('seriesFolderId' + self.user.id, folder.folderId);
  self.cache.set('seriesSeasonFolderList' + self.user.id, seasonFolderList);
  self.cache.set('state' + self.user.id, state.sonarr.ADD_SERIES);

  return self._sendMessage(response.join('\n'), keyboardList);
};
示例#7
0
SonarrMessage.prototype.sendTypeList = function(monitorName) {
  var self = this;

  var monitorList = self.cache.get('seriesMonitorList' + self.user.id);
  if (!monitorList) {
    return self._sendMessage(new Error('Something went wrong, try searching again'));
  }

  var monitor = _.filter(monitorList, function(item) { return item.type === monitorName; })[0];
  if (!monitor) {
    return self._sendMessage(new Error('Something went wrong, try searching again'));
  }

  logger.info('user: %s, message: requested to get series types list', self.username);

  var type = ['standard', 'airs daily', 'anime'];
  var typeList = [], keyboardList = [], keyboardRow = [];
  var response = ['*Select which type of series*'];
  _.forEach(type, function(n, key) {
    typeList.push({ 'type': n });

    response.push('➸ ' + n);

    keyboardRow.push(n);
    if (keyboardRow.length === 2) {
      keyboardList.push(keyboardRow);
      keyboardRow = [];
    }
  });

  if (keyboardRow.length === 1) {
    keyboardList.push([keyboardRow[0]]);
  }

  response.push(i18n.__('selectFromMenu'));

  logger.info('user: %s, message: found the following series types %s', self.username, keyboardList.join(','));

  self.cache.set('seriesMonitorId' + self.user.id, monitor.type);
  self.cache.set('seriesTypeList' + self.user.id, typeList);
  self.cache.set('state' + self.user.id, state.sonarr.FOLDER);

  return self._sendMessage(response.join('\n'), keyboardList);
};
示例#8
0
SonarrMessage.prototype.sendMonitorList = function(profileName) {
  var self = this;

  var profileList = self.cache.get('seriesProfileList' + self.user.id);
  if (!profileList) {
    return self._sendMessage(new Error('Something went wrong, try searching again'));
  }

  var profile = _.filter(profileList, function(item) { return item.name === profileName; })[0];
  if (!profile) {
    return self._sendMessage(new Error('Something went wrong, try searching again'));
  }

  logger.info('user: %s, message: requested to get monitor list', self.username);

  var monitor = ['future', 'all', 'none', 'latest', 'first'];
  var monitorList = [], keyboardList = [], keyboardRow = [];
  var response = ['*Select which seasons to monitor*'];
  _.forEach(monitor, function(n, key) {
    monitorList.push({ 'type': n });

    response.push('➸ ' + n);

    keyboardRow.push(n);
    if (keyboardRow.length === 2) {
      keyboardList.push(keyboardRow);
      keyboardRow = [];
    }
  });

  if (keyboardRow.length === 1) {
    keyboardList.push([keyboardRow[0]]);
  }

  response.push(i18n.__('selectFromMenu'));

  logger.info('user: %s, message: found the following monitor types %s', self.username, keyboardList.join(','));

  self.cache.set('seriesProfileId' + self.user.id, profile.profileId);
  self.cache.set('seriesMonitorList' + self.user.id, monitorList);
  self.cache.set('state' + self.user.id, state.sonarr.TYPE);

  return self._sendMessage(response.join('\n'), keyboardList);
};
示例#9
0
  self.sonarr.get('series/lookup', { 'term': seriesName }).then(function(result) {
    if (!result.length) {
      throw new Error('could not find ' + seriesName + ', try searching again');
    }

    var series = result;

    logger.info('user: %s, message: requested to search for series "%s"', self.username, seriesName);

    var seriesList = [], keyboardList = [];

    series.length = (series.length > config.bot.maxResults ? config.bot.maxResults : series.length);

    var response = ['*Found ' + series.length + ' series *'];

    _.forEach(series, function(n, key) {
      var id = key + 1;
      var keyboardValue = n.title + (n.year ? ' - ' + n.year : '');

      seriesList.push({
        'id': id,
        'title': n.title,
        'year': n.year,
        'tvdbId': n.tvdbId,
        'titleSlug': n.titleSlug,
        'seasons': n.seasons,
        'keyboardValue': keyboardValue
      });

      keyboardList.push([keyboardValue]);

      response.push('➸ ['+keyboardValue+'](http://thetvdb.com/?tab=series&id='+n.tvdbId+')');
    });

    response.push(i18n.__('selectFromMenu'));

    logger.info('user: %s, message: found the following series %s', self.username, keyboardList.join(','));

    // set cache
    self.cache.set('seriesList' + self.user.id, seriesList);
    self.cache.set('state' + self.user.id, state.sonarr.PROFILE);

    return self._sendMessage(response.join('\n'), keyboardList);
  })
示例#10
0
    self.sonarr.get('profile').then(function(result) {
      if (!result.length) {
        throw new Error('Could not get profiles, try searching again');
      }

      var profiles = result;

      logger.info('user: %s, message: requested to get profile list', self.username);

      var profileList = [], keyboardList = [], keyboardRow = [];
      var response = ['*Found ' + profiles.length + ' profiles*'];
      _.forEach(profiles, function(n, key) {

        profileList.push({ 'name': n.name, 'profileId': n.id });
        response.push('➸ ' + n.name);

        // Profile names are short, put two on each custom
        // keyboard row to reduce scrolling
        keyboardRow.push(n.name);
        if (keyboardRow.length === 2) {
          keyboardList.push(keyboardRow);
          keyboardRow = [];
        }
      });

      if (keyboardRow.length === 1) {
        keyboardList.push([keyboardRow[0]]);
      }

      response.push(i18n.__('selectFromMenu'));

      logger.info('user: %s, message: found the following profiles %s', self.username, keyboardList.join(','));

      // set cache
      self.cache.set('state' + self.user.id, state.sonarr.MONITOR);
      self.cache.set('seriesId' + self.user.id, series.id);
      self.cache.set('seriesProfileList' + self.user.id, profileList);

      return self._sendMessage(response.join('\n'), keyboardList);
    })
示例#11
0
/*
 * verify user can use the bot
 */
function verifyUser(userId) {
  if (_.some(acl.allowedUsers, { 'id': userId }) !== true) {
    return replyWithError(userId, new Error(i18n.__('notAuthorized')));
  }
}
示例#12
0
文件: main.js 项目: trfiladelfo/koala
		fail: function () {
			$('#upgradeloading').hide();
			alert(il8n.__('Network requests failed, please try again'));
		}
示例#13
0
 it('__', function () {
     assert.equal('vaca', i18n.__('cow'));
 });