hibot
v0.1.19
Published
Just a bot.
Downloads
34
Readme
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}
| | method | api | body | response | | --------------- | ------ | ----------------------------------------------------- | ---- | ------------------------------ | | boot task | PUT | /tasks | Task | | | stop task | GET | /task/{task_id}/stop | | | | task screenshot | GET | /task/{task_id}/screenshot?type={jpeg/png/webp/mjpeg} | | | | clients | GET | /clients | | Response<Array<ClientStats>> | | client | GET | /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