не вижу, где здесь большие вложенные условия.
Есть процедура запроса, есть процедура приёма ответа, в приёмнике надо одно условие на этот ключ и вызов запроса.
Если нодежс не будет вылетать, то можно через простой setTimeout выставлять флаг возможности нажатия на кнопку, так сама нода будет "помнить" о кнопке. Если же предполагается, что нода будет падать и перезапускаться, то нужно внешнее хранилище временной метки для флага, для такой простой задачи можно просто хэш-таблицу сделать с резервированием на диск в виде json-файла.
Если такая кнопка общая для всех, хватит одного таймера или метки, или для каждого клиента своя.
В видео линии похожи на образующие криволинейной поверхности, причём из синусов, по времени меняется фаза и амплитуда каждой образующей синусоиды, к тому же параметры соседних образующих также расположены в синусной зависимости. На первый взгляд. В примере поста синусные линии ещё и завёрнуты вокруг какого-то центра.
Потом вращение отображаемой поверхности в 3-х измерениях по математическим правилам, которые можно найти или высчитать самому в самом простом варианте. Если тяжело, то можно вращать с помощью css.
Расчёт на js будет долгим, но не требуется считать постоянно, можно заполнить некую покадровую таблицу — здесь оптимизация получится достаточной в разумных пределах.
Нужно знать стандарты, протоколы, архитектуру ЭВМ по железу и софту. Языки пусть знают программисты, от безопасника им нужно получать руководство как делать и как не делать.
Есть специальность на пересечении программирования и безопасности - аудит исходного кода программ, но там нужно уметь читать любой популярный язык, и не забывать про стандарты-протоколы-архитектуру.
Ну, например, для формирования такой шкалы.
Картинки из Гугла могут показать, как распределяются числа на логарифмической прямой. Шкала - прямая. Сумма в евро - число. Логарифмы - возведение в степень - обратные преобразования.
Гуглить "шаблонизатор". Можно найти целую библиотеку, а можно и функцию - как повезет. В конце концов, можно написать самому, при хорошем формате записи получится обойтись функцией строковой замены на регулярных выражениях.
В целом, да. "Новизна" сценарного поведения бота может быть обусловлена случайностью выбора по каким-нибудь словам или же сервер как-то более совершенным алгоритмами будет поставлять всё новые и новые процедуры с учётом получаемых фраз. Хотя, из того, что есть какой-то начальный сценарий, особо серьезного изменения поведения предполагается не вносить, ибо сценарий сам суть программа, различия каждого нового "дубля" только в деталях.
На Js можно сделать хэш из именованных процедур и общим выборщиком, который по словам-параметрам будет дергать нужные процедуры. А при надобности этот хэш будет пополняться и изменяться, через API по принуждению от сервера или даже самостоятельно из своих же процедур.