31 lines
1.3 KiB
TypeScript
31 lines
1.3 KiB
TypeScript
import type {Socket} from "socket.io-client";
|
|
import {bot_config} from "../../types/bot/instance/bot_runtime.ts";
|
|
import {validate_code_map} from "../../utils/validate_code_map.ts";
|
|
import {start_bot_context} from "../../bot/instance";
|
|
|
|
export async function handler(socket: Socket, data: unknown, callback: unknown) {
|
|
if (typeof callback !== "function") {
|
|
socket.emit("error", {
|
|
error: validate_code_map.web.method_not_allowed
|
|
});
|
|
return;
|
|
}
|
|
let result_code: number = validate_code_map.web.invalid_parameter;
|
|
try {
|
|
if (data && typeof data === "object" && !Array.isArray(data)
|
|
&& "node_id" in data && typeof data.node_id === "number"
|
|
&& Number.isSafeInteger(data.node_id) && data.node_id > 0) {
|
|
result_code = await start_bot_context(socket, data as bot_config & {node_id: number}, data.node_id);
|
|
}
|
|
} catch (error) {
|
|
console.error("Bot startup request failed", error);
|
|
result_code = validate_code_map.bot_context.error;
|
|
}
|
|
callback({
|
|
status: result_code === validate_code_map.bot_context.instance_connected
|
|
|| result_code === validate_code_map.bot_context.instance_connecting
|
|
|| result_code === validate_code_map.bot_context.context_created ? "success" : "error",
|
|
data: result_code
|
|
});
|
|
}
|