Ещё доделал скрипт. Оказалось очень легко передать параметры функции. Вот кусок (выделен жирным шрифтом) позволяющий выделить параметры,
потом они передаются функции на выполнение вместе с объявлением функции через :parse (также выделено жирным шрифтом)
#seek parameters for functions
:local params
:if ([:len [:find $msgTxt " "]]!=0) do={:set params [:pick $msgTxt ([:find $msgTxt " "]+1) [:len $msgTxt]];
:set msgTxt [:pick $msgTxt 0 [:find $msgTxt " "]]
} else {:set params []}
:if (([/system script find name=$msgTxt] != "") or ([/system script environment find name=$msgTxt] !="")) do={
:if (($chatId = $myChatID) && ($timeAct < $timeStamp)) do={
:set timeAct ($timeStamp);
:put ("$timeStamp sec - activated script or function '$msgTxt' from user $userName.");
# :log warning ("Telegram user $userName activated script '$msgTxt' in $timeStamp sec.");
:if ([/system script environment find name=$msgTxt] !="") do={[:parse ":global $msgTxt; [\$$msgTxt $params]"]}
:if ([/system script find name=$msgTxt] != "") do={/system script run $msgTxt}
} else={ :put ("Nothing to activated."); }}
} else={ :put ("Completion of response from Telegram."); }
}
Теперь скрипт может запускать скрипты и функции (с параметрами и без) ! Параметры можно использовать как именованные так и позиционные так и их смесь
(по количеству не ограничены - ограничены только длиной строки).
Примеры обращения к функциям через Телеграмм (обратите внимание перед именем функции ставится только прямой слеш / (как и для запуска обычного скрипта), знак $ не ставится !:
/FuncMail Email=
user@mail.ru MailText="Привет Мир" (используются именованные параметры)
/FuncArp - выполняем функцию без параметров
/MyFunc 5 mama - (используются позиционные параметры)
/MySuperFunc Var1=Hello 50 Var2=word - (смешанные, позиционный и именованные параметры)
Ещё момент - если у Вас в репозитории есть скрипт с таким же именем как активированная функция, то при вызове выполнен будет код обоих
(сначала функция, потом скрипт) !
Есть один минус - функции не могут напрямую возвращать результат работы в Телеграмм, это нужно прописывать уже в самой функции. Учитывая возможности скрипта относительно нотаций, функции могут просто сбросить результат своей работы в лог через :log warning или :log error - результат будет переслан в Ваш чат Телеграм нашим главным комбайн-скриптом.
Теперь он стал ещё "могучее" ! Даже у буржуинов нет такого скрипта, его сделали мы !