ChatGPT инструмент набора аудитории для Telegram канала

ChatGPT  инструмент набора аудитории для Telegram канала

Если вам что то дают бесплатно то товар это вы.

На волне хайпа с ChatGPT решил проверить гипотезу с Telegram ботом и собрать аудиторию для дальнейшей конвертации в подписчиков.

Нам потребуется:

  • Зарегистрироваться на платформе https://platform. openai. com для получения API
  • Через BotFather зарегистрировать Telegram бота
  • В качестве сервера использовать самую простую VPS
  • Небольшие знания Python (Можно средствами ChatGPT написать код если вы не знаете языка, но понимаете, что нужно спросить у него) — я так и сделал т. к. отсутствуют навыки программирования на Python =)

В топике будет немного нудного кода с описанием и статистика, что получилось. Поехали!

Код на Python3

# Импорт необходимых библиотек import mysql.connector # Для работы с базой данных MySQL from datetime import datetime # Для работы с датой и временем import time # Для работы с временем import telebot # Для работы с Telegram ботом import openai # Для работы с API искусственного интеллекта от OpenAI # Установка соединения с базой данных MySQL mydb = mysql.connector.connect( host="IP адресс для хранения всей информации в БД", # Замените на реальный IP адресс port=3306, user="login_bd", # Замените на реальное имя пользователя passwd="password", # Замените на реальный пароль database="bd_name" # Замените на реальное имя базы данных )
# Создание экземпляра Telegram бота с использованием токена bot = telebot.TeleBot("Telegrma token") # Замените на реальный токен # Удаление webhook (если он был установлен ранее) bot.delete_webhook() # Обработчик команд "/start" и "/help" @bot.message_handler(commands=['start', 'help']) def send_welcome(message): # Отправляем приветственное сообщение с инструкциями bot.reply_to(message, "Привет! Я бот, созданный помочь тебе сделать домашнее задание. Если ты готов напиши условие задачи, которую надо решить и отправь её мне!. Пример: Реши пример 2+2, распиши подробно все этапы решения.\n После отправки мне запроса мне нужно немного время для обработки и ответа Вам.\n Этот процес может занимать до 30сек.\n Вы не переживайте я Вам отвечу в любом случае! ") # Обработчик текстовых сообщений @bot.message_handler(content_types=['text']) def check_message_length(message): # Проверяем длину текста сообщения if len(message.text) > 3000: # Если превышен лимит символов, отправляем сообщение об ошибке bot.send_message(message.chat.id, 'Максимальное количество символов 3000. Вы превысили ограничение, измените текст сообщения.') else: # Иначе передаем сообщение на обработку process_message(message) # Функция для обработки сообщений def process_message(message): # Извлекаем текст сообщения и информацию о пользователе zapros = message.text first_name = message.from_user.first_name user_id = message.from_user.id # Устанавливаем API-ключ для OpenAI openai.api_key = "API_key ChatGPT" # Замените на реальный API-ключ # Проверяем длину текста сообщения if len(zapros) > 4096: # Если превышен лимит символов, отправляем сообщение об ошибке bot.send_message(message.chat.id, 'Максимальное количество символов 4096. Вы превысили ограничение, измените текст сообщения') return # Создаем курсор для работы с базой данных mycursor = mydb.cursor() # SQL-запрос для проверки существования пользователя по ID sql = "SELECT user_id FROM users WHERE user_id = %s" val = str(user_id) mycursor.execute(sql, [val]) # Получаем результат запроса myresult = mycursor.fetchall() # Установка параметров для модели GPT-3 model_engine = "text-davinci-003" prompt = zapros max_tokens = min(2800, 4096 - len(zapros)) # Уменьшаем количество токенов для завершения try: # Выполняем запрос к API OpenAI, чтобы получить ответ completion = openai.Completion.create( engine=model_engine, prompt=prompt, max_tokens=max_tokens, temperature=0.5, top_p=1, frequency_penalty=0, presence_penalty=0 ) # Отправляем ответ пользователя в чат Telegram bot.send_message(message.chat.id, first_name + ' Ваш ID:' + str(user_id) + '\nОтвет: ' + completion.choices[0].text) # Проверяем, существует ли пользователь в базе данных if len(myresult) == 0: # Если нет, добавляем его данные и запрос в базу данных sql = "INSERT INTO users (name, user_id, data) VALUES (%s, %s, %s)" val = (first_name, str(user_id), datetime.now()) mycursor.execute(sql, val) mydb.commit() sql_request = "INSERT INTO request (id_user, data, request, answer) VALUES (%s,%s, %s, %s)" val_request = (user_id, datetime.now(), message.text, completion.choices[0].text) mycursor.execute(sql_request, val_request) mydb.commit() else: # Если пользователь уже существует, добавляем только новый запрос и ответ sql_request = "INSERT INTO request (id_user, data, request,answer) VALUES (%s,%s, %s,%s )" val_request = (user_id, datetime.now(), message.text, completion.choices[0].text) mycursor.execute(sql_request, val_request) mydb.commit() except openai.error.InvalidRequestError: # Обработка ошибки при превышении лимита символов bot.send_message(message.chat.id, 'Максимальное количество символов 3000. Вы превысили ограничение, измените текст сообщения') except openai.error.RateLimitError: # Обработка ошибки при ограничении на количество запросов к OpenAI bot.send_message(message.chat.id, 'Извините, возникли проблемы на стороне ChatGPT. Пожалуйста

