Runtime скриптов
Для того чтобы корректно и эффективно использовать скрипты, нужно знать особенности скриптового движка ELMA Bot.
TypeScript
В ELMA Bot используется обычный компилятор TypeScript. При написании скриптов можно использовать любые синтаксические возможности языка, классы, функции, типизацию и т. д. Со стороны синтаксиса ограничения есть только на импорт библиотек.
async/await
Синтаксис “async/await” поддерживаются в TypeScript, но в скриптах ELMA Bot дополнительно можно использовать оператор await
на верхнем уровне скрипта. При этом скрипт будет дожидаться выполнения выражения справа от await
.
Node.js среда
Скриптовый движок ELMA Bot использует внутри Node.js, поэтому функции из browser runtime (HTML DOM Api) могут быть недоступны. Например, если вам нужно конвертировать файл в base64, то следует использовать Buffer.from а не btoa. При поиске решения вашей задачи в интернете рекомендуется формировать запросы как “TypeScript Node.js base64”, а не “JavaScript base64”.
Изоляция скрипта
Скрипт запускается в изолированной среде, в отдельном процессе со своей областью памяти.
Значения переменных бота, которые передаются в скрипт, являются копиями. Код скрипта записывает новые значения в
context.output.variables
, а после завершения скрипта новые значения попадают в память бота.
Каждый запуск скрипта изолирован от других скриптов. Это значит, что все переменные скрипта инициализируются каждый раз, и их значения не сохраняются между запусками.
Файловая система
Доступ к файловой системе запрещен, нельзя записывать и читать файлы, директории и т. д. Нет функций fs.
Доступные модули
Среда выполнения предоставляет ограниченный набор модулей: