Я нашел решение как обеспечить долгую жизнь боту (что бы он не вылетал)
качать и разбираться в компиляторе паскаля мне как то лень было поэтому я правил только сам скрипт.
Я добавил буфер в котором сохраняются действия сгенерированные длл-ем. Этот буфер читается по таймеру, раз в 100мсек и действия обрабатываются. Зачем буфер ? уже подчеркивалось что длл работает сильно быстро и возможно скрипт не успевает отрабатывать действия переданные ему, а насколько мне кажется занесение в буфер быстрее чем поиск нужного действия и выполнение его. Плюс таким образом добавляется задержка в ответах на присланные с сервера пакеты и пакеты успевают дойти до клиента раньше чем до сервера ответ на них...
Автор говорил что было бы не плохо запретить параллельное использование функции вызываемой длл-кой. Сделать это можно или синхронизируя все потоки или просто ввести переменную "функция_занята", что я и сделал. Но тут вступила в силу какая то мистика которую я не могу обьяснить,иногда переменная так и не освобождалась (я так понимаю в этот момент раньше происходило вылетание), поэтому в качестве переменной я использовал Timer.enabled и получилось что если переменная не освободилась сама, то таймер досчитает до 200мс и сам освободит переменную. И теперь что то в пх вылетает (не понимаю о чем в ошибке написано), но все продолжает работать.
Итого - 8 часов полет нормальный
(пока бот ни разу не упал)
Вот скрипт