Розробка бота для автоматичної публікації товарів з сайту у VK-групу
ВКонтакте залишається значимою платформою для продажів у російськомовному сегменті. Бот автоматично створює пости у групі ВКонтакте на основі товарів із каталогу сайту: завантажує фото, формує текст, додає посилання та публікує — або ставить на відкладену публікацію.
VK API для публікацій
Використовується метод wall.post з попередньою завантаженням фотографій:
import vk_api
from vk_api.upload import VkUpload
import httpx
class VKProductPublisher:
def __init__(self, access_token: str, group_id: int):
self.vk = vk_api.VkApi(token=access_token)
self.upload = VkUpload(self.vk)
self.group_id = group_id
async def publish(self, product: dict) -> int:
# Завантажуємо перше зображення товару
attachment = None
if product.get('images'):
image_url = product['images'][0]['url']
image_data = httpx.get(image_url).content
# Завантаження фото на сервер VK
photo = self.upload.photo_wall(
photos=image_data,
group_id=self.group_id
)[0]
attachment = f"photo{photo['owner_id']}_{photo['id']}"
# Текст поста
text = (
f"{product['name']}\n\n"
f"{product['short_description']}\n\n"
f"💰 {product['price']:,.0f} ₽\n\n"
f"🛒 Купити: {product['url']}\n\n"
f"#{self.make_hashtags(product['categories'])}"
)
result = self.vk.method('wall.post', {
'owner_id': -self.group_id,
'message': text,
'attachments': attachment,
'from_group': 1,
})
return result['post_id']
def make_hashtags(self, categories: list) -> str:
return ' '.join(f"#{c['slug'].replace('-', '_')}" for c in categories)
Відкладена публікація
VK API підтримує публікацію з відкладеною датою:
import time
from datetime import datetime, timedelta
publish_time = datetime.now() + timedelta(hours=2)
result = self.vk.method('wall.post', {
'owner_id': -self.group_id,
'message': text,
'attachments': attachment,
'publish_date': int(publish_time.timestamp()), # Unix timestamp
'from_group': 1,
})
Особливості VK API
-
Access Token повинен мати права
wall,photos,groups - Лімити — не більше 50 публікацій у годину для однієї групи
- Фотографії завантажуються через спеціальний upload-сервер, не прямий URL
-
Група — у
owner_idпередається від'ємнийgroup_id
Терміни
Бот з розкладом, завантаженням фото та чергою: 3–5 робочих днів.







