Розробка бота для автоматичної публікації товарів із сайту в 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 робочих днів.