Половина статьи про стейты и их хранение в БД. Откройте для себя aiogram, там всё уже давным давно реализовано и не нужно заниматься велосипедостроением.
return result_sets[0].rows
Вы используете такие конструкции. Что будет если в result_sets будет None?
Стейты, БД и логи — разбираем шаблон диалогового Телеграм бота