Порядок действий (инструкция):
Открой 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 (если ещё не установлен)
- Что такое venv?
- Пояснения к коду
- Вывод:
- Как получить OpenAI 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 на предмет новых сообщений (без необходимости в веб-хостинге).
Вывод:
Это минимальный, но рабочий телеграм бот, который:
- Получает сообщение из Telegram
- Отправляет его в ChatGPT
- Возвращает сгенерированный ответ пользователю
Как получить OpenAI API-ключ
- Перейди на сайт:
👉 https://platform.openai.com/account/api-keys - Войди в свой аккаунт (или создай его, если у тебя его ещё нет).
- Нажми кнопку “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 по-настоящему умным. Без неё он просто отвечает на фразы. С ней — он ведёт беседу, помнит цели и даёт персональные советы. Это особенно важно, если вы создаёте консультирующего бота, нутрициолога, врача, юриста или менеджера компании.