Примеры для фреймворков
Готовые примеры для каждого поддерживаемого фреймворка. Каждый пример — полноценный обработчик.
aiogram 3.x — с middleware
bot.py
from aiogram import Bot, Dispatcher, typesfrom sidekick_ads import Sidekickfrom sidekick_ads.middleware import SidekickMiddlewarebot = Bot(token="BOT_TOKEN")dp = Dispatcher()# Register middleware — injects `sidekick` into every handlersidekick_middleware = SidekickMiddleware(api_key="sk_live_xxxxx",platform_id="plt_xxxxx",)dp.message.middleware(sidekick_middleware)# Close the HTTP pool cleanly on dispatcher shutdowndp.shutdown.register(sidekick_middleware.aclose)@dp.message()async def handle(message: types.Message, sidekick: Sidekick):llm_reply = await get_llm_response(message.text)# Your existing keyboard (if any)kb = types.InlineKeyboardMarkup(inline_keyboard=[[types.InlineKeyboardButton(text="👍", callback_data="like"),types.InlineKeyboardButton(text="👎", callback_data="dislike")],])result = await sidekick.inject(user_id=message.from_user.id,message=llm_reply,language_code=message.from_user.language_code or "en",is_premium=message.from_user.is_premium,keyboard=kb,)await message.answer(result.message, reply_markup=result.keyboard)
aiogram 3.x — без middleware
bot.py
from aiogram import Bot, Dispatcher, typesfrom sidekick_ads import Sidekickbot = Bot(token="BOT_TOKEN")dp = Dispatcher()sk = Sidekick(api_key="sk_live_xxxxx", platform_id="plt_xxxxx")@dp.message()async def handle(message: types.Message):llm_reply = await get_llm_response(message.text)result = await sk.inject(user_id=message.from_user.id,message=llm_reply,language_code=message.from_user.language_code or "en",is_premium=message.from_user.is_premium,)await message.answer(result.message, reply_markup=result.keyboard)
python-telegram-bot v20+
bot.py
from telegram import Update, InlineKeyboardMarkup, InlineKeyboardButtonfrom telegram.ext import ApplicationBuilder, MessageHandler, ContextTypes, filtersfrom sidekick_ads import Sidekicksk = Sidekick(api_key="sk_live_xxxxx", platform_id="plt_xxxxx")async def handle(update: Update, context: ContextTypes.DEFAULT_TYPE):user = update.message.from_userllm_reply = await get_llm_response(update.message.text)kb = InlineKeyboardMarkup([[InlineKeyboardButton("👍", callback_data="like"),InlineKeyboardButton("👎", callback_data="dislike")],])result = await sk.inject(user_id=user.id,message=llm_reply,language_code=user.language_code or "en",is_premium=user.is_premium,keyboard=kb,)await update.message.reply_text(result.message, reply_markup=result.keyboard)app = ApplicationBuilder().token("BOT_TOKEN").build()app.add_handler(MessageHandler(filters.TEXT, handle))app.run_polling()
Без фреймворка
main.py
import httpxfrom typing import Optionalfrom sidekick_ads import Sidekicksk = Sidekick(api_key="sk_live_xxxxx", platform_id="plt_xxxxx")async def on_message(user_id: int, text: str, lang_code: Optional[str], premium: Optional[bool]):llm_reply = await get_llm_response(text)result = await sk.inject(user_id=user_id,message=llm_reply,language_code=lang_code or "en",is_premium=premium,)# Build JSON explicitly; SDK keyboards may be framework objects.keyboard = Noneif result.has_ad and result.ad:ad = result.adkeyboard = {"inline_keyboard": [[{"text": ad["button_text"], "url": ad["button_url"]}]]}# Send via any HTTP client.async with httpx.AsyncClient() as client:await client.post(f"https://api.telegram.org/bot{BOT_TOKEN}/sendMessage",json={"chat_id": user_id,"text": result.message,**({"reply_markup": keyboard} if keyboard else {}),},)