Telegram-бот на LLM: собрать своего бота через VseLLM из России

Telegram-бот на LLM — это бот, который принимает сообщения пользователей и отвечает через языковую модель. Собрать такого бота из России можно за четыре шага: получить токен бота у @BotFather, выпустить ключ VseLLM и пополнить баланс в рублях, написать код на Python (aiogram или python-telegram-bot) с обычным OpenAI SDK и подменённым base_url, а затем запустить бота через long polling или webhook. VseLLM даёт OpenAI-совместимый endpoint, доступный из российских сетей без VPN, поэтому запрос к модели — это те же chat completions, что и у OpenAI: меняется только адрес endpoint и значение поля model. Один ключ и один рублёвый баланс работают для всех провайдеров сразу, так что для бота можно выбрать самую дешёвую подходящую модель и переключаться между ними по одному параметру.

Оплата в рубляхИз России без VPNOpenAI-совместимый endpointЦены по курсу ЦБ · 4 июля 2026

Что понадобится для бота на LLM

Для рабочего Telegram-бота на LLM нужны три вещи: токен бота от Telegram, ключ к языковой модели и немного кода-обвязки между ними.

Первое — токен бота. Его выдаёт @BotFather, официальный служебный бот Telegram для регистрации ботов. Токен выглядит как строка вида 123456:ABC-DEF..., по нему ваш код авторизуется в Bot API и получает право читать входящие сообщения и отправлять ответы.

Второе — доступ к модели. Здесь вы используете ключ VseLLM: один ключ и один баланс в рублях работают со всеми доступными провайдерами (OpenAI, Anthropic, Google, DeepSeek и др.), а конкретная модель выбирается значением поля model в запросе. Endpoint VseLLM — https://api.payclarus.com/v1 — OpenAI-совместимый, поэтому подойдёт стандартный OpenAI SDK.

Третье — обвязка. Это скрипт, который получает сообщение из Telegram, передаёт его текст в модель через chat completions и отправляет ответ обратно в чат. На Python это компактный скрипт на aiogram или python-telegram-bot; на Node.js — на Telegraf.

Шаг 1. Токен бота у @BotFather

Откройте в Telegram диалог с @BotFather и отправьте команду /newbot. BotFather попросит имя бота (отображаемое) и username, который должен заканчиваться на bot (например, my_llm_assistant_bot). После создания он пришлёт токен доступа к Bot API.

Этот токен — секрет: любой, у кого он есть, может управлять вашим ботом. Не коммитьте его в репозиторий и не вставляйте прямо в код — держите в переменной окружения (например, TELEGRAM_BOT_TOKEN). Если токен утёк, отзовите его командой /revoke у того же @BotFather и получите новый.

Здесь же, у @BotFather, можно задать описание бота, аватар и список команд (/setcommands) — это влияет на то, как бот выглядит в интерфейсе Telegram, но для первого запуска достаточно одного токена.

Шаг 2. Ключ VseLLM и баланс в рублях

Модель, на которой думает бот, подключается через VseLLM. Ключ выпускается в кабинете VseLLM, а баланс пополняется в рублях: СБП, картой российского банка или по счёту для юрлица. Подписки нет — оплата pay-as-you-go по фактическому расходу токенов, поэтому для пет-проекта или пилота вы платите ровно за отправленные и полученные токены.

Один ключ работает со всеми провайдерами: чтобы бот отвечал через gpt-4o-mini, deepseek-v4-flash, claude-haiku-4-5 или gemini-3-flash, достаточно поменять значение model в коде — второй ключ и второй баланс заводить не нужно. Ключ храните в переменной окружения (VSELLM_API_KEY) рядом с токеном бота.

Endpoint https://api.payclarus.com/v1 доступен из российских сетей напрямую, VPN для запросов не требуется — это свойство инфраструктуры шлюза, а запросы к моделям выполняет инфраструктура VseLLM. Для команд можно выпустить несколько ключей с индивидуальными лимитами и смотреть детализацию расходов по каждому.

Шаг 3. Код на Python: aiogram + OpenAI SDK

Ниже — минимальный бот на aiogram. Логика простая: на каждое текстовое сообщение бот вызывает chat completions VseLLM и отправляет ответ модели обратно в чат. Единственное отличие от кода под официальный OpenAI SDK — параметр base_url при создании клиента.

Обратите внимание на две детали. Первое: клиент OpenAI SDK создаётся один раз с base_url='https://api.payclarus.com/v1' и вашим ключом VseLLM. Второе: для бота удобно держать system-подсказку (роль assistant) и по желанию — короткую историю диалога, чтобы ответы были в контексте.

