Как добавить ChatGPT в Telegram-бот: полный гайд

Боты с ИИ становятся эффективным инструментом для автоматизации коммуникации, персонализации сервисов и повышения качества взаимодействия с аудиторией. Благодаря интеграции ChatGPT в Telegram, бот превращается из простого исполнителя команд в полноценного цифрового собеседника.

Интеллектуальные боты на базе ChatGPT позволяют:
— автоматизировать поддержку клиентов и внутренние процессы
— давать быстрые и осмысленные ответы на запросы
— обучать, развлекать и сопровождать пользователей
— формировать персонализированные рекомендации.

Что потребуется для запуска

Перед началом убедитесь, что у вас есть:
— аккаунт Telegram
— токен от BotFather для создания нового бота
— API-ключ OpenAI
— сервер или локальный компьютер для запуска скрипта
— установленный Python и библиотеки aiogram, openai, python-dotenv.

Этапы интеграции

1. Создание Telegram-бота:

  1. Откройте Telegram, найдите BotFather и отправьте команду /newbot.
  2. Задайте имя и уникальный username вашему боту.
  3. Получите API-токен — он понадобится при настройке скрипта.

2. Регистрация в OpenAI:

  1. Перейдите на сайт OpenAI.
  2. Зарегистрируйтесь и получите API-ключ в разделе API Keys.
  3. Сохраните ключ для дальнейшего использования.

3. Настройка кода и среды. 

Установите необходимые библиотеки:

pip install aiogram openai python-dotenv

Создайте файл .env для хранения конфиденциальных данных:

TELEGRAM_BOT_TOKEN=ваш_токен_бота

OPENAI_API_KEY=ваш_api_ключ

Пример базового скрипта:

import openai
import os
from aiogram import Bot, Dispatcher, types
from aiogram.utils import executor
from dotenv import load_dotenv

load_dotenv()

TELEGRAM_BOT_TOKEN = os.getenv(«TELEGRAM_BOT_TOKEN»)
OPENAI_API_KEY = os.getenv(«OPENAI_API_KEY»)

bot = Bot(token=TELEGRAM_BOT_TOKEN)
dp = Dispatcher(bot)
openai.api_key = OPENAI_API_KEY

@dp.message_handler()
async def chat_with_gpt(message: types.Message):
    response = openai.ChatCompletion.create(
        model=»gpt-3.5-turbo»,
        messages=[{«role»: «user», «content»: message.text}]
    )
    await message.reply(response[«choices»][0][«message»][«content»])

if __name__ == «__main__»:
    executor.start_polling(dp, skip_updates=True)

4. Запуск Telegram-бота:

— сохраните скрипт как bot.py
— запустите его через терминал:

python bot.py

— отправьте сообщение вашему боту. Он должен ответить автоматически.

5. Расширение функциональности

Добавьте команды:

@dp.message_handler(commands=[‘start’, ‘help’])
async def send_welcome(message: types.Message):
    await message.reply(«Привет! Я бот на базе ChatGPT. Задавай вопросы.»)

Ограничьте длину сообщения:

if len(message.text) > 500:
    await message.reply(«Сообщение слишком длинное, попробуйте короче.»)
    return

Добавьте контекст диалога:

user_messages = {}

@dp.message_handler()
async def chat_with_gpt(message: types.Message):
    chat_id = message.chat.id
    if chat_id not in user_messages:
        user_messages[chat_id] = []

    user_messages[chat_id].append({«role»: «user», «content»: message.text})

    response = openai.ChatCompletion.create(
        model=»gpt-3.5-turbo»,
        messages=user_messages[chat_id]
    )

bot_reply = response[«choices»][0][«message»][«content»]
user_messages[chat_id].append({«role»: «assistant», «content»: bot_reply})

await message.reply(bot_reply)