Перейти к содержимому
Разделы документации
SDKPython

Rich-форматы

Интеграция

С SDK достаточно трёх действий: укажите форматы в inject(). Для эфемерных сообщений в группах используйте инструкцию по отправке через HTTP.

bot.py
# Use in place of the ordinary handler; bot, dp and sk are initialized.
from dataclasses import replace
from aiogram import F, types
from sidekick_ads.router import sidekick_router
dp.include_router(sidekick_router(sk))
@dp.message(F.text, F.chat.type == "private")
async def handle_rich(message: types.Message):
if message.from_user is None:
return
reply = await get_llm_response(message.text) # Return plain text.
result = await sk.inject(
user_id=message.from_user.id,
message=reply,
language_code=message.from_user.language_code or "en",
accept_formats=["text", "response", "card", "consent", "quiz"],
capabilities={
"rich_messages": True,
"callbacks": True,
"custom_emoji": False,
},
)
if result.send:
# A rich scene contains only the ad. Send the reply first.
await message.answer(reply, parse_mode=None)
ad = result.ad or {}
# Keep the text fallback ad-only to avoid repeating the reply.
ad_only = replace(
result,
message="Ad\n" + ad.get("text", ""),
)
delivered = await sk.send(bot, message.chat.id, ad_only)
if delivered is None:
# Record a delivery failure; do not request another ad.
pass
else:
await message.answer(
result.message, reply_markup=result.keyboard, parse_mode=None
)

Требования к клиентам

  • Rich-блоки отображаются в клиентах Telegram, выпущенных 25.08.2026 или позже. В старых клиентах часть блоков может не отображаться, но текст и обычная кнопка reply_markup (сервер всегда дублирует её) остаются видны.
  • Логотипы брендов в виде пользовательских эмодзи отображаются, только если у владельца бота есть Telegram Premium. Указывайте capabilities.custom_emoji с учётом этого. Иначе вместо логотипа будет название бренда жирным шрифтом.
  • Группы: интерактивные сцены после нажатия видны только нажавшему пользователю. Первая сцена отправляется так же, только если бот — администратор чата (bot_is_admin: true); иначе отправляется обычное сообщение. Telegram разрешает отправку ephemeral-сообщений без предварительного действия пользователя только ботам-администраторам.