Как создать чат бот в телеграмме для чат GPT

Порядок действий (инструкция):

Открой Telegram
Ищи бота @BotFather (официальный бот от Telegram для управления другими ботами).

Нажми «Start» или введи /start

Введи команду:

/newbot

📛 Придумай имя для бота
Например: Мой Ассистент, GPT Помощник, ИнфоБот.

🔤 Придумай username для бота

  • Должен быть уникальным.
  • Обязательно заканчиваться на bot.
    Примеры:
    • MySmartBot
    • NikHelperBot
    • DveriGPTbot

✅ После этого @BotFather выдаст тебе токен API:

Done! Congratulations on your new bot. You will find it at t.me/swgsuperbot. You can now add a description, about section and profile picture for your bot, see /help for a list of commands. By the way, when you've finished creating your cool bot, ping our Bot Support if you want a better username for it. Just make sure the bot is fully operational before you do this.

Use this token to access the HTTP API:
ХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХ
Keep your token secure and store it safely, it can be used by anyone to control your bot.

For a description of the Bot API, see this page: https://core.telegram.org/bots/api

👉 Скопируй этот токен — он нужен для кода.

Установить Python (если ещё не установлен)

Перейди сюда: https://www.python.org/downloads/

Обязательно включи галочку “Add Python to PATH” при установке.

Скачай и установи последнюю версию.

Вот команда, которую нужно ввести в терминале PyCharm (или в командной строке), чтобы установить все нужные библиотеки для бота:

pip install python-telegram-bot openai python-dotenv

Если ты работаешь через Pycharm то автоматически при создании нового проекта создастся папка venv

Что такое venv?

venv — это виртуальное окружение Python, которое:

  • изолирует библиотеки только для этого проекта,
  • не влияет на остальные программы или проекты на компьютере,
  • позволяет устанавливать нужные пакеты (python-telegram-bot, openai и др.) без риска конфликтов.

Далее создаем питон файл например bot.py. И копируем данный код в этот новай файл:

import os
from telegram import Update
from telegram.ext import ApplicationBuilder, MessageHandler, ContextTypes, filters
from dotenv import load_dotenv
import openai

# Загружаем переменные из .env
load_dotenv()
TELEGRAM_TOKEN = os.getenv("TELEGRAM_TOKEN")
OPENAI_API_KEY = os.getenv("OPENAI_API_KEY")

# Устанавливаем ключ OpenAI
openai.api_key = OPENAI_API_KEY

# Обработка сообщений от пользователя
async def chatgpt_reply(update: Update, context: ContextTypes.DEFAULT_TYPE):
    user_input = update.message.text
    response = openai.ChatCompletion.create(
        model="gpt-4",  # можно заменить на "gpt-3.5-turbo" для экономии
        messages=[{"role": "user", "content": user_input}]
    )
    reply = response.choices[0].message.content.strip()
    await update.message.reply_text(reply)

# Запуск бота
if __name__ == '__main__':
    app = ApplicationBuilder().token(TELEGRAM_TOKEN).build()
    app.add_handler(MessageHandler(filters.TEXT & ~filters.COMMAND, chatgpt_reply))
    print("✅ Бот запущен. Напиши ему в Telegram.")
    app.run_polling()

Пояснения к коду

import os

Импорт модуля os — позволяет работать с переменными окружения (например, читать токены из .env файла).

from telegram import Update
from telegram.ext import ApplicationBuilder, MessageHandler, ContextTypes, filters

Импорт библиотек для работы с Telegram Bot API:

  • Update — объект, представляющий входящее сообщение от пользователя.
  • ApplicationBuilder — «конструктор», с помощью которого запускаем бота.
  • MessageHandler — обработчик обычных текстовых сообщений.
  • ContextTypes — доп. данные, которые Telegram может передать в обработчик.
  • filters — позволяет указать, какие типы сообщений нас интересуют (например, только текст, не команды).
from dotenv import load_dotenv

Импорт из библиотеки python-dotenv — позволяет автоматически подгружать данные из файла .env (где хранятся токены).

import openai

Импорт клиента OpenAI — чтобы отправлять запросы в ChatGPT.

# Загружаем переменные из .env
load_dotenv()

Читаем файл .env и загружаем из него переменные окружения.

TELEGRAM_TOKEN = os.getenv("TELEGRAM_TOKEN")
OPENAI_API_KEY = os.getenv("OPENAI_API_KEY")

Получаем токены из переменных окружения и сохраняем в переменные TELEGRAM_TOKEN и OPENAI_API_KEY.

# Устанавливаем ключ OpenAI
openai.api_key = OPENAI_API_KEY

Передаём наш API-ключ в библиотеку OpenAI — без этого не получится отправить з

# Обработка сообщений от пользователя
async def chatgpt_reply(update: Update, context: ContextTypes.DEFAULT_TYPE):

Это асинхронная функция, которая будет вызываться каждый раз, когда пользователь отправляет боту сообщение user_input = update.message.text


user_input = update.message.text

