Рассказываю, как создать чат‑бота в Телеграме на основе ИИ для интернет-магазина. Нам понадобятся арендованны�� сервер, API-ключи от нейросетей и базовые знания Python. По итогу у вас будет работающий Телеграм-бот, который 24/7 отвечает на вопросы о доставке, оплате и помогает с выбором товаров. Материал ориентирован на админов уровня джун и на технически подкованных маркетологов. 

Как устроен чат-бот

Прежде чем разворачивать сервер и писать код, нужно понять логику работы бота. В нашем примере бот для интернет-магазина с простым сценарием — FAQ. Например, если юзер спрашивает: «Сколько стоит доставка?», бот отвечает «Доставка курьером 300₽, при заказе от 3000₽ — бесплатно. Доставка в пункты выдачи 200₽».

Команды бота

  • /start — запуск бота и приветственное сообщение;

  • /help — список доступных команд и подсказки;

  • /info — информация о магазине.

Все остальные сообщения — вопросы к нейросети.

Что подготовить перед арендой VPS

  1. Получить API-ключи от нейросетей.

Chat GPT:

  • Регистрируемся на platform.openai.com

  • Переходим в раздел API keys.

  • Создаем ключ в разделе Create API key.

DeepSeek:

  • Регистрируемся на platform.deepseek.com

  • Подтверждаем email.

  • Получаем ключ в личном кабинете.

Grok:

  • Для начала нам понадобится активный аккаунт X* с подпиской Premium.

  • Доступ к API открывается через x.ai*.

  • Получаем ключ в разделе Developer.

  1. Создать Телеграм-бота. 

Создать бота в Телеграме занимает 2 минуты. Вбиваем в поиск @BotFather. Отправляем команду /newbot. Придумываем имя и юзернейм, который должен заканчиваться на bot, например, myshop_assistant_bot. Сохраняем токен. Это длинная строка вроде 1234567890:ABCdefGHIjklMNOpqrsTUVwxyz.

  1. Опционально зарегистрировать домен, если планируете webhook вместо polling.

Webhook и polling — два способа, с помощью которых бот на сервере узнает о новых сообщениях, которые пользователи пишут в Телеграм.

Параметр

Polling

Webhook

Как работает

Ваш сервер постоянно спрашивает у серверов Телеграм: «Есть новые сообщения для моего бота?»

Серверы Телеграм отправляют сообщения на ваш сервер через HTTP-запрос, как только пользователь пишет боту

Нагрузка на сервер

Запросы идут каждые 1-2 секунды, даже если никто ничего не пишет

Работает только при наличии сообщений

Требования

Только VPS с Python

VPS + домен + SSL-сертификат

Сложность настройки

Простая, 1 строка кода bot.polling()

Средняя, нужен веб-сервер, nginx/apache

В каких случаях подходит

Тесты, малые проекты (около 1000 сообщений в сутки)

Продакшн, высокая нагрузка (более 5000 сообщений в сутки)

Для старта рекомендуем использовать режим polling. Он банально прост в настройке. Когда бот соберет большую аудиторию, можно перейти на webhook.

*Запрещен в РФ.

Шаг 1. Аренда и настройка VPS

Для аренды виртуального сервера под чат-бот на основе ИИ рекомендуем минимальную конфигурацию: 1-2 vCPU, 2-4 ГБ RAM, 20-40 ГБ SSD. Ее хватит для обработки 100-200 запросов в час.

Что конкретно нужно сделать на сервере, чтобы чат-бот вообще мог работать? После аренды VPS вы получаете чистый сервер. На нем нет Python, нет зависимостей, нет папки под проект. Поэтому нужно выполнить следующие шаги:

  1. Подключаемся к серверу

ssh root@your_server_ip

Замените your_server_ip на IP-адрес VPS из панели Cloud4box.

2) Обновляем чистый сервер

sudo apt update && sudo apt upgrade -y

3) Настраиваем безопасный доступ по SSH 

По умолчанию VPS доступен по паролю, что небезопасно. Настроим доступ по SSH-ключам и отключим вход по паролю. На вашем локальном компьютере (не на сервере) сгенерируйте SSH-ключ, если его еще нет: 

ssh-keygen -t ed25519 -C "your_email@example.com

Скопируйте публичный ключ на сервер: 

ssh-copy-id root@your_server_ip 

Теперь подключитесь к серверу и отключите вход по паролю: 

sudo nano /etc/ssh/sshd_config

Найдите строку PasswordAuthentication yes и замените на: PasswordAuthentication no 

Сохраните файл и перезапустите SSH: 

