Публикация поста в телеграмм канал с помощью бота
При публикации поста (карточки товара) в телеграмм канал не получается реализовать одну задумку. Карточка должна публиковаться с кнопкой "Заказать" как непосредственная часть это карточки, т.е. быть по ширине вместе с карточкой, а также в её границах, но осуществить задумку не получается. Пробовал разные способы, а так же GPT, но не выходит. Может быть здесь живые люди помогут. Вот часть кода, которая "слушает" команду /publish, при которой уже формируется карточка и публикуется в канал. Возможно я не правильно формирую саму структуру создания карточки. Не знаю. Буду признателен за помощь.
@bot.message_handler(commands=['publish'])
def publish_post(message):
user_id = message.from_user.id
if user_id not in product_data or not product_data[user_id]['photos']:
bot.reply_to(message, "У вас нет карточки или фото. Нажмите /start и добавьте фото.")
return
data = product_data[user_id]
caption = f"?️ **{data['name']}**\n\n? {data['desc']}\n\n? Цена: {data['price']} руб."
if not data['name'] or not data['desc'] or data['price'] == 0:
bot.reply_to(message, "Заполните все данные: название, описание и цену.")
return
# Генерируем уникальный ID для карточки
card_id = str(int(time.time()))
published_cards[card_id] = data.copy()
print(f"Карточка опубликована с card_id: {card_id}") # Отладка
# Медиа-группа без caption
media = [InputMediaPhoto(photo['file_id']) for photo in data['photos']]
# Кнопка
markup = types.InlineKeyboardMarkup()
order_button = types.InlineKeyboardButton("Заказать", callback_data=f"order_{card_id}")
markup.add(order_button)
# Отправка
try:
bot.send_media_group(CHANNEL_ID, media)
bot.send_message(CHANNEL_ID, caption, reply_markup=markup, parse_mode='Markdown')
print("Карточка отправлена в канал") # Отладка
except Exception as e:
print(f"Ошибка при публикации: {e}")
bot.reply_to(message, f"Ошибка при публикации: {e}")
return
del product_data[user_id]
bot.reply_to(message, "Карточка товара опубликована в канал!")
Получается вот так:
Или вот так:
То есть кнопки либо нет вообще, либо она отдельно от поста.
Ответы (1 шт):
Такое нельзя реализовать. Нельзя отправлять клавиатуру с медиа группой. Разве что, реализовать как на втором скрине: клавиатуру прикрепить к следующему сообщению

