Каренина
ну между первым и вторым (где бд на месте парсера) разница лишь в том, общается бот с парсером или нет. Тут уж как вам нужно архитектурно
А, ну конечно
Я вспомнил почему я так решил
Парсер должен отправить боту новые данные для рассылки
Дело в том, что невозможно заранее определить сколько парсинг займет времени (зависит от количества вводных данных == пользователей)
Если бы время было фиксировано, я бы просто допустим через 5 минут после парсинга забирал бы обновленные данные с бд и делал бы рассылку