sudo systemctl restart sshd 

Теперь подключиться к серверу можно только с вашего компьютера чер��з SSH-ключ.

4) Скачиваем и устанавливаем интерпретатор Python на сервер. После этого сервер сможет понимать и выполнять команды Python. А мы сможем запускать скрипты бота, подключать библиотеки и работать с API.

sudo apt install -y python3 python3-venv python3-pip git

Что устанавливаем:

  • python3 — интерпретатор Python версии 3.x.

  • python3-venv — инструмент для создания виртуальных окружений (изолированных «песочниц» для зависимостей проекта).

  • python3-pip — менеджер пакетов для установки библиотек Python.

  • git — система контроля версий (пригодится для обновления кода).

После установки проверьте версию:

python3 --version

Должно вывести что-то вроде Python 3.10.12..

5) Создаем отдельную папку на сервере, где будут храниться все файлы вашего чат-бота.

mkdir ~/shop-bot && cd ~/shop-bot

6) Создаем «песочницу», чтобы библиотеки для бота не конфликтовали с системными.

python3 -m venv venv

source venv/bin/activate

После активации в начале командной строки появится (venv). Это значит, что все работает.

7) Устанавливаем библиотеки, которые помогут подключить чат-бота к Телеграм и API нейросети, а также обработать HTTP-запросы.

pip install pyTelegramBotAPI openai requests python-dotenv

Что устанавливаем:

  • pyTelegramBotAPI — библиотека для работы с Телеграм Bot API.

  • openai — официальная библиотека для работы с API OpenAI (Chat GPT). Эту библиотеку можно использовать и для DeepSeek, так как он совместим с форматом OpenAI API.

  • requests — универсальная библиотека для HTTP-запросов.

  • python-dotenv — для безопасного хранения API-ключей в файле .env

Почему библиотека openai подходит для нескольких нейросетей? 

DeepSeek намеренно сделал свой API совместимым с форматом OpenAI. Это значит, что можно использовать библиотеку openai, просто изменив два параметра:

  • base_url — указываете адрес API DeepSeek вместо OpenAI.

  • api_key — вставляете ключ от DeepSeek.

Пример для Chat GPT:

from openai import OpenAI

client = OpenAI(api_key="ваш-ключ-openai")

response = client.chat.completions.create(

    model="gpt-3.5-turbo",

    messages=[{"role": "user", "content": "Привет!"}]

)

Тот же код для DeepSeek:

from openai import OpenAI

client = OpenAI(

    api_key="ваш-ключ-deepseek",

    base_url="https://api.deepseek.com"  # Меняем только адрес

)

response = client.chat.completions.create(

    model="deepseek-chat",

    messages=[{"role": "user", "content": "Привет!"}]

)

Grok API пока не полностью совместим с форматом OpenAI, поэтому для него пишем запросы через requests:

import requests

response = requests.post(

    "https://api.x.ai/v1/chat/completions",

    headers={"Authorization": f"Bearer {ваш_ключ_grok}"},

    json={

        "model": "grok-beta",

        "messages": [{"role": "user", "content": "Привет!"}]

    }

)

Установка занимает 1-2 минуты. После завершения создайте файл с помощью команды requirements.txt:

pip freeze > requirements.txt

Этот файл зафиксирует точные версии всех установленных библиотек. Пригодится при переносе проекта на другой сервер.

Шаг 2. Написание кода бота

Сейчас мы создадим Python-файл с кодом бота на вашем сервере. Все действия выполняем в том же SSH, где настраивали сервер на предыдущих шагах. 

Чат-бот на основе ChatGpt 5.1

Сначала убедитесь, что вы находитесь в папке проекта и виртуальное окружение активно.

cd ~/shop-bot 

source venv/bin/activate

В начале командной строки должно быть (venv)

Создаем файл bot_gpt.py на сервере:

nano bot_gpt.py

После выполнения этой команды откроется текстовый редактор nano прямо в терминале. Вы увидите пустой экран с курсором сверху. Это редактор, в который нужно вставить следующий код:

Пояснение: в коде вы увидите строки в тройных кавычках """...""". Это docstring — документационные строки. Они описывают, что делает функция, какие параметры принимает и что возвращает. Python не выполняет их как код, но они помогают понять логику работы.

import os

import telebot

from openai import OpenAI

from dotenv import load_dotenv

load_dotenv()

TELEGRAM_TOKEN = os.getenv('TELEGRAM_TOKEN')

OPENAI_API_KEY = os.getenv('OPENAI_API_KEY')

bot = telebot.TeleBot(TELEGRAM_TOKEN)

