Перейти к основному содержимому

Блок «Код»

С помощью блока «Код» вы можете добавить в процесс фрагмент кода на JavaScript или Python. Это универсальный блок для вычислений, логики и работы с данными, контекстом и переменными.

Отличие от пользовательских функций

Используйте блок «Код» для кода, который будете выполнять один раз, а пользовательские функции — для кода, который будете переиспользовать.

Как добавить блок «Код» на холст

  1. Перейдите в проект и на левой панели нажмите , чтобы открыть конструктор процессов.
  2. В верхнем левом углу холста нажмите  — откроется список блоков.
  3. Из раздела Код и логика перетащите блок Код на холст.

Интерфейс редактора кода

Чтобы настроить блок, дважды нажмите на него на холсте. В этом блоке доступны следующие элементы:

  • Выбор языка: JavaScript или Python.

  • Редактор кода с подсветкой синтаксиса и автокомплитом.

  • Библиотека функций . Панель быстрого поиска встроенных и пользовательских функций проекта. Двойной клик — вставка вызова функции в код.

  • Панель документации. Отображает подсказки и описание выбранной функции: имя, тип, описание. Автоматически появляется в правой части окна при нажатии на любую функцию из библиотеки.

Пример использования

Для примера создадим блок, который считает количество слов в сообщении.

  1. Перейдите в проект и на левой панели нажмите , чтобы открыть конструктор процессов.

  2. В верхнем левом углу холста нажмите  — откроется список блоков.

  3. Перетащите блок ТриггерыСообщение на холст.

  4. Перетащите блок Код и логикаКод на холст и соедините его с блоком Сообщение.

    Сообщение и Код
  5. Дважды нажмите на блок Код.

  6. Вставьте в него следующий код, в котором используются встроенные функции 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.*. Подробнее смотрите в разделе Встроенные функции.

  7. Нажмите Сохранить.

  8. В конструкторе нажмите Тестировать. Откроется окно чата, и вы сможете проверить работу вашего кода.

Рекомендации

  • Используйте явные имена переменных, чтобы вам сразу было понятно, что она делает. Например, если вы сохраняете в нее текст сообщения, то назовите ее message.
  • Старайтесь не делать слишком большой и сложный код — лучше разбить на несколько функций и блоков.