hooks/sys/sys.js

'use strict';

const hooks = require('../../code/hooks');
const package_def = require('../../package');
const Promise = require('promise');
const _ = require('underscore');
const s = require('underscore.string');
_.mixin(s.exports());

module.exports = [
  /**
   * @alias start
   * @member {Object} start
   * @description Respond to <strong>/start</strong> command
   * @memberOf hooks/sys
   */
  {
    description: 'Start Procedure',
    name: 'start',
    command: 'start',
    plain: false,
    action: function (message, service, matches) {
      let out_str = `*${package_def.name} v${package_def.version}* started...`;
      return Promise.resolve(_.trim(out_str).toString());
    },
    response: true
  },
  /**
   * @alias help
   * @member {Object} help
   * @description Respond to <strong>/help</strong> command, sending to Telegram a list of defined local hooks commands
   * @memberOf hooks/sys
   */
  {
    description: 'This help',
    name: 'help',
    command: 'help',
    plain: true,
    action: function (message, service, matches) {
      let commands = hooks.get_commands();
      let out_str = `${package_def.name} v${package_def.version}\n${package_def.description}\n\nCommands:\n`;
      _.each(commands, function (el) {
        out_str = `${out_str}${_.trim(el.command)} - ${_.clean(el.description)}\n`;
      });
      return Promise.resolve(_.trim(out_str).toString());
    },
    response: true
  },
  /**
   * @alias import_commands
   * @member {Object} import_commands
   * @description Respond to <strong>/import_commands</strong> command, sending to Telegram a list of defined local hooks commands for easy BotFather importing.<br/>Just copy result and paste into BotFather after a <strong>/setcommands</strong>
   * @memberOf hooks/sys
   */
  {
    description: 'For importing command into BotFather',
    name: 'import_commands',
    command: 'import_commands',
    plain: true,
    action: function (message, service, matches) {
      let commands = hooks.get_commands();
      let out_str = 'start - Start the Bot\n';
      _.each(commands, function (el) {
        out_str = `${out_str}${_.trim(el.command).substring(1)} - ${_.clean(el.description)}\n`;
      });
      return Promise.resolve(_.trim(out_str).toString());
    },
    response: true
  },
  /**
   * @alias reboot
   * @member {Object} reboot
   * @description Reboot the server or device after confirmation
   * @memberOf hooks/sys
   */
  {
    name: 'reboot',
    confirmation: true,
    description: 'Reboot the device/server',
    command: 'reboot',
    shell: 'reboot.sh',
    response: 'Ok, rebooting...'
  },
  /**
   * @alias shutdown
   * @member {Object} shutdown
   * @description Shutdown the server or device after confirmation
   * @memberOf hooks/sys
   */
  {
    name: 'shutdown',
    confirmation: true,
    description: 'Shutdown the device/server',
    command: 'shutdown',
    shell: 'shutdown.sh',
    response: 'Ok, shutting down...'
  }
];