//+------------------------------------------------------------------+ //| Reciber.mqh | //| Copyright 2025, Niquel Mendoza. | //| https://www.mql5.com/es/users/nique_372 | //+------------------------------------------------------------------+ #property copyright "Copyright 2025, Niquel Mendoza." #property link "https://www.mql5.com/es/users/nique_372" #property strict #ifndef AIDATATASKRUNNER_BACKEND_TLGM_RECIBER_MQH #define AIDATATASKRUNNER_BACKEND_TLGM_RECIBER_MQH //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ //--- Tools especficas para la app (todas async) // Esto a su vez incluye el protocolo de comunicacion con API // y la clase base de telegram #include "Tools\\Tools.mqh" // CChatTelegramBase class CChatTelegramBaseFully : public CChatTelegramBase { private: void SendMessageToTlg(const string& res, const string& tool_name, const string& tool_id); void OnBeforeSetTools(CLLmToolsManager* manager) override final; public: CChatTelegramBaseFully(const string& sys_promt) : CChatTelegramBase(sys_promt) {} ~CChatTelegramBaseFully(void) {} //--- void ChartEvent(const int32_t id, const long& lparam, const double& dparam, const string& sparam); }; //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ void CChatTelegramBaseFully::SendMessageToTlg(const string &res, const string& tool_name, const string& tool_id) { SendMessage(StringFormat("AiDataTaskRunner\n[Tool: %s][Tool id: %s]: %s", tool_name, tool_id, res), NULL, TELEGRAM_PARSE_MODE_HTML); } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ void CChatTelegramBaseFully::OnBeforeSetTools(CLLmToolsManager *manager) { manager.AddItemFast(new CAiTaskRunnerToolAddTask(m_chart_id_padre, m_chart_id)); manager.AddItemFast(new CAiTaskRunnerToolSaveTasksToFile(m_chart_id_padre, m_chart_id)); manager.AddItemFast(new CAiTaskRunnerToolLoadTasksFromFile(m_chart_id_padre, m_chart_id)); manager.AddItemFast(new CAiTaskRunnerToolGetTaskTotal(m_chart_id_padre, m_chart_id)); manager.AddItemFast(new CAiTaskRunnerToolGetTaskByIndex(m_chart_id_padre, m_chart_id)); manager.AddItemFast(new CAiTaskRunnerToolCleanAllTasks(m_chart_id_padre, m_chart_id)); manager.AddItemFast(new CAiTaskRunnerToolExecuteAllTasks(m_chart_id_padre, m_chart_id)); manager.AddItemFast(new CAiTaskRunnerToolLoadConfig(m_chart_id_padre, m_chart_id)); manager.AddItemFast(new CAiTaskRunnerToolSaveConfig(m_chart_id_padre, m_chart_id)); manager.AddItemFast(new CAiTaskRunnerToolGetMainFolder(m_chart_id_padre, m_chart_id)); manager.AddItemFast(new CAiTaskRunnerToolGetTaskFolder(m_chart_id_padre, m_chart_id)); manager.AddItemFast(new CAiTaskRunnerToolIsInCommonFolder(m_chart_id_padre, m_chart_id)); } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ void CChatTelegramBaseFully::ChartEvent(const int32_t id, const long& lparam, const double& dparam, const string& sparam) { //--- El panel nos envio y nos dijo que cambiaramos parametors del tlgm.. redesitnamos a la clase base if(id == CHARTEVENT_CUSTOM + CHATELGRAM_E_ON_CHANGE_PARAM) { // El key solo sirve para telegram con la api es formato abierto //--- //dparam = key (el ea panel asigna la key y nos la da) //soaram = valor (valor) //lparam = parametro (parametros) //--- // nota: el key se comprueba aqui por eso no lo hago aca CChatTelegramBase::ChartEvent(id, lparam, dparam, sparam); return; } //--- Recribimos respuesta del panel (por ejecuion de los tools) (esto es de la api) if(id == CHARTEVENT_CUSTOM + AIDATATASKRUNER_API_ON_PARAM_CHANGE) { //--- // De salida: (api responde al que le envio datos) // lparam=evento respondiido // dparam=resultado // sparam=info (empaquetada ToolId|Val) //--- const uint8_t event_id = uint8_t(lparam); //--- static string id_tool, val; if(!AiDataTaskRunnerDesempaquetar(sparam, id_tool, val)) { FastLog(FUNCION_ACTUAL, FATAL_ERROR_TEXT, StringFormat("Formato invalido de empauqetacion de telegram [event_id=%u], mensaje recibido por UI Panel:\n%s", event_id, sparam)); return; } else { FastLog(FUNCION_ACTUAL, WARNING_TEXT, StringFormat("id=%u|sparam='%s'", event_id, sparam)); } //--- // Aqui no hay chek aunque el panel no se equivoca a decir verdad SendMessageToTlg(val, g_aidatatask_runner_tools_tlg_names[event_id], id_tool); } } #endif // AIDATATASKRUNNER_BACKEND_TLGM_SENDER_MQH //+------------------------------------------------------------------+