Данный код является Python скриптом для создания Telegram бота, который использует искусственный интеллект, предоставляемый OpenAI, чтобы отвечать на запросы пользователей. Вот пошаговое описание того, что делает этот код:

  • Импортируются необходимые библиотеки:mysql.connector - для взаимодействия с базой данных MySQL.datetime и time - для работы с датой и временем.telebot - для работы с Telegram ботом.openai - для использования искусственного интеллекта ChatGPT от OpenAI.
  • Устанавливается соединение с базой данных MySQL, используя параметры, такие как хост, порт, имя пользователя и пароль.
  • Создается экземпляр Telegram бота, используя токен, который вы получили при регистрации бота в Telegram.
  • Удаляется webhook (если он был установлен ранее). Webhook - это механизм для получения обновлений от Telegram сервера.
  • Определяются два обработчика сообщений для бота:send_welcome - обработчик для команд /start и /help. Бот отправляет приветственное сообщение с инструкциями по использованию.check_message_length - обработчик для текстовых сообщений. Проверяет, что длина текста сообщения не превышает 3000 символов, и вызывает process_message для обработки сообщения.
  • process_message - это функция, которая выполняет следующие действия:Извлекает текст сообщения и информацию о пользователе (имя и ID).Проверяет, что длина текста сообщения не превышает 4096 символов.Создает запрос к базе данных MySQL для проверки существования пользователя по ID.Определяет параметры для модели GPT-3 (такие как engine, prompt, max_tokens, temperature, top_p и penalty).Вызывает API OpenAI с запросом, чтобы получить ответ от модели GPT-3 на основе введенного текста.Отправляет ответ пользователя в чат Telegram.Если пользователь не был найден в базе данных, добавляет его данные и запрос в базу данных.Если пользователь уже существует в базе данных, добавляет только новый запрос.
  • В блоке обработки исключений обрабатываются следующие ошибки:openai.error.InvalidRequestError - если текст сообщения превышает 3000 символов.openai.error.RateLimitError - если возникли ограничения на количество запросов к серверам OpenAI из-за большой нагрузки.Остальные ошибки - выводят сообщение об ошибке и записывают ее в лог.
  • Запускается бот в режиме ожидания сообщений с помощью bot.polling(), что позволяет боту получать и отвечать на сообщения пользователей в реальном времени.

Этот код создает Telegram бота, который принимает текстовые запросы от пользователей, отправляет их модели GPT-3 для генерации ответа и записывает запросы и ответы в базу данных MySQL для последующей обработки и анализа.

Набор аудитории в Telegram бот

С продвижением Telegram бота проблем не возникло, используя TGstat и поиск чатиков закинул бота во все студенческие чатики и начало работать сарафанное радии.

ЦА студенты выбрана не случайно, развивающая аудитория, которая подхватит новую технологию и понесет делиться между собой, платёжеспособные.

Старт был в мае 2023г.

