Telegram bot

AI API для Telegram-бота

Вынесите секретный ключ на backend бота и используйте OpenAI-compatible клиент для ответов на сообщения — без VPN, с рублёвой оплатой и защитой бюджета.

Для кого: разработчики ботов, автоматизаций и внутренних помощников

Создать API key

Быстрый старт

От ключа до первого ответа

  1. 01

    Разместите ключ только на backend.

  2. 02

    Выберите модель и ограничьте max_tokens.

  3. 03

    Обрабатывайте ошибки и сохраняйте request ID.

Рабочий шаблон

Скопируйте основу и замените модель

Используйте только идентификатор из актуального каталога. Ключ храните в переменной окружения.

Python · bot backend
import os
from openai import OpenAI

client = OpenAI(
    api_key=os.environ["NORMAHUB_API_KEY"],
    base_url="https://api.normahub.cc/v1",
)

def answer(text: str) -> str:
    result = client.chat.completions.create(
        model="MODEL_ID",
        messages=[{"role": "user", "content": text}],
        max_tokens=256,
    )
    return result.choices[0].message.content or ""
Ключ не попадает в Telegram-клиент.
Стоимость запроса зависит от input/output usage.
Лимит API key защищает бюджет отдельного бота.

Детали решения

Как это устроено

Архитектура правильного бота

Клиент присылает текст вашему серверу, сервер добавляет секретный ключ и ходит в NormaHub, ответ уходит пользователю. Ключ не видят ни Telegram-клиент, ни мини-приложение, ни логи. Вход обрезайте по длине, выход ограничивайте max_tokens: без этих двух строк один «расскажи длинно» стоит как сто обычных ответов.

Память диалога без разорения

Модель не помнит переписку — память делаете вы скользящим окном последних 5–6 реплик. Весь лог слать нельзя: каждое сообщение будет стоить как сумма всей истории. Для MVP хватит памяти процесса, для продакшена — Redis или Postgres с TTL.

Три слоя защиты бюджета

Публичный бот — открытый кошелёк. Первый слой: rate limit в коде на пользователя. Второй: spend limit на API-ключе в кабинете — аварийный тормоз при спаме. Третий: max_tokens на каждый вызов. Плюс разделение моделей: дешёвая в личке, сильная — по отдельной команде.

Webhook или polling

Polling проще для старта: скрипт крутится anywhere и опрашивает Telegram. Webhook быстрее и экономнее на большой нагрузке, но требует публичный HTTPS-адрес и обработку повторных доставок (Telegram может прислать апдейт дважды — дедуплицируйте по update_id, иначе заплатите за двойной ответ). В обоих режимах ключ остаётся на сервере, а логика идемпотентности — в вашем коде.

Оплата и контроль расходов

Запросы оплачиваются с предварительно пополненного баланса по актуальным ставкам выбранной модели. Минимум и комиссия показываются перед оплатой в кабинете; лимит расходов задаётся для API-ключа.

Ограничения доступности

Возможности зависят от модели и внешнего маршрута. При недоступности provider запрос может завершиться ошибкой; проверяйте каталог, статус и документацию перед production.

Частые вопросы

Где хранить ключ Telegram-бота?

Только на backend, в переменных окружения. В клиент, мини-приложение и репозиторий ключ попадать не должен.

Какую модель выбрать для бота?

Быструю и дешёвую для диалогов, сильную — для тяжёлых команд. ID и цены — в каталоге моделей.

Бот отвечает медленно. Что делать?

Сразу отвечайте «Думаю…», затем редактируйте сообщение результатом. Держите max_tokens разумным и задавайте timeout клиенту.

Нужен ли VPN серверу в России?

Нет. Backend обращается к api.normahub.cc напрямую, оплата — с рублёвого баланса.

Чем solution отличается от гайда по Telegram-боту?

Здесь — архитектура и экономика решения. Код backend, история диалога и разбор ошибок — в гайде Telegram-бот.

Сколько стоит диалог пользователя?

Зависит от модели, длины истории и max_tokens. Ориентир считайте калькулятором на странице моделей, факт — в истории личного кабинета.