Как сделать Telegram-бота на GPT или Claude

Чтобы сделать Telegram-бота на GPT, хватит двух библиотек: aiogram 3 принимает сообщения, OpenAI SDK отправляет их модели. Если в клиенте указать base_url https://api.pro-ai.online/v1, бот будет работать с GPT и Claude из России без VPN, а API вы оплатите российской картой.

Как подключить

  1. Получите два ключа

    Токен бота выдаёт BotFather в Telegram по команде /newbot. API-ключ вида sk-cxa-... скопируйте в кабинете Pro AI API. После подключения нашего Telegram-бота и подписки на канал там будет 30 ₽ на пробу.

  2. Поставьте библиотеки

    Выполните pip install aiogram openai. Токен бота и API-ключ положите в переменные окружения BOT_TOKEN и OPENAI_API_KEY, в коде их быть не должно.

  3. Проверьте запрос к модели

    В примере ниже впишите свой ключ в параметр api_key и запустите его. Если он напечатал ответ, ключ и адрес верные, можно собирать бота.

Примеры кода

Ключ храните в переменной окружения, а не в коде. Все модели и адреса — в документации.

Python (OpenAI SDK)

from openai import OpenAI

client = OpenAI(base_url="https://api.pro-ai.online/v1", api_key="sk-cxa-...")
reply = client.chat.completions.create(
    model="gpt-6-luna",
    messages=[{"role": "user", "content": "Привет! Что ты умеешь?"}],
)
print(reply.choices[0].message.content)

Когда стоит писать своего бота, а когда хватит готового

Если вам нужен ChatGPT или Claude в Telegram для себя, код писать незачем. Для этого есть наш Telegram-бот, а без регистрации можно начать с бесплатного чата на странице /besplatnyj-chat-gpt.

Свой бот оправдан, когда у него должна быть ваша логика. Он отвечает клиентам по базе знаний, принимает заявки или работает в группе с заданной ролью. Ниже как раз про такого бота. Код ниже рассчитан на Python, но та же схема переносится на Node.js с библиотекой grammY или Telegraf.

Что понадобится для Telegram-бота на GPT

Подойдёт Python 3.10 или новее. Сообщения удобно принимать через aiogram 3: библиотека асинхронная, и пока модель думает над одним ответом, бот принимает сообщения от других людей. python-telegram-bot с версии 20 тоже асинхронная, схема с ней та же, отличаются имена классов.

К модели обращается официальный пакет openai. Пример на странице использует синхронный клиент OpenAI, в боте берите асинхронный AsyncOpenAI с теми же api_key и base_url. Остальной код пишется по документации OpenAI.

  • Токен бота от BotFather в переменной окружения BOT_TOKEN.
  • Ключ Pro AI API в переменной OPENAI_API_KEY: SDK читает её сам.
  • Адрес https://api.pro-ai.online/v1 в параметре base_url или в переменной OPENAI_BASE_URL.
  • ID модели: gpt-6-luna для быстрых ответов, gpt-6-sol для сложных, claude-sonnet-5 для Claude.

Как устроен код бота на aiogram 3

Основа умещается в три десятка строк. Создаёте Bot с токеном из os.environ["BOT_TOKEN"], Dispatcher и один обработчик текстовых сообщений с фильтром F.text. В обработчике вызываете client.chat.completions.create с моделью и списком сообщений и отправляете ответ через message.answer. Запуск: dp.start_polling(bot) внутри asyncio.run.

Клиент AsyncOpenAI создавайте один раз при старте. Запрос к модели оборачивайте в try/except: сеть может моргнуть, баланс может закончиться, и человек должен получить хотя бы «Не получилось, попробуйте через минуту».

Пока модель отвечает, отправляйте действие typing через bot.send_chat_action. Пользователь увидит «печатает…» и не станет слать вопрос повторно.

На старте хватит polling: бот сам опрашивает Telegram и работает хоть на домашнем компьютере. На сервере с доменом и HTTPS можно перейти на webhook. aiogram поддерживает оба режима, код обработчиков при этом не меняется.

История диалога: как бот помнит разговор

Между запросами модель ничего не помнит. Чтобы бот понимал контекст, на каждый запрос отправляйте переписку целиком: системное сообщение с ролью бота, затем чередование user и assistant.

Для начала хватит словаря в памяти, где ключ chat.id, а значение список сообщений. После перезапуска он обнулится, так что в рабочем боте историю храните в SQLite или Redis. Добавьте команду /reset, которая очищает историю: люди часто хотят начать заново.

Характер бота задаёт системное сообщение. Опишите в нём, кто он, на какие темы отвечает, что делать с вопросами не по теме и на каком языке писать. Чем конкретнее инструкция, тем реже бот уходит в сторону.

Ограничение длины контекста и ответа

Вся история едет в каждый запрос заново и оплачивается как входные токены. Разговор на сотню реплик стоит заметно дороже первого вопроса и рано или поздно упрётся в лимит контекста модели.

