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 }); }