client = OpenAI(api_key=OPENAI_API_KEY)

SYSTEM_PROMPT = """

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

Помогай клиентам с вопросами об общих рекомендациях по выбору техники. Если клиент спрашивает про конкретные модели товаров, цены или наличие, отвечай: (вариант ответа).

Не придумывай информацию. Если не знаешь ответ, предложи связаться с оператором.

"""

@bot.message_handler(commands=['start'])

def send_welcome(message):

    """Отправляет приветственное сообщение при запуске бота"""

    bot.reply_to(message,

        "Привет! Я консультант магазина \n\n"

        "Помогу с выбором нужной техники"

        "Команды:\n"

        "/help — список команд\n"

        "/info — контакты магазина"

    )

@bot.message_handler(commands=['help'])

def send_help(message):

    """Показывает список доступных команд"""

    bot.reply_to(message,

        "Доступные команды:\n\n"

        "/start — начать диалог заново\n"

        "/help — показать это сообщение\n"

        "/info — контакты и график работы магазина\n\n"

        "Просто напишите свой вопрос, и я постараюсь помочь!"

    )

@bot.message_handler(commands=['info'])

def send_info(message):

    """Показывает контактную информацию магазина"""

    bot.reply_to(message,

        "Магазин \n\n"

        "Сайт: ru\n"

        "Email: \n"

        "Телефон:\n"

        "Режим работы:\n"

        "Пн-Пт: 9:00-20:00\n"

        "Сб-Вс: 10:00-18:00"

    )

def get_gpt_response(user_message):

    """

Отправляет запрос в ChatGPT и возвращает ответ

Параметры:

user_message (str): текст сообщения от пользователя

Возвращает:

str: ответ от нейросети или сообщение об ошибке

"""

try:

        response = client.chat.completions.create(

            model="gpt-5.1",

            messages=[

                {"role": "system", "content": SYSTEM_PROMPT},

                {"role": "user", "content": user_message}

            ],

            max_tokens=500,

            temperature=0.7

        )

        return response.choices[0].message.content

except Exception as e:

        print(f"Ошибка при обращении к GPT: {e}")

        return (

            "Извините, произошла ошибка при обработке запроса."

            "Попробуйте позже или свяжитесь с оператором: +7 (495) 123-45-67"

        )

@bot.message_handler(func=lambda message: True)

def handle_message(message):

"""Обрабатывает все текстовые сообщения от пользователя"""

    user_text = message.text

    bot.send_chat_action(message.chat.id, 'typing')

   response_text = get_gpt_response(user_text)

    bot.send_message(message.chat.id, response_text)

if name == '__main__':

    print('Бот с ChatGPT запущен и ожидает сообщений...')

    print('Для остановки нажмите Ctrl+C')

    bot.polling(none_stop=True)

После вставки кода сохраните файл:

  1. Нажмите Ctrl+O, появится строка File Name to Write.

  2. Нажмите Enter.

  3. Нажмите Ctrl+X.

Проверьте, что файл создан:

ls -lh bot_gpt.py

```

Должно вывести что-то вроде:

```

-rw-r--r-- 1 root root 2.8K Dec  8 15:30 bot_gpt.py

Теперь мы знаем, как работает бот на основе ChatGPT 5.1. Далее в статье, как создать чат-бот на основе ИИ DeepSeek и Grok вместо или в дополнение к ChatGPT. Напоминаем, в статье разбираются полноценные примеры с кодом, эндпоинтами, ключами и рекомендациями по настройке, чтобы читатель мог просто скопировать код и запустить.

Чат-бот на основе DeepSeek

DeepSeek реализован в формате, полностью совместимом с OpenAI API — тот же Python-клиент openai и структура запросов chat.completions.create. Отличаются только base_url и название модели.

import os

import telebot

from openai import OpenAI

from dotenv import load_dotenv

load_dotenv()

TELEGRAM_TOKEN = os.getenv("TELEGRAM_TOKEN")

DEEPSEEK_API_KEY = os.getenv("DEEPSEEK_API_KEY")

bot = telebot.TeleBot(TELEGRAM_TOKEN)

client = OpenAI(

    api_key=DEEPSEEK_API_KEY,

    base_url="https://api.deepseek.com"

)

SYSTEM_PROMPT = """

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

Помогай клиентам с вопросами об общих рекомендациях по выбору техники. Если клиент спрашивает про конкретные модели товаров, цены или наличие, отвечай: (вариант ответа).

Не придумывай информацию. Если не знаешь ответ, предложи связаться с оператором

"""