Статистика по расходам на GhatGPT по мере его распространению по средствам сарафанного радио.
Статистика по расходам на GhatGPT по мере его распространению по средствам сарафанного радио.

На стадии запуска доступ к боту ничем не ограничен, аудитория привыкает пользоваться бесплатным продуктом, на скрине выше видно, что в период обучения пользуется популярность, а как начались каникулы интерес снизился, до момента нового учебного года.

Статистика активных пользователей бота с начала марта 2023г.
Статистика активных пользователей бота с начала марта 2023г.

Анализируя аудиторию подчищаю, тех кто ботом не пользуется и заблокировал его из 1186 пользователей 698 активные.

Для понимания, почему люди уходят анализировал по каждому какие он запросы отправлял GPT, многие не понимаю как правильно строить запрос, что бы получить ответ, после блокируют его и уходят.

Таблица с запросами и ответами ИИ
Таблица с запросами и ответами ИИ

Некоторые запросы можно забирать на старый добрый Башорг

Если человек весит 38 килограмм и съел пачку пельменей 900 грамм то на сколько процентов человек состоит из пельменей?

Каждый день в бот приходить 30-40 новых пользователей, финансовая нагрузка начала расти и пришло время конвертировать их в подписчиков Telegram канала.

Код

# Проверка подписки пользователя на канал @getskime if not is_subscribed(user_id): bot.send_message(message.chat.id, "Понимаем важность бесплатного доступа к нашему боту и хотим вам сообщить о некоторых изменениях. \nНа протяжении длительного времени мы предоставляли бесплатные услуги через нашего бота, но с увеличением нагрузки на серверы и поддержание качества обслуживания становится все более сложным. \n\nЧтобы сохранить бесплатный доступ к боту и продолжить его развитие, мы предлагаем вам поддержать нашу работу. \n\nМы запустили специальный Telegram-канал, посвященный интересной теме - 'Сноуборд и горные лыжи'. \nПодписавшись на этот канал, вы поможете нам в финансировании серверов и развитии бота. При этом вы будете в курсе актуальных новостей и информации о 'Сноуборде и горных лыжах'. \n\nМы глубоко ценим вашу поддержку и надеемся на ваше понимание. \nСсылку на канал 'Сноуборд и горные лыжи' вы найдете ниже.\n\nСсылка на канал 'Сноуборд и горные лыжи': https://t.me/+08pu5RG_ZZY3MDY6")
def is_subscribed(user_id): try: chat_member = bot.get_chat_member('@getskime', user_id) return chat_member.status in ['member', 'administrator', 'creator'] except Exception as e: print(f"Ошибка при проверке подписки: {str(e)}") return False

Эта функция is_subscribed(user_id) выполняет проверку подписки пользователя на канал @getskime в Telegram. Вот, как она работает:

  • Передаётся user_id в качестве аргумента функции, который представляет собой уникальный идентификатор пользователя в Telegram.
  • Внутри функции выполняется попытка выполнить следующие действия:С помощью bot.get_chat_member('@getskime', user_id) запрашивается информация о статусе пользователя в чате канала @getskime. Это позволяет определить, является ли пользователь участником, администратором или создателем этого канала.Результат, который содержит информацию о статусе пользователя, сохраняется в переменной chat_member.
  • Далее, функция проверяет, находится ли статус пользователя в списке ['member', 'administrator', 'creator']. Если пользователь является хотя бы участником (member), администратором (administrator) или создателем (creator) канала @getskime, то функция вернет True, что означает, что пользователь подписан на канал.
  • Если при выполнении каких-либо действий внутри try блока возникнет ошибка, функция поймает исключение Exception, выведет сообщение об ошибке в консоль с помощью print, и вернет False, предполагая, что пользователь не подписан на канал из-за возникшей ошибки.
Статистика прироста подписчиков
Статистика прироста подписчиков
Статистика в TGstat по пригласительной ссылке из TG бота  
Статистика в TGstat по пригласительной ссылке из TG бота  

Итоги

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

Задача сейчас стоит набор аудитории и популяризация активных видов отдыха.

Буду рад любой критики, так что пишите комменты и если топик зашёл делись с коллегами.

44
Начать дискуссию