Блок «Код»
С помощью блока «Код» вы можете добавить в процесс фрагмент кода на JavaScript или Python. Это универсальный блок для вычислений, логики и работы с данными, контекстом и переменными.
Используйте блок «Код» для кода, который будете выполнять один раз, а пользовательские функции — для кода, который будете переиспользовать.
Как добавить блок «Код» на холст
- Перейдите в проект и на левой панели нажмите , чтобы открыть конструктор процессов.
- В верхнем левом углу холста нажмите — откроется список блоков.
- Из раздела Код и логика перетащите блок Код на холст.
Интерфейс редактора кода
Чтобы настроить блок, дважды нажмите на него на холсте. В этом блоке доступны следующие элементы:
-
Выбор языка: JavaScript или Python.
-
Редактор кода с подсветкой синтаксиса и автокомплитом.
-
Библиотека функций . Панель быстрого поиска встроенных и пользовательских функций проекта. Двойной клик — вставка вызова функции в код.
-
Панель документации. Отображает подсказки и описание выбранной функции: имя, тип, описание. Автоматически появляется в правой части окна при нажатии на любую функцию из библиотеки.
Пример использования
Для примера создадим блок, который считает количество слов в сообщении.
-
Перейдите в проект и на левой панели нажмите , чтобы открыть конструктор процессов.
-
В верхнем левом углу холста нажмите — откроется список блоков.
-
Перетащите блок Триггеры → Сообщение на холст.
-
Перетащите блок Код и логика → Код на холст и соедините его с блоком Сообщение.
-
Дважды нажмите на блок Код.
-
Вставьте в него следующий код, в котором используются встроенные функции
ContextиReactions.JavaScript
Код зависит от используемой в проекте версии движка:
Версия 2
// Получаем объект с сообщением
const content = Context.getMessageContent();
// Проверяем, есть ли вообще текст
if (!content || typeof content.text !== 'string') {
Reactions.sendText({text: "Я не вижу сообщения"});
return;
}
// Извлекаем текст и убираем лишние пробелы
const message = content.text.trim();
// Разбиваем сообщение по пробелам и фильтруем пустые элементы
const words = message.split(/\s+/).filter(Boolean);
// Считаем количество слов
const count = words.length;
// Отправляем ответ
Reactions.sendText({
text: `В вашем сообщении ${count} ${count === 1 ? "слово" : "слов(а)"}`
});Версия 1
// Получаем объект с сообщением
const content = await Context.getMessageContent();
// Проверяем, есть ли вообще текст
if (!content || typeof content.text !== 'string') {
Reactions.sendText("Я не вижу сообщения");
return;
}
// Извлекаем текст и убираем лишние пробелы
const message = content.text.trim();
// Разбиваем сообщение по пробелам и фильтруем пустые элементы
const words = message.split(/\s+/).filter(Boolean);
// Считаем количество слов
const count = words.length;
// Отправляем ответ
Reactions.sendText(`В вашем сообщении ${count} ${count === 1 ? "слово" : "слов(а)"}`);Python
# Получаем объект с сообщением
content = sdk.context.get_message_content()
# Проверяем, есть ли вообще текст
if not content or not isinstance(content.get("text"), str):
await sdk.reactions.send_text({"text": "Я не вижу сообщения"})
return
# Извлекаем текст и убираем лишние пробелы
message = content["text"].strip()
# Разбиваем сообщение по пробелам и фильтруем пустые элементы
words = [w for w in message.split() if w]
# Считаем количество слов
count = len(words)
# Отправляем ответ
word_form = "слово" if count == 1 else "слов(а)"
await sdk.reactions.send_text({"text": f"В вашем сообщении {count} {word_form}"})примечаниеВ блоке «Код» на Python доступна глобальная переменная
sdkи функцииsdk.reactions.*иsdk.context.*. Подробнее смотрите в разделе Встроенные функции. -
Нажмите Сохранить.
-
В конструкторе нажмите Тестировать. Откроется окно чата, и вы сможете проверить работу вашего кода.
Рекомендации
- Используйте явные имена переменных, чтобы вам сразу было понятно, что она делает. Например, если вы сохраняете в нее текст сообщения, то назовите ее
message. - Старайтесь не делать слишком большой и сложный код — лучше разбить на несколько функций и блоков.