0.1.19 • Published 2 years ago

hibot v0.1.19

Weekly downloads
-
License
MIT
Repository
github
Last release
2 years ago

hibot

Just a bot.

Installation

Simple install as a dependency using npm:

npm install -g hibot

Usage

import { createServer } from "hibot";

type TaskResponse<T = any> = {
  id: TaskId;
  response: T;
  cost: number;
  start: number;
  ended: boolean;
};

let server = createServer({
  port: 30000,
  onConnection(nodeId) {
    console.log(`node[${nodeId}] is online.`);
    server.boot(task);
  },
  onHeartbeat(clientId, stats: ClientStats) {},
  onClose(nodeId) {
    console.log(`node[${nodeId}] is offline.`);
  },
  onResponse(nodeId, taskResponse: TaskReponse) {},
});

You can also use a custom ws server.

import { createServer } from "hibot";
import { WebSocketServer } from "ws";

let server = createServer({
  onConnection(nodeId) {
    console.log(`node[${nodeId}] is online.`);
    server.boot(task);
  },
  onHeartbeat(clientId, tasks) {},
  onClose(nodeId) {
    console.log(`node[${nodeId}] is offline.`);
  },
  onResponse(nodeId, taskResponse: TaskReponse) {},
});

const wss = new WebSocketServer({ port: 30000 });

wss.on("connection", (ws) => {
  server.createClient(ws);
});

CLI

Server CLI

hibot server start | stop | status

Options:
  -p, --port            server port, default 30000
  -t, --token           token
  -ap,--api_server_port api server port,default 30001
  -d, --daemon          run in deamon

Client CLI

hibot client start | stop | status

Options:
  -id,--id             client id
  -t, --token          token
  -pf,--platform       vendor, default 'pptr'
  -d, --daemon         run in deamon

API

/{api}?token={token}
methodapibodyresponse
boot taskPUT/tasksTask
stop taskGET/task/{task_id}/stop
task screenshotGET/task/{task_id}/screenshot?type={jpeg/png/webp/mjpeg}
clientsGET/clientsResponse<Array\<ClientStats>>
clientGET/client/{client_id}Response\<ClientStats>
type Response<T> = { code: number; data: T };

enum TRIGGER_TYPE {
  TIMER = "timer",
  LOOP = "loop",
}

type PPTROptions = {
  windowSize?: string;
  proxyServer?: string;
  cookies?: string;
  userAgent?: string;
};
type Task = {
  id: string;
  clientId: string;
  triggerType?: TRIGGER_TYPE;
  // cron expression for timer
  // time expression(e.g. 1h2m3s) for timer
  triggerVal?: string;
  remoteApi?: string;
  script: string;
  // The task remains after the bot is completed.
  keepalive?: boolean;
  options?: PPTROptions | Record<string, any>;
};

enum TASK_STATE {
  CLOSED = 1,
  RUNNING = 2,
}

type ClientStats = {
  id: string;
  tasks: Array<{ id: string; state: TASK_STATE }>;
  usage: {
    cpu: number; //percentage (from 0 to 100*vcore)
    memory: number; //bytes
    elapsed: number; //ms since the start of the process
    timestamp: number; //ms since epoch
  };
};

License

MIT
Copyright (c) 2020-present, Reruin

0.1.19

2 years ago

0.1.18

2 years ago

0.1.15

2 years ago

0.1.16

2 years ago

0.1.17

2 years ago

0.1.14

2 years ago

0.1.12

2 years ago

0.1.13

2 years ago

0.1.11

2 years ago

0.1.10

2 years ago

0.1.9

2 years ago

0.1.8

2 years ago

0.1.7

2 years ago

0.1.6

2 years ago

0.1.5

2 years ago

0.1.2

2 years ago

0.1.1

2 years ago

0.1.3

2 years ago

0.1.0

2 years ago