🎯 Цель проекта
Реализовать систему взаимодействия между каналом и ботом:
Под каждым опубликованным постом в канале автоматически появляются две кнопки.
При нажатии на первую кнопку («Бесплатный подбор новостроек») пользователь попадает в бот, выбирает город и оставляет контакт.
При нажатии на вторую кнопку («Консультация в мессенджере») открывается чат с менеджером.
Публикации в канал выполняются вручную владельцем, но кнопки добавляются автоматически.
🧩 Функциональные требования
1. Интеграция с Telegram-каналом
После публикации любого нового поста в канале автоматически появляются две кнопки:
🏠 Бесплатный подбор новостроек переход в бот
💬 Консультация в мессенджере переход по ссылке (номер берётся из .env)
2. Telegram-бот
Реализовать на Python (pyTelegramBotAPI).
При первом запуске (/start) бот приветствует и предлагает выбрать город из списка (cities_tz.json).
После выбора города бот отправляет сообщение:
Здравствуйте! Видим, что Вы заинтересовались консультацией у нашего брокера в городе <город>.
Подскажите, пожалуйста, ваш контактный номер для связи👇🏻
После ввода номера бот:
Отправляет сообщение: «✅ Спасибо! Наш специалист скоро свяжется с вами.»
Сохраняет данные (user_id, город, номер телефона, дата) в leads.txt или базу SQLite.
🗂 Структура проекта (размещение на обычном Яндекс.Диске)
/YandexDisk/SmartDomBot/
├── bot.py
├── post_news_cron.py
├── news_feeds.py
├── cities_tz.json
├── leads.txt
├── logs/
└── .env
⚙️ Файл .env
Пример:
TG_TOKEN=123456:ABC-DEF...
WA_NUMBER=79991234567
CHANNEL_ID=@
📜 Файл post_news_cron.py
Скрипт, добавляющий кнопки под каждым постом:
from telebot.types import InlineKeyboardMarkup, InlineKeyboardButton
markup = InlineKeyboardMarkup()
markup.add(InlineKeyboardButton("🏠 Бесплатный подбор новостроек", url="
markup.add(InlineKeyboardButton("💬 Консультация в мессенджере", url="
bot.send_message(chat_id=CHANNEL_ID, text=post_text, reply_markup=markup)
💻 Технические требования
Язык: Python 3.10+
Библиотеки:
pyTelegramBotAPI
python-dotenv
sqlite3 (или запись в leads.txt)
Хранение файлов: обычный Яндекс.Диск (не Яндекс Cloud)
Работа 24/7: через systemd (Linux) или Планировщик задач (Windows)
Логи: сохранять в /logs/bot.log
🔄 Логика взаимодействия
Владелец публикует пост в канале.
Под постом автоматически появляются кнопки:
🏠 Бесплатный подбор новостроек
💬 Консультация в мессенджере
Пользователь нажимает первую кнопку → бот
Бот предлагает выбрать город.
После выбора города запрос телефона.
Пользователь вводит номер.
Бот сохраняет заявку.
Менеджер видит новые заявки в файле leads.txt на Яндекс.Диске.
✅ Ожидаемый результат
Под каждым постом в канале появляются нужные кнопки.
Бот корректно обрабатывает заявки.
Контакты сохраняются.
Всё синхронизируется с Яндекс.Диском.
Работает без Яндекс Cloud, 24/7.