def ask_deepseek(message_text):

    try:

        response = client.chat.completions.create(

            model="deepseek-chat",

            messages=[

                {"role": "system", "content": SYSTEM_PROMPT},

                {"role": "user", "content": message_text}

            ],

            max_tokens=500,

            temperature=0.7

        )

        return response.choices[0].message.content

    except Exception as e:

        print("Ошибка DeepSeek:", e)

        return "Не удалось получить ответ от DeepSeek. Попробуйте позже."

@bot.message_handler(func=lambda m: True)

def handle(m):

    bot.send_chat_action(m.chat.id, "typing")

    answer = ask_deepseek(m.text)

    bot.send_message(m.chat.id, answer)

if name == "__main__":

    print("Бот с DeepSeek запущен")

    bot.polling()

Чат-бот на основе Grok

API Grok работает через классический HTTP-запрос POST. Формат JSON похож на OpenAI, но эндпоинт другой: POST https://api.x.ai/v1/chat/completions. Подробности и примеры можно найти в официальной документации Grok.

import os

import telebot

import requests

from dotenv import load_dotenv

load_dotenv()

TELEGRAM_TOKEN = os.getenv("TELEGRAM_TOKEN")

GROK_API_KEY = os.getenv("GROK_API_KEY")

bot = telebot.TeleBot(TELEGRAM_TOKEN)

SYSTEM_PROMPT = """

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

Помогай клиентам с вопросами об общих рекомендациях по выбору техники. Если клиент спрашивает про конкретные модели товаров, цены или наличие, отвечай: (вариант ответа).

Не придумывай информацию. Если не знаешь ответ, предложи связаться с оператором

"""

def ask_grok(message_text):

    try:

        response = requests.post(

            "https://api.x.ai/v1/chat/completions",

            headers={

                "Authorization": f"Bearer {GROK_API_KEY}",

                "Content-Type": "application/json"

            },

            json={

                "model": "grok-beta",

                "messages": [

                    {"role": "system", "content": SYSTEM_PROMPT},

                    {"role": "user", "content": message_text}

                ],

                "max_tokens": 500,

                "temperature": 0.7

            },

            timeout=20

        )

        data = response.json()

        return data["choices"][0]["message"]["content"]

    except Exception as e:

        print("Ошибка Grok:", e)

        return "Не удалось получить ответ от Grok. Попробуйте позже."

@bot.message_handler(func=lambda m: True)

def handle(m):

    bot.send_chat_action(m.chat.id, "typing")

    answer = ask_grok(m.text)

    bot.send_message(m.chat.id, answer)

if name == "__main__":

    print("Бот с Grok запущен")

    bot.polling()

Шаг 3. Запуск и тестирование

Теперь, когда код готов, осталось запустить бота и проверить, что он корректно отвечает на сообщения в Телеграме.

  1. Проверяем файл .env

В папке проекта должен быть файл .env со всеми токенами:

TELEGRAM_TOKEN=1234567890:ABCdef...

OPENAI_API_KEY=...

DEEPSEEK_API_KEY=...

GROK_API_KEY=...

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

  1. Запускаем любой бот

Примеры команд (все выполняются в папке проекта и в активированном venv):

Если всё настроено корректно, вы увидите сообщение:

Бот запущен и ожидает сообщений...

Для остановки нажмите Ctrl+C

Теперь можно открыть Телеграм, написать боту команду /start и проверить работу команд.

Шаг 4. Запуск чат-бота в фоновом режиме

Если вы закроете SSH, процесс с ботом остановится. Чтобы запустить его так, чтобы он работал 24/7, нужен один из вариантов.

  1. Screen 

Устанавливаем:

sudo apt install screen

Запускаем сессию:

screen -S bot

Запускаем бота:

python3 bot_gpt.py

Отключаемся от сессии, не останавливая процесс:

Ctrl+A, затем D

Возвращаемся обратно:

screen -r bot

  1. Systemd, более сложный 

Создаем сервис:

sudo nano /etc/systemd/system/shopbot.service

Вставляем:

[Unit]

Description=AI Shop Bot

After=network.target

[Service]

WorkingDirectory=/root/shop-bot

ExecStart=/root/shop-bot/venv/bin/python3 bot_gpt.py

Restart=always

Environment="TELEGRAM_TOKEN=..."

Environment="OPENAI_API_KEY=..."

[Install]

WantedBy=multi-user.target

Сохраняем, запускаем сервис:

sudo systemctl daemon-reload

sudo systemctl start shopbot

sudo systemctl enable shopbot

Проверяем статус:

