# Telegram-бот с ИИ на Python: от нуля до деплоя

> AI Release · @ai_release1 · https://ai-release.net/guides/telegram-bot-s-ii-na-python.html

Telegram-бот с ИИ на Python — это программа, которая принимает сообщения пользователей в мессенджере, отправляет их нейросети через API (интерфейс обмена данными между программами) и возвращает ответ. Этот гайд решает задачу новичка: от установки Python до работающего бота на сервере. Подходит для Windows 10/11, macOS и Linux, с Python 3.10+.

## Требования и подготовка
![Иллюстрация к разделу «Требования и подготовка»](https://ai-release.net/guides/img/telegram-bot-s-ii-na-python-ru-1.jpg)

- Компьютер с Windows 10/11, macOS или Linux и доступом в интернет.
- Python версии 3.10 или новее (проверьте: `python --version`).
- Аккаунт Telegram — через него вы получите токен бота.
- API-ключ от выбранной нейросети (получается в личном кабинете провайдера модели).
- Базовое умение работать с терминалом и текстовым редактором.
- Для деплоя (размещения на постоянной работе) — сервер VPS или бесплатная платформа вроде PythonAnywhere/Render.

## Пошаговая инструкция
![Иллюстрация к разделу «Пошаговая инструкция»](https://ai-release.net/guides/img/telegram-bot-s-ii-na-python-ru-2.jpg)

1. **Установите Python и создайте папку проекта.** Скачайте Python с официального сайта, при установке на Windows отметьте галочку «Add Python to PATH». Затем создайте рабочую папку.

**Пример:**
```bash
mkdir my_ai_bot
cd my_ai_bot
```
Ожидаемый результат: вы внутри пустой папки — это изолированное рабочее место, чтобы файлы проекта не смешивались с другими.

2. **Создайте виртуальное окружение.** Виртуальное окружение (venv) — это «контейнер», где зависимости проекта живут отдельно от системы.

**Пример:**
```bash
python -m venv venv
venv\Scripts\activate        # Windows
source venv/bin/activate     # macOS/Linux
```
Ожидаемый результат: в начале строки терминала появится `(venv)`. Это значит, что устанавливаемые пакеты попадут только в проект.

3. **Установите библиотеки.** Понадобятся библиотека для Telegram и клиент для запросов к нейросети.

**Пример:**
```bash
pip install python-telegram-bot requests
```
Ожидаемый результат: строки «Successfully installed python-telegram-bot-… requests-…». Почему это работает: pip — менеджер пакетов Python, он скачивает библиотеки из официального репозитория.

4. **Получите токен бота у BotFather.** Откройте Telegram, найдите официального бота @BotFather, отправьте команду `/newbot`, задайте имя и username бота (username должен заканчиваться на `bot`).

**Пример:** имя «Мой ИИ-помощник», username `my_first_ai_helper_bot`.
Ожидаемый результат: BotFather пришлёт сообщение с токеном вида `1234567890:AAExxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx`. Сохраните его — это «пароль» вашего бота, никому его не показывайте.

5. **Получите API-ключ нейросети.** Зарегистрируйтесь у провайдера выбранной модели, в личном кабинете найдите раздел API-ключей и создайте новый ключ. Храните его отдельно от кода — в переменной окружения или файле `.env`, который не выкладываете на GitHub.

6. **Напишите код бота.** Создайте файл `bot.py`. Логика простая: бот ловит сообщение → отправляет текст нейросети → пересылает ответ пользователю.

**Пример (минимальный каркас):**
```python
import os
import requests
import telegram
from telegram.ext import Updater, MessageHandler, Filters

TOKEN = os.environ["BOT_TOKEN"]
API_KEY = os.environ["AI_API_KEY"]

def reply(update, context):
    response = requests.post(
        "https://api.провайдер-нейросети.ru/v1/chat",
        headers={"Authorization": f"Bearer {API_KEY}"},
        json={"messages": [{"role": "user", "content": update.message.text}]},
    )
    update.message.reply_text(response.json()["answer"])

updater = Updater(TOKEN)
updater.dispatcher.add_handler(MessageHandler(Filters.text, reply))
updater.start_polling()
updater.idle()
```
Ожидаемый результат: файл сохранён без ошибок. Почему это работает: `start_polling()` заставляет бот постоянно «спрашивать» серверы Telegram о новых сообщениях — для новичка это проще, чем вебхуки (webhook — способ, при котором Telegram сам присылает сообщения на ваш сервер по URL).

7. **Запустите бота локально.** Перед запуском задайте переменные окружения, чтобы ключи не попали в код.

**Пример:**
```bash
export BOT_TOKEN="1234567890:AAExxxx..."      # macOS/Linux
set BOT_TOKEN=1234567890:AAExxxx...           # Windows
python bot.py
```
Ожидаемый результат: терминал «завис» без ошибок — бот работает. Напишите ему в Telegram любое сообщение: через несколько секунд придёт ответ нейросети.

8. **Задеплойте бота на сервер.** Арендуйте VPS (виртуальный сервер) или используйте бесплатную платформу. Скопируйте файлы проекта, создайте venv на сервере, установите зависимости и запустите бота через `nohup` или менеджер процессов, чтобы он работал после закрытия терминала.

**Пример (на Linux-сервере):**
```bash
nohup python bot.py > bot.log 2>&1 &
```
Ожидаемый результат: команда вернёт управление, а в файле `bot.log` появится лог работы. Почему это работает: `nohup` отключает процесс от вашей сессии — бот продолжает работать, даже когда вы вышли с сервера.

## Чек-лист перед запуском

- [ ] Python 3.10+ установлен, `python --version` работает.
- [ ] Токен от BotFather сохранён и не «зашит» в код.
- [ ] API-ключ нейросети лежит в переменной окружения или `.env`.
- [ ] Файл `.env` добавлен в `.gitignore`.
- [ ] Бот отвечает на тестовое сообщение локально.
- [ ] На сервере бот запущен через `nohup`/менеджер процессов и переживает перезапуск сессии.

## Возможные проблемы и решения
![Иллюстрация к разделу «Возможные проблемы и решения»](https://ai-release.net/guides/img/telegram-bot-s-ii-na-python-ru-3.jpg)

**Проблема 1. Ошибка вида `Unauthorized` или `Invalid token` при запуске.**
Симптом: бот не стартует, в терминале сообщение о невалидном токене.
Решение: 1) проверьте, что скопировали токен целиком, без пробелов и лишних кавычек; 2) убедитесь, что переменная окружения задана в той же сессии терминала, где запускается бот; 3) если токен «утёк» — отзовите его у @BotFather командой `/revoke` и выпустите новый.

