Получилось написать логику такого рода:
1. В таблице пользователей ботом (на строчку уникальный chat_id) появился новый столбец состояния;
2. В начале выполнения скрипта мы получаем state из таблицы для текущего пользователя;
3. Сравниваем его с нашими заготовками перед тем, как сравнивать текст сообщения;
4. При совпадении выполняется часть логики.
Так же стоит отметить момент, который мне помог (возможно это костыль, но до чего мозг додумал):
1. Записываем в переменную $strUserState полученное из БД состояние текущего пользователя для сравнения;
2. Объявляем пустую переменную $strState;
3. В случае, когда нам надо поменять состояние пользователя в БД, изменяем переменную $strState;
4. В конце скрипта - за пределами условий, то есть, в любом случае отправляем запрос в БД, где ставим у текущего пользователя state равный $strState.
shurshur, я и пытаюсь найти логику в этом плане и вижу только 2 варианта ведения истории переписки с пользователем в бд:
1. На каждого пользователя отдельная таблица;
2. В одной таблице, но переписка будет сериализованным массивом;
И оба нахожу странными
Кирилл Горелов, по поводу "Почему файлы, а не БД" - честно говоря, просто до чего получилось оперативно додуматься. По поводу регулярки - не получится, т.к. планируется большое количество таких разветвлений, так что email, введенный в разных ветвях может быть использован в разных функциях
Stalker_RED, мне кажется, что в таком случае получаться громоздкие файлы истории... В таком случае, можете подсказать, пожалуйста, вариант ведения истории общения с пользователем, помимо массива в одном файле?
1. В таблице пользователей ботом (на строчку уникальный chat_id) появился новый столбец состояния;
2. В начале выполнения скрипта мы получаем state из таблицы для текущего пользователя;
3. Сравниваем его с нашими заготовками перед тем, как сравнивать текст сообщения;
4. При совпадении выполняется часть логики.
Так же стоит отметить момент, который мне помог (возможно это костыль, но до чего мозг додумал):
1. Записываем в переменную $strUserState полученное из БД состояние текущего пользователя для сравнения;
2. Объявляем пустую переменную $strState;
3. В случае, когда нам надо поменять состояние пользователя в БД, изменяем переменную $strState;
4. В конце скрипта - за пределами условий, то есть, в любом случае отправляем запрос в БД, где ставим у текущего пользователя state равный $strState.
Спасибо большое вам, Григорий Боев за ответ, а так же Талян и Stalker_RED за наводящие на мысли комментарии!