sudo systemctl status shopbot

Теперь бот автоматически поднимается после перезагрузки сервера. 

Почему systemd лучше screen для production? На Cloud4box пользователи чаще используют systemd, так как он автоматически перезапускает бота при сбоях, логирует работу через journalctl и интегрируется с системным мониторингом.

Если вы арендуете виртуальный сервер на Cloud4box, в панели управления доступен мониторинг нагрузки. Для выделенных серверов эта функция пока недоступна, но можно настроить собственный мониторинг через Prometheus + Grafana.

Шаг 5. Варианты масштабирования

Когда количество запросов увеличивается, появляются новые требования к скорости и оптимизации. Говоря про скорость, стоит перейти с polling на webhook. 

Домен можно зарегистрировать через Cloud4box за пару кликов. Что касается SSL, самый простой вариант — использовать бесплатный сертификат от Let’s Encrypt, через certbot:

sudo apt install certbot python3-certbot-nginx

sudo certbot --nginx -d yourdomain.ru

Сертификат автоматически продлевается каждые 90 дней. Если вы не хотите настраивать сертификаты вручную, то можно заказать установку у технической поддержки Cloud4box, это дело 5-10 минут.

Далее нужно настроить веб-сервер nginx.

Установите nginx:

sudo apt install nginx

Создайте конфигурацию для бота:

sudo nano /etc/nginx/sites-available/bot

Вставьте:

server {

    listen 443 ssl;

    server_name yourdomain.ru;

    ssl_certificate /etc/letsencrypt/live/yourdomain.ru/fullchain.pem;

    ssl_certificate_key /etc/letsencrypt/live/yourdomain.ru/privkey.pem;

    location /webhook {

        proxy_pass http://127.0.0.1:8000;

        proxy_set_header Host $host;

        proxy_set_header X-Real-IP $remote_addr;

    }

}

Активируйте конфигурацию:

sudo ln -s /etc/nginx/sites-available/bot /etc/nginx/sites-enabled/

sudo nginx -t

sudo systemctl restart nginx

Вместо bot.polling() используйте Flask/FastAPI для приёма webhook:

from flask import Flask, request

app = Flask(__name__)

@app.route('/webhook', methods=['POST'])

def webhook():

    update = telebot.types.Update.de_json(request.stream.read().decode("utf-8"))

    bot.process_new_updates([update])

    return '', 200

if name == '__main__':

    bot.remove_webhook()

    bot.set_webhook(url="https://yourdomain.ru/webhook")

    app.run(host='127.0.0.1', port=8000)

Выполните команду (замените <TELEGRAM_TOKEN> на ваш токен):

curl -F "url=https://yourdomain.ru/webhook" https://api.telegram.org/bot<TELEGRAM_TOKEN>/setWebhook

Проверьте статус:

curl https://api.telegram.org/bot<TELEGRAM_TOKEN>/getWebhookInfo

Так Телеграм будет напрямую отправлять сообщения на ваш сервер.

Далее, в контексте FAQ-бота, очевидно, что ему часто будут задавать одинаковые вопросы. В таком случае, лучше сохранять готовые ответы в Redis или SQLite, чтобы снизить нагрузку на API нейросети. Если бот обрабатывает больше 5-10 тысяч сообщений в сутки, рекомендуем перейти на выделенный сервер, он стабильнее при нагрузке и не делит ресурсы с соседями.

Пример в Redis:

import redis

r = redis.Redis(host='localhost', port=6379, db=0)

key = f"faq:{user_message.lower()}"

cached = r.get(key)

if cached:

    return cached.decode()

answer = ask_llm(user_message)

r.set(key, answer, ex=86400)  # сутки

Также важно понимать: когда проект растет, поддерживать один большой файл становится сложно. Лучше разделить структуру:

bot/

  handlers/

  llm/

  utils/

  config.py

  main.py

Вывод

В статье описан путь от аренды VPS до запуска чат-бота на основе ChatGPT, DeepSeek и Grok через API. Вы узнали, как подготовить сервер, установить Python и зависимости, подключить Телеграм-бота, реализовать обработку сообщений и интегрировать внешние нейросети через API. Благодаря примерам кода даже технически подкованный маркетолог или начинающий админ сможет самостоятельно развернуть бота за 20-40 минут.

Комментарии (2)


  1. K0Jlya9
    15.12.2025 10:50

    Есть же сайт магазина, зачем еще какой то бот в запрещенной соцсети?


    1. yacute
      15.12.2025 10:50

      ну тг не запрещен в России. А на счет бота, лучше иметь чем не иметь, удобно