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

Примеры для фреймворков

Готовые примеры для каждого поддерживаемого фреймворка. Каждый пример — полноценный обработчик.

grammY — с middleware

bot.ts
import { Bot } from "grammy";
import { sidekickMiddleware } from "sidekick-sdk";
const bot = new Bot("BOT_TOKEN");
// Register middleware — injects `sidekick` into every handler
bot.use(sidekickMiddleware({
apiKey: "sk_live_xxxxx",
platformId: "plt_xxxxx",
}));
bot.on("message:text", async (ctx) => {
const llmReply = await getLlmResponse(ctx.message.text);
// Your existing keyboard (if any)
const kb = {
inline_keyboard: [
[{ text: "👍", callback_data: "like" },
{ text: "👎", callback_data: "dislike" }],
],
};
const result = await ctx.sidekick.inject({
userId: ctx.from.id,
message: llmReply,
languageCode: ctx.from.language_code || "en",
isPremium: ctx.from.is_premium,
keyboard: kb,
});
await ctx.reply(result.message, { reply_markup: result.keyboard });
});

grammY — без middleware

bot.ts
import { Bot } from "grammy";
import { Sidekick } from "sidekick-sdk";
const bot = new Bot("BOT_TOKEN");
const sk = new Sidekick({
apiKey: "sk_live_xxxxx",
platformId: "plt_xxxxx",
});
bot.on("message:text", async (ctx) => {
const llmReply = await getLlmResponse(ctx.message.text);
const result = await sk.inject({
userId: ctx.from.id,
message: llmReply,
languageCode: ctx.from.language_code || "en",
isPremium: ctx.from.is_premium,
});
await ctx.reply(result.message, { reply_markup: result.keyboard });
});

Telegraf

bot.ts
import { Telegraf } from "telegraf";
import { Sidekick } from "sidekick-sdk";
const bot = new Telegraf("BOT_TOKEN");
const sk = new Sidekick({
apiKey: "sk_live_xxxxx",
platformId: "plt_xxxxx",
});
bot.on("text", async (ctx) => {
const llmReply = await getLlmResponse(ctx.message.text);
const kb = {
inline_keyboard: [
[{ text: "👍", callback_data: "like" },
{ text: "👎", callback_data: "dislike" }],
],
};
const result = await sk.inject({
userId: ctx.from.id,
message: llmReply,
languageCode: ctx.from.language_code || "en",
isPremium: ctx.from.is_premium,
keyboard: kb,
});
await ctx.reply(result.message, { reply_markup: result.keyboard });
});

node-telegram-bot-api

bot.js
import TelegramBot from "node-telegram-bot-api";
import { Sidekick } from "sidekick-sdk";
const bot = new TelegramBot("BOT_TOKEN", { polling: true });
const sk = new Sidekick({
apiKey: "sk_live_xxxxx",
platformId: "plt_xxxxx",
});
bot.on("message", async (msg) => {
if (!msg.text || !msg.from) return;
const llmReply = await getLlmResponse(msg.text);
const result = await sk.inject({
userId: msg.from.id,
message: llmReply,
languageCode: msg.from.language_code || "en",
isPremium: msg.from.is_premium,
});
await bot.sendMessage(msg.chat.id, result.message, {
reply_markup: result.keyboard ?? undefined,
});
});