# An AI-powered Telegram bot in Python: from scratch to deploy

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

Вступление: этот гайд решает задачу новичка — сделать работающего Telegram-бота с нейросетью на Python и довести его до запуска на сервере. Гайд универсален: подойдёт для любой современной ОС (Windows, macOS, Linux) с установленным Python 3.10+. Мы не привязываемся к конкретному провайдеру моделей — шаги одинаковы для любого API, который выдаёт вам ключ доступа.

## Требования и подготовка
![Illustration: Требования и подготовка](https://ai-release.net/guides/img/telegram-bot-s-ii-na-python-en-1.jpg)

- Установленный Python версии 3.10 или новее (проверьте командой `python --version`).
- Аккаунт Telegram — через него вы получите токен бота у официального бота BotFather.
- API-ключ от выбранного сервиса нейросетей (это строка вида «пароль», по которой программа обращается к модели).
- Текстовый редактор или простая IDE (VS Code подойдёт).
- Базовое умение работать в терминале (командная строка).
- Для деплоя — любой дешёвый VPS-сервер на Linux (Ubuntu) или бесплатный сервис хостинга приложений.

## Пошаговая инструкция
![Illustration: Пошаговая инструкция](https://ai-release.net/guides/img/telegram-bot-s-ii-na-python-en-2.jpg)

1. Создайте бота в Telegram. Откройте чат с @BotFather, отправьте команду `/newbot`, введите имя и username бота (username должен заканчиваться на `bot`).
   Ожидаемый результат: BotFather пришлёт сообщение с токеном вида `123456789:AAH3k...`.
   Почему это работает: BotFather — официальный инструмент Telegram для регистрации ботов; токен — это «логин+пароль» вашего бота в одном.

2. Создайте папку проекта и виртуальное окружение. Виртуальное окружение (venv) — изолированная папка, куда ставятся библиотеки проекта, чтобы не ломать системный Python.

```bash
mkdir my-ai-bot && cd my-ai-bot
python -m venv venv
source venv/bin/activate   # Windows: venv\Scripts\activate
```

Ожидаемый результат: в начале строки терминала появится `(venv)`.

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

```bash
pip install python-telegram-bot requests
```

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

4. Напишите первый каркас бота. Создайте файл `bot.py`:

```python
import os
import requests
from telegram import Update
from telegram.ext import ApplicationBuilder, MessageHandler, filters, ContextTypes

TELEGRAM_TOKEN = os.environ["TELEGRAM_TOKEN"]
AI_API_KEY = os.environ["AI_API_KEY"]
AI_URL = "https://api.example-ai-provider.com/v1/chat"  # возьмите из документации вашего провайдера

async def reply(update: Update, context: ContextTypes.DEFAULT_TYPE):
    r = requests.post(AI_URL, headers={"Authorization": f"Bearer {AI_API_KEY}"},
                      json={"messages": [{"role": "user", "content": update.message.text}]})
    await update.message.reply_text(r.json()["reply"])

app = ApplicationBuilder().token(TELEGRAM_TOKEN).build()
app.add_handler(MessageHandler(filters.TEXT, reply))
app.run_polling()
```

**Пример:** пользователь пишет «Привет, расскажи анекдот» — бот отправляет текст в модель и возвращает ответ в чат.
Почему это работает: `run_polling()` заставляет бот постоянно «слушать» серверы Telegram — вебсервер и домен не нужны.

5. Запустите бота локально, передав ключи через переменные окружения (так ключи не попадут в код и не утечут в git).

```bash
export TELEGRAM_TOKEN="123456789:AAH3k..."
export AI_API_KEY="sk-..."
python bot.py
```

Ожидаемый результат: в терминале нет ошибок, а в чате бот отвечает на сообщения.

6. Протестируйте сценарии. Напишите боту 3–4 разных сообщения: короткое, длинное, на другом языке.
   Ожидаемый результат: ответы приходят за разумное время (обычно 1–5 секунд), без ошибок в терминале.

7. Задеплойте на сервер. Скопируйте проект на VPS, установите зависимости и запустите через `systemd` или менеджер процессов, чтобы бот переживал перезагрузку.

```bash
# на сервере Ubuntu
git clone https://github.com/you/my-ai-bot.git && cd my-ai-bot
python3 -m venv venv && source venv/bin/activate
pip install -r requirements.txt
```

Ожидаемый результат: бот отвечает в Telegram даже после того, как вы закрыли терминал.
Почему это работает: сервер работает 24/7, а polling-подключение боту не нужен «белый» IP или домен.

8. Добавьте файл `requirements.txt`, чтобы деплой был воспроизводимым:

```bash
pip freeze > requirements.txt
```

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

- [ ] Токены лежат в переменных окружения, а не в коде
- [ ] `requirements.txt` закоммичен, папка `venv` — в `.gitignore`
- [ ] Бот протестирован на длинных сообщениях и ошибках API
- [ ] Настроен автозапуск на сервере (systemd/supervisor)
- [ ] Есть лимит на расходы по API-ключу нейросети

## Возможные проблемы и решения
![Illustration: Возможные проблемы и решения](https://ai-release.net/guides/img/telegram-bot-s-ii-na-python-en-3.jpg)

- Ошибка вида `telegram.error.InvalidToken` при запуске. Симптом: процесс падает сразу со строкой про invalid token. Решение: проверьте, что скопировали токен из BotFather целиком, без пробелов и кавычек из сообщения; заново экспортируйте переменную `export TELEGRAM_TOKEN="..."` и перезапустите.
- Ошибка вида `401 Unauthorized` от API нейросети. Симптом: бот молчит, в терминале ответ с кодом 401. Решение: проверьте, что ключ AI_API_KEY активен в личном кабинете провайдера, что вы не превысили лимит, и что URL в `AI_URL` соответствует документации провайдера.
- Бот отвечает только пока открыт терминал. Симптом: после закрытия SSH-сессии бот «умирает». Решение: запустите его как сервис — создайте unit-файл systemd с командой `ExecStart=/полный/путь/venv/bin/python bot.py`, затем `sudo systemctl enable --now mybot`. Теперь бот перезапускается автоматически.

## FAQ

**Нужно ли платить за Telegram-бота?**
Нет, Telegram API для ботов бесплатный; платите только за вызовы нейросети. Если бюджет нулевой, посмотрите, [как использовать ИИ-модели бесплатно](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).

**Какую модель выбрать для бота?**
Начните с недорогой универсальной модели провайдера, а сравнить варианты можно в обзоре [лучших нейросетей и моделей](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).

**Чем бот отличается от ИИ-агента?**
Бот просто отвечает на сообщения; агент — дополнительно сам выполняет действия (ищет, вызывает инструменты). Если хотите развить проект в эту сторону, пригодится гайд [об ИИ-агентах для автоматизации](https://ai-release.net/guides/ii-agenty-dlya-avtomatizacii.html?utm_source=tg&utm_medium=channel&utm_campaign=guide_inline&utm_content=guide_to_guide).

**Можно ли хостить бота бесплатно?**
Да, многие платформы дают бесплатный тариф для небольших приложений; для начала подойдёт и дешёвый VPS — polling-боту не нужен домен.