📩 Сохраняем текст, который написал пользователь в переменную user_input.

    response = openai.ChatCompletion.create(
        model="gpt-4",  # можно заменить на "gpt-3.5-turbo" для экономии
        messages=[{"role": "user", "content": user_input}]
    )

Отправляем сообщение пользователя в ChatGPT через OpenAI API, используя указанный model.
Сообщение передаётся как диалог — список messages, где каждая реплика описана через role и content.

    reply = response.choices[0].message.content.strip()

Извлекаем ответ ChatGPT из результата — это строка с текстом, который нужно отправить обратно пользователю.

    await update.message.reply_text(reply)

Отправляем ответ пользователю в Telegram.

# Запуск бота
if __name__ == '__main__':

Условие, которое говорит: запускать код ниже, только если файл запущен как основной, а не импортирован как модуль.

    app = ApplicationBuilder().token(TELEGRAM_TOKEN).build()

Создаём Telegram-приложение и указываем токен, который позволяет управлять твоим ботом.

    app.add_handler(MessageHandler(filters.TEXT & ~filters.COMMAND, chatgpt_reply))

Добавляем обработчик входящих сообщений:

  • filters.TEXT — только текстовые сообщения.
  • ~filters.COMMAND — исключаем команды (типа /start, /help).
  • chatgpt_reply — та функция, которая будет вызвана.
    print("✅ Бот запущен. Напиши ему в Telegram.")

📋 Просто сообщение в консоли, чтобы ты понял, что всё работает.

    app.run_polling()

Запускаем бота в режиме polling — бот регулярно опрашивает Telegram на предмет новых сообщений (без необходимости в веб-хостинге).

Вывод:

Это минимальный, но рабочий телеграм бот, который:

  1. Получает сообщение из Telegram
  2. Отправляет его в ChatGPT
  3. Возвращает сгенерированный ответ пользователю

Как получить OpenAI API-ключ

  1. Перейди на сайт:
    👉 https://platform.openai.com/account/api-keys
  2. Войди в свой аккаунт (или создай его, если у тебя его ещё нет).
  3. Нажми кнопку “Create new secret key”

Где ты должен указать реальные токены

Создай в корне проекта файл .env (если ещё не сделал) и запиши туда:

TELEGRAM_TOKEN=вставь_сюда_токен_от_BotFather
OPENAI_API_KEY=вставь_сюда_API_ключ_от_OpenAI

Пример:

TELEGRAM_TOKEN=1234567890:ABCdefGHIjklMNOpqrsTUVwxyz
OPENAI_API_KEY=sk-abc1234567890xyz

❗ Почему так правильно

  • Безопасно — твои ключи не хранятся прямо в bot.py, их легко сменить
  • Удобно — если ты загружаешь проект на GitHub или хостинг, .env можно исключить из коммита
  • Гибко — разные .env для разработки и продакшена

Библиотека python-dotenv, которую ты используешь с load_dotenv(), по умолчанию ищет файл с названием .env в той же папке, где находится файл bot.py.

Если ты назовёшь файл по-другому — load_dotenv() не найдёт его, и переменные будут пустыми. Бот не запустится.

Ц

МодельВход (input) / 1K токеновВыход (output) / 1K токенов
gpt-4o~$0.005 / $0.015Самая дешёвая GPT-4
gpt-4-turbo~$0.01 / $0.03Дороже, но дольше контекст
gpt-3.5-turbo~$0.001 / $0.002Очень дешёвая, но слабее

История сообщения для бота — полезная вещь

История диалога (контекст) — ключевая особенность, которая делает GPT-помощника умным и «человеческим», особенно если ты создаёшь бота-консультанта (как в твоём случае — нутрициолога).

Вот зачем она нужна:


Пользователь: А что насчёт углеводов?
Бот: Простите, уточните ваш вопрос.

С историей:

Пользователь: Я хочу похудеть
Пользователь: А что насчёт углеводов?
Бот: При похудении важно контролировать углеводы — особенно простые, такие как сахар. Сложные углеводы (овсянка, гречка) можно оставить в умеренном количестве.

Сохранение цели и темы

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


Контекст консультаций

Если бот выступает как нутрициолог, он может учитывать:

  • предпочтения в еде (веган, безглютеновая диета)
  • наличие заболеваний (диабет, гастрит)
  • уровень активности

И на основе этого давать индивидуальные рекомендации.


Роль бизнес-консультанта

В роли представителя компании бот может запоминать:

  • интересы клиента
  • уже обсуждённые продукты или услуги
  • детали обращения

Это помогает строить живой, последовательный диалог без повторов.


Логика, ссылки, кросс-ссылки

История позволяет строить цепочку логичных ответов. Например:

«Какие БАДы вы советуете?»
«А витамин D можно с омегой?»

Бот будет понимать, что речь идёт об одной теме, и не начнёт объяснять всё с нуля.


Вывод

История диалога делает Telegram-бота на базе GPT по-настоящему умным. Без неё он просто отвечает на фразы. С ней — он ведёт беседу, помнит цели и даёт персональные советы. Это особенно важно, если вы создаёте консультирующего бота, нутрициолога, врача, юриста или менеджера компании.

M. Kovalskiy
Оцените автора
LifeDrive