import os
import asyncio
from aiogram import Bot, Dispatcher
from aiogram.types import Message
from openai import OpenAI

# Клиент модели через VseLLM (OpenAI-совместимый endpoint)
llm = OpenAI(
    api_key=os.environ["VSELLM_API_KEY"],
    base_url="https://api.payclarus.com/v1",  # единственное отличие от OpenAI
)

bot = Bot(token=os.environ["TELEGRAM_BOT_TOKEN"])
dp = Dispatcher()

SYSTEM = "Ты дружелюбный ассистент. Отвечай кратко и по делу."

@dp.message()
async def on_message(message: Message) -> None:
    resp = llm.chat.completions.create(
        model="gpt-4o-mini",  # дешёвая чат-модель; можно deepseek-v4-flash и др.
        messages=[
            {"role": "system", "content": SYSTEM},
            {"role": "user", "content": message.text or ""},
        ],
    )
    await message.answer(resp.choices[0].message.content)

async def main() -> None:
    await dp.start_polling(bot)  # long polling — публичный адрес не нужен

if __name__ == "__main__":
    asyncio.run(main())

Если вы предпочитаете python-telegram-bot, приведён и такой вариант во вкладке — API библиотеки другой, но вызов модели тот же самый: chat.completions.create с нужным слагом модели. Дешёвые чат-модели для бота (gpt-4o-mini, deepseek-v4-flash, claude-haiku-4-5, gemini-3-flash) отличаются только строкой model, так что переключить бота на другую модель — правка одного значения.

Шаг 4. Запуск: polling или webhook

У Telegram Bot API два способа получать обновления, и код выше по умолчанию использует long polling.

Long polling — бот сам периодически спрашивает у серверов Telegram новые сообщения. Плюс: работает откуда угодно, не нужен публичный HTTPS-адрес и настройка вебхука — достаточно запустить скрипт там, где есть доступ в интернет. Это удобный способ для разработки и небольших ботов. В aiogram это dp.start_polling(bot), в python-telegram-bot — application.run_polling().

Webhook — Telegram сам присылает обновления POST-запросом на ваш HTTPS-URL. Плюс: нет постоянного опроса, обновления приходят сразу; подходит для продакшена. Минус: нужен публичный адрес с валидным TLS-сертификатом и веб-сервер, принимающий запросы Telegram. Выбор между polling и webhook зависит от того, где вы разворачиваете бота и нужен ли ему публичный входящий адрес; на стороне VseLLM ничего менять не нужно — модель вызывается одинаково в обоих режимах.

Секреты (токен бота и ключ VseLLM) в любом варианте держите в переменных окружения, а не в коде.

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

Для большинства ботов — чат-ассистент, ответы на вопросы, обработка коротких сообщений — не нужна топовая модель: важнее низкая цена за токен и приемлемая скорость, потому что бот делает много мелких запросов.

Разумные дешёвые варианты через VseLLM: gpt-4o-mini (OpenAI), deepseek-v4-flash (DeepSeek), claude-haiku-4-5 (Anthropic) и gemini-3-flash (Google). Все они рассчитаны на быстрые массовые запросы и стоят заметно дешевле флагманов вроде gpt-4o или claude-opus-4-7. Поскольку баланс общий, можно начать с одной дешёвой модели, а если качество на вашем сценарии не устраивает — переключить бота на другую заменой одного значения model и сравнить.

Актуальные цены в рублях за 1M токенов смотрите в каталоге моделей VseLLM — они рендерятся по текущему курсу ЦБ, поэтому здесь конкретные суммы не приводим. Если позже боту понадобится более сильная модель для сложных задач, тот же ключ и баланс дают доступ ко всей линейке.

Калькулятор стоимости

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

При такой нагрузке дешевле всего — DeepSeek V4 Flash: 550 ₽ в месяц.

МодельЗа 1 запросВ месяц
DeepSeek V4 Flashдешевле всего0.06 ₽550 ₽
GPT-4o mini0.08 ₽825 ₽
Gemini 3 Flash0.35 ₽3 490 ₽
Claude Haiku 4.50.62 ₽6 190 ₽

Оценка по текущим ценам каталога (пересчёт из USD-прайсов провайдеров по курсу ЦБ). Реальный расход зависит от структуры промптов; детализация — в кабинете по каждому ключу.

Баланс один на все модели — через тот же ключ доступны OpenAI, Claude, Gemini и DeepSeek. Полный каталог с ценами — /ai-tools/models/.

Смежные материалы

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

Ранний доступ к моделям через VseLLM

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