Разработка бота для автоматической публикации товаров из сайта в Telegram-канал

Наша компания занимается разработкой, поддержкой и обслуживанием сайтов любой сложности. От простых одностраничных сайтов до масштабных кластерных систем построенных на микро сервисах. Опыт разработчиков подтвержден сертификатами от вендоров.

Разработка и обслуживание любых видов сайтов:

Информационные сайты или веб-приложения
Сайты визитки, landing page, корпоративные сайты, онлайн каталоги, квиз, промо-сайты, блоги, новостные ресурсы, информационные порталы, форумы, агрегаторы
Сайты или веб-приложения электронной коммерции
Интернет-магазины, B2B-порталы, маркетплейсы, онлайн-обменники, кэшбэк-сайты, биржи, дропшиппинг-платформы, парсеры товаров
Веб-приложения для управления бизнес-процессами
CRM-системы, ERP-системы, корпоративные порталы, системы управления производством, парсеры информации
Сайты или веб-приложения электронных услуг
Доски объявлений, онлайн-школы, онлайн-кинотеатры, конструкторы сайтов, порталы предоставления электронных услуг, видеохостинги, тематические порталы

Это лишь некоторые из технических типов сайтов, с которыми мы работаем, и каждый из них может иметь свои специфические особенности и функциональность, а также быть адаптированным под конкретные потребности и цели клиента

Предлагаемые услуги
Показано 1 из 1 услугВсе 2065 услуг
Разработка бота для автоматической публикации товаров из сайта в Telegram-канал
Средняя
~3-5 рабочих дней
Часто задаваемые вопросы

Наши компетенции:

Этапы разработки

Последние работы

  • image_website-b2b-advance_0.png
    Разработка сайта компании B2B ADVANCE
    1262
  • image_web-applications_feedme_466_0.webp
    Разработка веб-приложения для компании FEEDME
    1171
  • image_websites_belfingroup_462_0.webp
    Разработка веб-сайта для компании БЕЛФИНГРУПП
    874
  • image_ecommerce_furnoro_435_0.webp
    Разработка интернет магазина для компании FURNORO
    1094
  • image_crm_enviok_479_0.webp
    Разработка веб-приложения для компании Enviok
    831
  • image_bitrix-bitrix-24-1c_fixper_448_0.png
    Разработка веб-сайта для компании ФИКСПЕР
    851

Разработка бота для автоматической публикации товаров из сайта в Telegram-канал

Бот берёт товары из каталога сайта и публикует их в Telegram-канал: с фотографией, описанием, ценой и кнопкой перехода на страницу товара. Подходит для магазинов, которые хотят использовать Telegram-канал как дополнительный канал продаж без ручного оформления каждого поста.

Архитектура

Scheduler (Cron/Celery Beat)
    ↓
ProductPublisher Service
    ↓ — выборка товаров для публикации
Database (products)
    ↓ — скачивание изображения
CDN / S3
    ↓ — отправка поста
Telegram Bot API (sendPhoto / sendMediaGroup)
    ↓ — отметка как опубликовано
Database (telegram_posts)

Формирование публикации

import httpx
from aiogram import Bot
from aiogram.types import InlineKeyboardMarkup, InlineKeyboardButton

bot = Bot(token=BOT_TOKEN)

async def publish_product(product: dict) -> None:
    caption = (
        f"<b>{product['name']}</b>\n\n"
        f"{product['short_description']}\n\n"
        f"💰 <b>{product['price']:,.0f} ₽</b>"
    )

    keyboard = InlineKeyboardMarkup(inline_keyboard=[[
        InlineKeyboardButton(
            text="🛒 Купить",
            url=f"https://example.com/products/{product['slug']}"
        )
    ]])

    if product.get('images'):
        await bot.send_photo(
            chat_id=CHANNEL_ID,
            photo=product['images'][0]['url'],
            caption=caption,
            parse_mode='HTML',
            reply_markup=keyboard
        )
    else:
        await bot.send_message(
            chat_id=CHANNEL_ID,
            text=caption,
            parse_mode='HTML',
            reply_markup=keyboard
        )

    # Отмечаем как опубликовано
    await db.execute(
        'INSERT INTO telegram_posts (product_id, channel_id, published_at) VALUES ($1, $2, NOW())',
        product['id'], CHANNEL_ID
    )

Расписание публикации

Публикация нескольких постов подряд — плохой тон. Оптимально: 1–3 товара в день, в определённое время:

# Celery Beat Schedule
CELERYBEAT_SCHEDULE = {
    'publish-morning': {
        'task': 'bot.tasks.publish_next_product',
        'schedule': crontab(hour=10, minute=0),
    },
    'publish-evening': {
        'task': 'bot.tasks.publish_next_product',
        'schedule': crontab(hour=19, minute=0),
    },
}

Очередь публикации

Товары не выбираются случайно — формируется очередь:

  • Приоритет по дате создания товара или ручной сортировке в админке
  • Товары, уже опубликованные менее 30 дней назад, пропускаются
  • Неактивные товары исключаются автоматически
  • Оператор может пометить товар как «опубликовать следующим»

Сроки

Бот с расписанием публикации и очередью: 3–5 рабочих дней.