sbool dm_bot_execEvalCmd(VF1 postMessage, S s, O... _) { double timeout = optPar timeout(_, 60.0); O safetyCheck = optPar safetyCheck(_); O mod = dm_current_generic(); optPar bool alwaysFresh; new Matches m; bool freshMe = swic_trim(s, "!fresh ", m); if (freshMe || eq(s, "!fresh")) { dm_refreshTranspiler(); if (!freshMe) ret true with callF(postMessage, "OK"); } else if (alwaysFresh) dm_refreshTranspiler(); if (swic_trim(s, "!eval ", m)) ret true with callF(postMessage, pcallOrExceptionText_strOrNull(func { S code = m.rest(); try answer (S) callF(safetyCheck, code); ret print("eval result > ", strOrNull(dm_javaEvalOrInterpret(code))); })); if (freshMe || swic_trim(s, "!real-eval ", m)) ret true with callF(postMessage, evalWithTimeout_text(timeout, func { temp dm_enter(mod); S code = m.rest(); try answer (S) callF(safetyCheck, code); ret print("eval result > ", dm_javaEval(code)); })); false; }