Как то ты сильно неправильно делаешь бота.
Обработчики команд в aiogram асинхронные и если в функции случается ошибка это никак не влияет на поток выполнения, то есть бот останавливаться не должен в принципе.
Но раз уж у тебя это, каким то образом, происходит, то в консоле должна быть ошибка. Смотришь на ошибку, устраняешь ошибку, бот больше не падает.
Если все совсем плохо (возможно из-за того, что бот "довольно сложный"), то запихни процесс пуллинга в бесконечный цикл примерно так:
import logging
while True:
try:
executor.start_polling(dispatcher=dispatcher, skip_updates=True)
except (KeyboardInterrupt, SystemExit):
break
except Exception:
logging.exception('polling error')
Но лучше конечно ошибки фиксить.