Артем, для php функция strpos()
Проверяете есть подстрока в строке или нет.
Или можете вычищать из запросы пользователя (нажатия кнопки) emoji и потом делать точную проверку.
mak_ufo: нет, будет (если сделаете) одна точка входа. Один набор скриптов для всех ботов. Далее вопрос к логике приложения, как сами сделаете, так и будет.
В базе создаем задачи для рассылки. Указываем время, текст рассылки и id пользователя, которому будет отправлено сообщение. Одно поле используем для флага состояния рассылки.
С помощью крона запускаем скрипт, например, каждую минуту. Делаем запрос к базе по тем рассылкам, которые уже надо отправить. Их сразу помечаем, как "в работе" (чтобы повторно не отправить). Начинаем рассылку в цикле.
После того, как отправили помечаем "отправлено". И все.
Это самый простой вариант решения задачи "в лоб".
Sanes: Где я написал, что не жрет память?
Апач лишнее звено. Не вижу никакой необходимости его использовать в новых проектах.
Выше верно написали, что можно через getUpdate работать. В таком случае веб-сервер не нужен.
Олег Кушев: да, там сильно упрощено. Самый простой вариант хранить состояние в базе. Сохраняем chat_id и текущее состояние. Обработчики команд пишем с условием проверки состояний
Делаете различные состояния для ботов. В зависимости от диалога меняете состояние. На время ввода телефона бота выставляете в ожидание ввода номера. Полученное сообщение проверяете по маске на номер телефона, если это номер, то принимаете и меняете состояние, иначе пишите, что номер введен не корректно и просите повторить ввод.
Звучит страшно, но это все просто.
Если кратко - надо ввести состояния бота и с ними работать
Проверяете есть подстрока в строке или нет.
Или можете вычищать из запросы пользователя (нажатия кнопки) emoji и потом делать точную проверку.