Для телебота гуглить на тему register_next_step_handler. Для других библиотек искать аналоги в сторону слов finite state machine. В принципе, можно безо всяких специальных средств и библиотек просто как-то в скрипте помнить, что для данного chat_id следующее сообщение надо интерпретировать особым образом.
Сергей Карбивничий, всё моё участие было в поиске слова, по которому сработал фильтр, а потом и в удалении этого слова. Что там обсуждали с клиентом я не знаю. Но в целом недоставленные сообщения не стоят клиенту ничего, поэтому, думаю, они просто сделали рассылку повторно.
рома, чтобы создать чат с огромным количеством ботов, никакой питон не нужен. Достаточно создать ботов у BotFather, создать чат, напихать ботов в чат - и вот уже все условия выполнены. А если хочется более умного ответа на вопрос, то и сам вопрос должен быть умнее. Например, мне непонятно, зачем вообще создавать чат с кучей ботов?
У нас в какой-то момент один поставщик потребовал, чтобы в текстах массовых рассылок не было всяких "плохих" слов. Мы впилили какой-то blacklist, а потом через неделю наступила Масленица, и в маркетинговой рассылке одной крупной сети продовольственных магазинов, приуроченной к этому событию, всё ушло в недоставку из-за слова "мука".
lifeexample, ну с таким подходом да, может быть будет непросто. Но просто для примера как у нас это решают:
1. Все сервисы регистрируются в consul с помощью containerpilot (или если приложение нашей разработки то оно само может уметь).
2. В качестве прокси используется envoy, который умеет много вещей на тему динамической конфигурации.
3. Для envoy написан специальный Envoy Management Server, который снабжает его конфигурацией по правилам.
4. Появление/изменение/переезд контейнеров между датацентрами прозрачно отражается на работе всех сервисов.
5. До кучи envoy автоматом обновляет сертификаты из HashiCorp Vault, так что при перевыпуске их не нужно ничего рестартить, всё прозрачно взлетает автоматом.
Правда, сейчас не исключено, что новые проекты будем просто пускать в кубере.
Иоанн, это не почта, а система для коллаборативной работы (в основном для разработчиков, но можно использовать и для других задач). Если нужна именно почта (тем более если в том числе для общения с внешними пользователями), то не подходит никак. Не говоря уже о том, что ставится redmine где-то на один отдельный сервер.
Иоанн, после беглого гугления я бы посмотрел на https://www.hmailserver.com, бесплатный, выглядит красиво, может ли он распределять почту per domain я не понял, но документация у него довольно большая.
1. Старый уважаемый почтовый сервер с конфигом для наркоманов, лучше с ним не связываться.
2. Просто компонент любого почтовика (sendmail/postfix/exim/...), который служит низкоуровневым агентом для отправки почты из софта и скриптов.
В списке есть postfix/exim - вот их чаще всего и используют в наше время. Но они обычно используются на LInux/UNIX-серверах, а в данном случае я подозреваю нужно решение для винды.
hellmagic, для докера понятие "куда ставится" имеет мало смысла. Обычно докер всё своё хозяйство хранит в /var/docker, но это можно переделать. Ну и лазать туда смысла мала, потому что без поллитра не разберёшься, что там лежит, а уж сломать можно только так.
Советую освоить базовые мануалы по докеру, многое станет понятнее.
mvk843, я конкретно с маркетинговым API не работал, но в Graph API даже если данные есть, то их необязательно покажут в дефолтном запросе. А вот дальше вопрос, что будет при явном указании field. Может ругнуться, что такого field в такой node нет, может ругнуться что к этому field нет прав (тогда нужно проходить домодерацию). Ещё может оказаться, что получение location зависит от privacy-настроек пользователя.
Полгода назад Facebook для Pages API закрыл получение имени и аватарки пользователей без получения отдельного модерируемого разрешения. Пришлось тогда нашему приложению проводить модерацию, чтобы вернуть. Персональные данные, все дела... Может быть, тут то же самое?
Александр Колотов, ну так в запросе photo:[] - пустой список. В чём проблема не понять, тем более в приведённом коде вызова saveWallPhoto не видно. Кстати, я не уверен, что upload_url не одноразовый, что через него можно загрузить несколько картинок, но не проверял.
Так это и делается, выясняем какой Exception случается в подобной ситуации и оборачиваем в try: except ThatAnnoyingException: где обрабатываем (например, помечаем пользователя как неактивного в своей базе).