Проще всего хранить последние 20 сообщений плюс системное. Точнее считать токены по полю usage из ответа и обрезать историю, когда сумма переходит ваш порог. Если ранний контекст важен, раз в несколько десятков реплик просите модель сжать начало разговора в выжимку и подставляйте её вместо старых сообщений.

Длину ответа ограничивает параметр max_tokens. У Telegram свой предел, 4096 символов на сообщение, и длинный ответ придётся резать на части.

В группе стоит ограничить и частоту, например несколько запросов в минуту от одного человека. Иначе любопытный участник отправит сотню сообщений подряд, и каждое уйдёт в модель за ваш счёт.

Стриминг: ответ появляется по мере генерации

С параметром stream=True модель отдаёт ответ кусками, и первые слова приходят почти сразу. В Telegram это выглядит так: бот отправляет сообщение-заглушку и потом редактирует его через bot.edit_message_text, дописывая накопленный текст.

Редактировать на каждый кусок не получится, Telegram ограничивает частоту запросов и вернёт Too Many Requests. Обновляйте сообщение примерно раз в секунду, а финальный текст отправьте последним редактированием. Если текст не изменился, Telegram тоже вернёт ошибку, её достаточно поймать и пропустить.

Короткие ответы можно отправлять и без стриминга. Он заметен, когда модель пишет абзац или больше и человек иначе ждал бы ответа в тишине.

GPT или Claude: какую модель поставить в бота и сколько это стоит

Модель меняется одной строкой, поэтому вынесите её в переменную окружения и переключайте без правки кода. Через тот же адрес /v1/chat/completions работают и GPT, и Claude, и, например, deepseek-v4-flash.

Ориентир по цене: типичный ответ GPT-6 Sol на 2000 токенов вопроса и 800 ответа стоит у нас около 0,22 ₽, Claude Opus 5.5 около 0,33 ₽. Если 50 человек задают боту по 20 вопросов в день, это тысяча ответов и около 220 ₽ в день на GPT-6 Sol. С длинной историей вход растёт, и цена ответа тоже, поэтому обрезка контекста экономит деньги напрямую.

  • gpt-6-luna: быстрые короткие ответы, поддержка, бот с частыми вопросами. Стоит дешевле GPT-6 Sol.
  • gpt-6-sol: сложные вопросы, длинные тексты, разбор документов.
  • claude-sonnet-5: если вам ближе стиль Claude или бот помогает с кодом.
  • Точная цена каждого запроса видна в кабинете, в разделе «Расход».

Чек-лист перед запуском: ошибки и их признаки

У новых ботов проблемы обычно одни и те же. Пройдитесь по списку до того, как отдавать бота людям.

  • Бот отвечает 401 на каждый запрос: ключ скопирован не целиком или в переменной окружения старый ключ.
  • SDK получает 404: base_url не заканчивается на /v1.
  • Бот молчит в группе: включён privacy mode в BotFather, и бот видит только команды и ответы на свои сообщения.
  • Длинный ответ не отправляется: текст больше 4096 символов, его нужно разбить.
  • Ответ приходит через десятки секунд: модель тяжелее, чем нужно задаче. Попробуйте gpt-6-luna или включите стриминг.
  • Токен попал в git или в чат: перевыпустите его в BotFather командой /revoke.
  • Запросы перестали проходить: закончился баланс. Пополните его, ключ и настройки при этом не меняются.

До 78% дешевле официальных цен

Сколько стоят 1 000 типичных ответов: вопрос на страницу, ответ на полстраницы.

МодельОфициальноУ нас
GPT‑6 Astra5 010 ₽1 090 ₽ −78%
GPT‑6 Sol1 000 ₽220 ₽ −78%

Официальные цены — по прайсам Anthropic, OpenAI на 4 октября 2026, курс 83,48 ₽ за $1. Точное списание зависит от длины запроса и видно в кабинете.

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

Будет ли бот работать с российского сервера?

Да. Бот обращается к API Telegram и к api.pro-ai.online, оба адреса открываются из России без VPN.

Можно сделать бота на Claude без Anthropic SDK?

Да. В OpenAI SDK с адресом https://api.pro-ai.online/v1 достаточно указать модель claude-sonnet-5.

Подойдёт ли python-telegram-bot вместо aiogram?

Подойдёт. Запрос к модели пишется одинаково, меняется только код приёма и отправки сообщений.

А если я не хочу программировать?

Тогда пользуйтесь нашим Telegram-ботом или бесплатным чатом на сайте, свой бот для этого не нужен.

Как оплатить API для бота?

Пополните баланс картой российского банка, через СБП или криптовалютой, от 50 ₽. Деньги списываются только за ответы модели.

Можно запустить бота на пробных деньгах?

Да, для отладки их хватит. За подключение нашего Telegram-бота и подписку на канал начисляем 30 ₽, это больше сотни типичных ответов GPT-6 Sol.

Готовы попробовать?

Ключ за 30 секунд, 30 ₽ на пробу за подключение Telegram-бота.

Как сделать Telegram-бота на GPT или Claude: код на Python