**Проблема 2. Ошибка вида `401 Unauthorized` или `quota exceeded` от API нейросети.**
Симптом: бот отвечает «Извините, произошла ошибка» или падает с трейсбеком на строке запроса.
Решение: 1) проверьте API-ключ в личном кабинете провайдера; 2) проверьте баланс/лимиты запросов; 3) добавьте в код обработку исключений (`try/except` вокруг запроса), чтобы бот не падал, а писал пользователю вежливое сообщение об ошибке.

**Проблема 3. Бот молчит, хотя процесс запущен.**
Симптом: `python bot.py` работает, но на сообщения нет ответа.
Решение: 1) проверьте, что вы пишете именно своему боту (username из BotFather); 2) посмотрите лог — если там пусто, убедитесь, что зарегистрирован обработчик текстовых сообщений; 3) на сервере проверьте, что процесс жив: `ps aux | grep bot.py`.

## FAQ

**Сколько стоит запустить такого бота?**
Затраты складываются из VPS (есть бесплатные тарифы у некоторых платформ) и оплаты запросов к нейросети по тарифам провайдера. Точные цены смотрите в актуальных прайсах провайдеров — они регулярно меняются.

**Можно ли сделать бота с ИИ бесплатно?**
Да, на этапе разработки — бесплатно: токен BotFather выдаётся без оплаты, а многие провайдеры нейросетей дают стартовые бесплатные лимиты. Обзор рабочих способов — в гайде [«Как пользоваться ИИ-моделями бесплатно: рабочие способы 2026»](https://ai-release.net/guides/kak-polzovatsya-ii-besplatno.html?utm_source=tg&utm_medium=channel&utm_campaign=guide_inline&utm_content=guide_to_guide).

**Какую нейросеть выбрать для бота?**
Ориентируйтесь на задачу: для диалогов подойдут чат-модели, для перевода и суммаризации — специализированные. Сравнение актуальных моделей и их возможностей — в гайде [«Лучшие нейросети и ИИ-модели 2026: что умеют и где попробовать»](https://ai-release.net/guides/luchshie-nejroseti-i-modeli-2026.html?utm_source=tg&utm_medium=channel&utm_campaign=guide_inline&utm_content=guide_to_guide).

**Чем polling отличается от webhook?**
Polling — бот сам опрашивает сервер Telegram каждые несколько секунд; просто для новичка. Webhook — Telegram сам присылает сообщения на ваш публичный URL; нужен домен с HTTPS и чуть больше настройки, зато экономнее при большой нагрузке.

**Нужно ли учить RAG, чтобы бот отвечал по моим документам?**
RAG (Retrieval-Augmented Generation — когда нейросеть сначала ищет нужные документы, а потом отвечает на их основе) — следующий уровень после базового бота. Начните с простого варианта из этого гайда, затем добавьте поиск по документам.
