Найти в Дзене

Telegram Business + OpenAI: создаем бота, отвечающего от имени аккаунта

Хотите автоматизировать общение с клиентами в Telegram в личном аккаунте, но сохранить персональный подход? Расскажу, как создать уникального бизнес-бота, который будет отвечать от имени вашего аккаунта. Активируйте Telegram Premium
Откройте настройки Telegram Business
Получите доступ к бизнес-функциям, включая:
Настройку часов работы
Быстрые ответы
Приветственные сообщения
Автоответы в нерабочее время
Управление чат-ботами
2. Создание бота
Перейдите в BotFather
Создайте нового бота
Сохраните полученный токен
3. Настройка OpenAI Создайте аккаунт на OpenAI
Получите API ключ
Настройте ассистента в OpenAI
Сохраните ID ассистента
4. Настройка сервера Арендуйте VPS (рекомендуется Beget)
Установите Python и необходимые библиотеки
Загрузите код бота на сервер
Замените в коде:
TELEGRAM_TOKEN
OPENAI_API_KEY
ASSISTANT_ID
5. Запуск и тестирование
Запустите бота на сервере
Проверьте обработку сообщений
Протестируйте ответы ассистента
Главное преимущество такого решения - бот работает через б
Оглавление

Хотите автоматизировать общение с клиентами в Telegram в личном аккаунте, но сохранить персональный подход? Расскажу, как создать уникального бизнес-бота, который будет отвечать от имени вашего аккаунта.

Необходимые условия:

  • Telegram Premium подписка
  • Доступ к OpenAI API
  • VPS сервер (например, Beget)
  • Базовые знания Python

Пошаговая инструкция:

  1. Настройка Telegram Business

Активируйте Telegram Premium
Откройте настройки Telegram Business
Получите доступ к бизнес-функциям, включая:
Настройку часов работы
Быстрые ответы
Приветственные сообщения
Автоответы в нерабочее время
Управление чат-ботами


2.
Создание бота
Перейдите в BotFather
Создайте нового бота
Сохраните полученный токен

3. Настройка OpenAI

Создайте аккаунт на OpenAI
Получите API ключ
Настройте ассистента в OpenAI
Сохраните ID ассистента

4. Настройка сервера

Арендуйте VPS (рекомендуется Beget)
Установите Python и необходимые библиотеки
Загрузите код бота на сервер

Замените в коде:
TELEGRAM_TOKEN
OPENAI_API_KEY
ASSISTANT_ID

5. Запуск и тестирование
Запустите бота на сервере
Проверьте обработку сообщений
Протестируйте ответы ассистента

Особенности работы бота

Главное преимущество такого решения - бот работает через бизнес-аккаунт и отвечает от имени пользователя, что создает более персональное общение с клиентами. При этом вы получаете все преимущества автоматизации:

  • Мгновенные ответы 24/7
  • Сохранение контекста беседы
  • Интеллектуальные ответы благодаря OpenAI
  • Возможность настройки под специфику вашего бизнеса

Код бота

Вот полный код бота (замените значения в кавычках на свои):

import requests

import logging

from telebot import TeleBot

from openai import OpenAI

import time

# Настройка логирования

logging.basicConfig(

format='%(asctime)s - %(name)s - %(levelname)s - %(message)s',

level=logging.INFO,

filename='bot.log'

)

logger = logging.getLogger(__name__)

# Константы - замените на свои значения

TELEGRAM_TOKEN = 'ВАШ_ТОКЕН_TELEGRAM' # Получите у BotFather

OPENAI_API_KEY = 'ВАШ_КЛЮЧ_OPENAI' # Из личного кабинета OpenAI

ASSISTANT_ID = 'ВАШ_ID_АССИСТЕНТА' # ID вашего ассистента в OpenAI

# Инициализация бота и OpenAI

bot = TeleBot(TELEGRAM_TOKEN)

client = OpenAI(api_key=OPENAI_API_KEY)

# Хранение активных threads для каждого пользователя

user_threads = {}

def get_or_create_thread(user_id: int) -> str:

"""Получение существующего или создание нового thread для пользователя"""

if user_id not in user_threads:

thread = client.beta.threads.create()

user_threads[user_id] = thread.id

return user_threads[user_id]

def wait_for_run_completion(run, thread_id):

"""Ожидание завершения выполнения запроса к ассистенту"""

while True:

run = client.beta.threads.runs.retrieve(

thread_id=thread_id,

run_id=run.id

)

if run.status == 'completed':

return run

elif run.status == 'failed':

raise Exception("Run failed")

time.sleep(1)

def send_message(chat_id, text, business_connection_id):

"""Отправка сообщения через API Telegram"""

url = f"https://api.telegram.org/bot{TELEGRAM_TOKEN}/sendMessage"

payload = {

'chat_id': chat_id,

'text': text,

'business_connection_id': business_connection_id,

'parse_mode': 'HTML'

}

response = requests.post(url, data=payload)

return response.json()

@bot.business_message_handler(func=lambda message: True)

def handle_business_message(message):

"""Обработчик бизнес-сообщений"""

user_id = message.chat.id

business_connection_id = message.business_connection_id

user_message = message.text

logger.info(f"Received message from user {user_id}: {user_message}")

try:

# Получение или создание thread для пользователя

thread_id = get_or_create_thread(user_id)

# Добавление сообщения пользователя в thread

client.beta.threads.messages.create(

thread_id=thread_id,

role="user",

content=user_message

)

# Запуск ассистента

run = client.beta.threads.runs.create(

thread_id=thread_id,

assistant_id=ASSISTANT_ID

)

# Ожидание завершения

run = wait_for_run_completion(run, thread_id)

# Получение сообщений из thread

messages = client.beta.threads.messages.list(thread_id=thread_id)

# Получение последнего ответа ассистента

assistant_response = messages.data[0].content[0].text.value

logger.info(f"Generated response: {assistant_response}")

# Отправка ответа пользователю

send_message(user_id, assistant_response, business_connection_id)

except Exception as e:

logger.error(f"Error while getting response: {str(e)}")

send_message(

user_id,

"Извините, произошла ошибка при обработке вашего сообщения.",

business_connection_id

)

if __name__ == "__main__":

bot.infinity_polling()


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

Перед запуском установите необходимые библиотеки:

pip3 install pyTelegramBotAPI openai requests