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

Code-нода

Что делает​

code выполняет data.code как тело уже созданной async-функции. Собственный async def добавлять нельзя. Для простого присваивания выбирай set_variable, для SQL — psql_query, для HTTP — http_request.

Формат и поля​

{"type":"code","data":{"code":"answer = float(num1) + float(num2)","autoTransitionTo":"result_message"}}
ПолеТипЗначениеПоведение
codestring""тело Python-кода
autoTransitionTostring""ID следующей ноды

Присваивание на верхнем уровне сохраняется в пользовательском контексте и доступно как {answer}. Внутри функции оно локально; для явной записи используй _ns['answer'] = value.

Контекст выполнения​

Доступны переменные пользователя по имени, user_data, all_user_data, set_user_var, user_id, client, userbot_client, bot, dp, callback_query, state, asyncio, json, re, math, datetime, logging, Button и events. num1, num2, last_input появляются только после явного сохранения предыдущей нодой. callback_query и state могут быть None.

try:
total = float(num1) + float(num2)
ok = True
except (TypeError, ValueError):
total = None
ok = False

Несколько результатов передаются несколькими присваиваниями верхнего уровня. None, строки, числа и JSON-совместимые списки/словари сохраняются как значения.

Ограничения и ошибки​

Таймаут одного code-узла — 180 секунд. RestrictedPython не используется: не удаляй данные, не раскрывай токены и не запускай опасные процессы. При исключении обработка завершается ошибкой; причину ищи в логах code/runtime. Внешние API допустимы только через реально доступные клиенты.

Связка и проверка​

input подаёт значения, message показывает {total}, condition выбирает ветку. Вызови get_node_schema(code), get_node_example(code), затем validate_node; после запуска проверь логи. Отдельный MCP-просмотр переменных пользователя не реализован.

Частые ошибки​

  • написан собственный async def;
  • используется имя, которое предыдущая нода не сохраняла;
  • результат присвоен только внутри функции;
  • не обработаны деление на ноль или неверный тип.

Следующий шаг​

Направь переход на message или condition и проверь сценарий тестовым пользователем.