Бот в Телеграмме что бы болтать как с человеком

Содержание

Самообучающийся чат-бот запоминает фразы всех участников диалога, а вот выдает их в рандомном порядке и анонимно. Конечно, все начинают с «привет, как дела?», но затем разговор становится чудесатей и чудесатей.

  • Получается диалог тебя и кучи других людей: не всегда адекватный и понятный, но зато забавный.

Игра «Привет, Незнакомец»

Первый в Telegram квест-бот с встроенным сюжетом. Твоя задача — помочь главному герою выбраться из океанской бездны в режиме реального времени. У тебя есть варианты фраз, которыми ты можешь отвечать. Затягивает не на час.

  • Когда квест пройден, можешь отправиться на официальную страницу игры «ВКонтакте» и поболтать с другими игроками.

Анонимный чат

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

Как создать своего бота в telegram?

  • Зато можно писать личные сообщения, «обнимать» и даже «шлепать» участников.

Voices of strangers

Некий аналог анонимной чарт-рулетки, только с голосовыми сообщениями. Ты записываешь войс, отправляешь его в чат, и оно рандомно выбирает себе получателя (из тех, кто пользуется ботом, разумеется).

  • Бот выбирает из последних 200 записанных в нем сообщений, так что есть шанс устроить с кем-нибудь разговор в реальном времени.

Правил, что можно и нельзя записывать, нет — выражай себя на всю катушку.

Love Story

Невероятно удобный и простой бот для поиска партнера или собеседника. Естественно, все частично анонимно: тебе не напишут в личные сообщения, а твой ник и номер скрыты. Также ты можешь решить, показывать ли определенному пользователю свою анкету.

  • Тем не менее, базовой информацией придется поделиться: возраст, город, коротенькое описание и фото.

Better Than Tinder

Бот работает так же, как Тиндер, только лучше. Его задача — повысить самооценку, чего создатели бота не скрывают.

  • Надо всего лишь кинуть фотографию и смотреть, как ее лайкают другие люди. Фото людей, которые лайкнули тебя, ты, разумеется, увидишь.

Можно и познакомиться: для этого достаточно написать на фотографии свой ник в Инстаграме или Телеграме .

Бот усталого москвича

Этот бот подскажет тебе уютное место для уединения, неспешной прогулки или медитации в одиночестве в пределах Садового кольца. В библиотеке программы — парки, скверы, пруды, кафе и антикафе.

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

Находит собеседников вокруг твоей локации. Минимальный радиус — 10 метров, максимальный — вся планета. Бот можно использовать не только как место для знакомств, но и как чатик, если тебе хочется узнать мнение соседей по подъезду или поболтать с одноклассниками в соседней аудитории.

Источник: news.myseldon.com

Как общаться с ChatGPT с помощью голосовых сообщений в Telegram?

В статье делимся пошаговой инструкцией, как реализовать Telegram-бота на NodeJS и задеплоить его на виртуальный сервер.

Введение

Привет! Я Владилен Минин, YouTube-блогер. Пару недель назад я написал бота, который позволяет говорить с ChatGPT с помощью голосовых и текстовых сообщений. Это удобно, потому что не нужно использовать VPN для работы с OpenAI, а про клавиатуру можно забыть вовсе.

В этой статье делюсь пошаговой инструкцией, как реализовать ChatGPT Telegram-бота на NodeJS и задеплоить его на виртуальный сервер.

Каркас Telegram-бота

Настройка рабочего окружения

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

npm init -y npm i -D nodemon cross-env

После инициализации в директории проекта сгенерируется конфигурационный файл package.json. А вторая команда подтянет необходимые пакеты, которые позволяют запускать приложения NodeJS в режиме разработки.

Еще по теме:  Скучное сообщения в ТГ

Теперь добавим поддержку установленных ES-модулей в package.json для разработки и продакшена.

«type»: «module», «scripts»: < «start»: «cross-env NODE_ENV=production node ./src/main.js», «dev»: «cross-env NODE_ENV=development nodemon ./src/main.js» >,

Установка Telegraf и регистрация бота

Рабочее окружение настроено — давайте приступим к написанию самого бота. Создаем главный файл ./src/main.js , устанавливаем фреймворк Telegraf и config.

npm i config telegraf

После установки необходимых пакетов и создания главного файла, можно запустить самого бота. Для этого нужно импортировать Telegraf и config, а после — добавить ключ API для работы с Telegram.

import < Telegraf >from ‘telegraf’ import config from ‘config’ const bot = new Telegraf(config.get(‘TELEGRAM_BOT’)) bot.launch() process.once(‘SIGINT’, () => bot.stop(‘SIGINT’)) process.once(‘SIGTERM’, () => bot.stop(‘SIGTERM’))

./src/main.js. О настройке config.get() ниже.

Теперь создадим «заготовки» для настроек приложения, где будут расположены данные для Telegram-бота. Добавляем два файла — ./config/default.json с конфигурациями для разработки и ./config/default.json — для продакшна.

На практике, если в продакшене API-токен не меняется, вы можете обойтись одним конфигурационным файлом — например, только config/default.json .

Добавление функционала

Бот запущен и работает, но пока ничего не умеет делать. Поэтому нужно добавить первый функционал: научиться фильтровать голосовые сообщения и получать на них ссылки в формате ogg, а после конвертировать в mp3.

Последний шаг нужен, чтобы в дальнейшем переводить голосовые сообщения в текст через сервисы OpenAI. Они принимают на вход файлы формата ogg. Подробнее нюансы описаны на официальной странице.

Фильтрация голосовых сообщений

Отбирать голосовые сообщения можно с помощью встроенного фильтра Telegraph — message. Достаточно в качестве аргумента передать значение voice — и бот будет «считывать» голосовые сообщения.

import < Telegraf >from ‘telegraf’ import < message >from ‘telegraf/filters’ import < code >from ‘telegraf/format’ import config from ‘config’ import < ogg >from ‘./ogg.js’ const bot = new Telegraf(config.get(‘TELEGRAM_BOT’)) bot.on(message(‘voice’), async (ctx) => < try < await ctx.reply(code(‘Сообщение принял. Жду ответ от сервера. ‘)) const link = await ctx.telegram.getFileLink(ctx.message.voice.file_id) const userId = String(ctx.message.from.id) const oggPath = await ogg.create(link.href, userId) const mp3Path = await ogg.toMp3(oggPath, userId) >catch (e) < console.log(`Error while voice message`, e.message) >>)

Чтобы получить ссылку на голосовое сообщение, нужно передать в метод getFileLink специальный идентификатор.

Конвертация голосовых сообщений и получение ссылок в формате ogg

Чтобы обрабатывать и конвертировать полученные из getFileLink данные, создадим обработчик — например, ./src/ogg.js — и установим зависимости. А также создадим директорию для хранения голосовых.

Далее в ./src/ogg.js создадим объект OggConverter , который будет создавать ogg-записи и сохранять их в специальной директории.

В методе create мы сначала скачиваем ogg с серверов Telegram, а потом записываем их локально в файл через stream . Голосовой ogg-файл будет храниться в ./voices/$.ogg .

import axios from ‘axios’ import < createWriteStream >from ‘fs’ import < dirname, resolve >from ‘path’ import < fileURLToPath >from ‘url’ const __dirname = dirname(fileURLToPath(import.meta.url)) // ==== async create(url, filename) < try < const oggPath = resolve(__dirname, ‘../voices’, `$.ogg`) const response = await axios(< method: ‘get’, url, responseType: ‘stream’, >) return new Promise((resolve) => < const stream = createWriteStream(oggPath) response.data.pipe(stream) stream.on(‘finish’, () =>resolve(oggPath)) >) > catch (e) < console.log(‘Error while creating ogg’, e.message) >>

Дальше конвертируем ogg в mp3 с помощью функции toMp3 . Выходной файл будет лежать по адресу: ./voices/$.mp3

toMp3(input, output) < try < const outputPath = resolve(dirname(input), `$.mp3`) return new Promise((resolve, reject) => < ffmpeg(input) .inputOption(‘-t 30’) .output(outputPath) .on(‘end’, () =>resolve(outputPath)) .on(‘error’, (err) => reject(err.message)) .run() >) > catch (e) < console.log(‘Error while creating mp3’, e.message) >>

Опционально. Чтобы после конвертации в mp3 файлы ogg удалялись, можно написать дополнительную утилиту.

import < unlink >from ‘fs/promises’ export async function removeFile(path) < try < await unlink(path) >catch (e) < console.log(‘Error while removing file’, e.message) >>

Голосовой чат с ChatGPT

Теперь давайте напишем основные функции для перевода mp3 в текст и работы с ChatGPT соответственно. Для этого нужно подключить API ChatGPT: установить библиотеки, сгенерировать и добавить в настройки приложения уникальный ключ.

npm i openai

Установка пакета openai.

https://platform.openai.com/account/api-keys

Для работы с API OpenAI создадим файл ./src/openai.js и опишем базовый класс. В его конструкторе создаем объект с конфигурациями, которые будут использоваться при отправке запросов на серверы OpenAI, и объект для подключения к API.

import < Configuration, OpenAIApi >from ‘openai’ import config from ‘config’ import < createReadStream >from ‘fs’ class OpenAI < roles = < ASSISTANT: ‘assistant’, USER: ‘user’, SYSTEM: ‘system’, >constructor(apiKey) < const configuration = new Configuration(< apiKey, >) this.openai = new OpenAIApi(configuration) > async chat(messages) < >async transcription(filepath) < >> export const openai = new OpenAI(config.get(‘OPENAI_KEY’))

Здесь roles — формат ролей, который принимает сервер openai. assistant — сообщения из gpt-чата; user — пользовательские сообщения; system — контекст для чата (например, «ChatGPT, веди себя как программист с многолетним стажем»).

Функция transcription отвечает за перевод mp3 в текстовые сообщения с помощью модели whisper-1. Притом она достаточно хорошо распознает русский язык.

async transcription(filepath) < try < const response = await this.openai.createTranscription( createReadStream(filepath), ‘whisper-1’ ) return response.data.text >catch (e) < console.log(‘Error while transcription’, e.message) >>

Функция chat отвечает за самое главное — общение с ChatGPT на базе модели gpt-3.5-turbo. Четвертую модель можно использовать только по предварительно одобренной заявке.

async chat(messages) < try < const response = await this.openai.createChatCompletion(< model: ‘gpt-3.5-turbo’, messages, >) return response.data.choices[0].message > catch (e) < console.log(‘Error while gpt chat’, e.message) >>

Еще по теме:  Как в Телеграмм настроить время удаления сообщений

Асинхронная функция chat принимает messages — массив объектов с сообщениями, ролями и именами отправителей. А после — возвращает данные из response , ответ ChatGPT.

Осталось только добавить вызовы функций OpenAI.transcription и OpenAI.chat из головного скрипта ./src/main.js.

import < openai >from ‘./openai.js’ import < removeFile >from ‘./utils.js’ // ===== bot.on(message(‘voice’), async (ctx) => < try < await ctx.reply(code(‘Сообщение принял. Жду ответ от сервера. ‘)) const link = await ctx.telegram.getFileLink(ctx.message.voice.file_id) const userId = String(ctx.message.from.id) const oggPath = await ogg.create(link.href, userId) const mp3Path = await ogg.toMp3(oggPath, userId) removeFile(oggPath) const text = await openai.transcription(mp3Path) await ctx.reply(code(`Ваш запрос: $`)) const messages = [] const response = await openai.chat(messages) await ctx.reply(response.content) > catch (e) < console.error(`Error while proccessing voice message`, e.message) >>)

Готово — бот «понимает» голосовые сообщения и умеет отвечать на них текстом. Но это еще не все: сейчас бот не сохраняет контекст общения, не запоминает предыдущие ответы и запросы. Он работает как друг, которому все равно, что вы ему рассказывали в прошлом.

Сохранение данных сессии

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

// импортируем вместе с Telegraf пакет session import < Telegraf, session >from ‘telegraf’ import < initCommand, processTextToChat, INITIAL_SESSION >from ‘./logic.js’ // ====== const bot = new Telegraf(config.get(‘TELEGRAM_TOKEN’)) // говорим боту, чтобы он использовал session bot.use(session()) // при вызове команды new и start бот регистрирует новую беседу, // новый контекст bot.command(‘new’, initCommand) bot.command(‘start’, initCommand) bot.on(message(‘voice’), async (ctx) => < // если сессия не определилась, создаем новую ctx.session ??= INITIAL_SESSION try < await ctx.reply(code(‘Сообщение принял. Жду ответ от сервера. ‘)) const link = await ctx.telegram.getFileLink(ctx.message.voice.file_id) const userId = String(ctx.message.from.id) const oggPath = await ogg.create(link.href, userId) const mp3Path = await ogg.toMp3(oggPath, userId) removeFile(oggPath) const text = await openai.transcription(mp3Path) await ctx.reply(code(`Ваш запрос: $`)) await processTextToChat(ctx, text) > catch (e) < console.log(`Error while voice message`, e.message) >>)
import < openai >from ‘./openai.js’ export const INITIAL_SESSION = < messages: [], >export async function initCommand(ctx) < ctx.session = INITIAL_SESSION await ctx.reply(‘Жду вашего голосового или текстового сообщения’) >export async function processTextToChat(ctx, content) < try < // пушим сообщения пользователя в сессию (в контекст) ctx.session.messages.push(< role: openai.roles.USER, content >) // пушим сообщения бота в сессию (в контекст) const response = await openai.chat(ctx.session.messages) ctx.session.messages.push(< role: openai.roles.ASSISTANT, content: response.content, >) await ctx.reply(response.content) > catch (e) < console.log(‘Error while proccesing text to gpt’, e.message) >>

Бот сохраняет контекст общения до тех пор, пока вы не сделаете новую сессию.

Текстовый чат с ChatGPT

Бот умеет отвечать на голосовые сообщения и сохранять результаты в сессию. Давайте не будем ограничивать пользователей без микрофона и добавим обработку текстовых запросов. Для этого нужно просто обработать через фильтр сообщения с типом text и передать значение напрямую в ChatGPT.

bot.on(message(‘text’), async (ctx) => < ctx.session ??= INITIAL_SESSION try < await ctx.reply(code(‘Сообщение принял. Жду ответ от сервера. ‘)) await processTextToChat(ctx, ctx.message.text) >catch (e) < console.log(`Error while voice message`, e.message) >>)

Облачные серверы с гибкой производительностью ядра vCPU

Деплой бота на облачный сервер

Все готово, но есть проблема: программа запущена на компьютере. Это неудобно, если вы хотите обеспечить круглосуточную работу бота. Ведь тогда нужно поддерживать бесперебойную работу компьютера и постоянное соединение с интернетом. Поэтому лучше перенести бота в облако — это сделать довольно просто.

Подготовка контейнера

Чтобы задеплоить бота на сервер, сначала нужно создать Dockerfile, который будет описывать процесс сборки приложения в контейнер. А для автоматизации команд docker build и docker run можно завести Makefile.

FROM node:16-alpine WORKDIR /app COPY package*.json ./ RUN npm ci COPY . . ENV PORT=3000 EXPOSE $PORT CMD [«npm», «start»]
build: docker build -t tgbot . run: docker run -d -p 3000:3000 —name tgbot —rm tgbot

Теперь для запуска приложения на сервере будет достаточно написать команду make run .

Запуск сервера и загрузка бота

Поскольку бот работает с ChatGPT через API и потребление вычислительных ресурсов минимально, для деплоя подойдет сервер линейки Shared Line. Это линейка облачных серверов с возможностью оплаты только части ядра, например 10, 20 или 50%. Shared Line позволяет использовать все преимущества облака и не переплачивать за неиспользуемые ресурсы.

Для начала зарегистрируемся в панели управления и создадим новый сервер в разделе Облачная платформа. Затем — настроим его.

Далее устанавливаем на сервер Docker согласно инструкции, git и клонируем репозиторий с проектом. Проверяем конфигурации и API-ключи, собираем образ через make build и запускаем c помощью make run !


Пример работы бота.

Супер — бот работает! Дальше вы можете внедрить свой функционал. Например, по сохранению диалога с ботом и выводу истории запросов.

Заключение

Как мы видим, в разработке подобных Telegram-ботов нет ничего сложного. Тем более для хостинга такого проекта не нужно платить полную стоимость сервера: ресурсы оплачиваются по модели pay-as-you-go. Видеоверсия инструкции доступна по ссылке.

Зарегистрируйтесь в панели управления

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

Инструкция

Как автоматизировать подготовку к собеседованиям с помощью Telegram-бота

29 сентября 2023

Инструкция

Как реализовать очередь в Redis

14 сентября 2023

Инструкция

Как генерировать истории с помощью ChatGPT и Telegram

Источник: selectel.ru

Еще по теме:  На эпл вотч перестали приходить уведомления с Телеграма

Чат-бот в Telegram

Чат бот Telegram

Создайте бота своими руками в одном из самых популярных мессенджеров за несколько минут.

Всё для чат-ботов в одном сервисе

Запускайте, управляйте, анализируйте. Это просто с инструментами Unisender.

Удобный конструктор

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

Удобный конструктор

Галерея шаблонов

Готовые шаблоны — типовые сценарии взаимодействия для разных целей: воронки, продажи, ответы на часто задаваемые вопросы, запись к специалистам, уведомления о доставке и другие.

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

Галерея шаблонов

Готовые интеграции

В Unisender доступны больше 40 интеграций с CRM, CMS и другими платформами. Собирайте данные и управляйте процессами в одном месте.

Готовые интеграции

Аналитика

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

Аналитика

Не только Telegram

Подключайте другие мессенджеры — WhatsApp, ВКонтакте, добавляйте бота прямо на сайт. Соберите всех клиентов с разных каналов в одном месте.

Чат боты в других мессенджерах

Техподдержка 24/7

Обращайтесь с вопросами — мы рядом. Ответим в любое время суток и поможем решить проблему. Если что-то непонятно, напишите нам в чат, на почту или позвоните.

Техподдержка 24/7

Что поручить боту в Telegram

Ответы на вопросы

О товарах, услугах, режиме работы, сроках доставки.

Массовые рассылки

Про новинки, акции, специальные предложения для клиентов.

Автоворонки

От знакомства с пользователем до успешной продажи продукта

Уведомления о статусе заказа

Создание, оплата, комплектация, доставка.

Онлайн-запись

В клинику, салон красоты, на вебинар или курсы.

Внутренние коммуникации

Объявления для сотрудников, опросы, тестирования.

Доверьте чат-боту рутинные, но важные задачи

Собрать бота легко

Шаг 1. Создайте чат-карту

Соберите самые частые вопросы, придумайте текст ответов, добавьте кнопки меню.

Шаг 1. Создайте чат-карту

Шаг 2. Создайте чат-бот

Затем получите ключ-токен и привяжите его к боту в Личном кабинете.

Шаг 2. Создайте чат-бот

Шаг 3. Запустите бота и пригласите первых подписчиков

Просто загрузите список адресатов из Личного кабинета Unisender, а мы отправим автоматическую email-рассылку о новом чат-боте. Это бесплатно.

Шаг 3. Запустите бота

Больше пользы. Больше чатов. Больше продаж

Не оставляйте сообщения без ответа

Подключайте консультанта. Если чат-бот не может ответить на вопрос, присоединяйтесь к диалогу в режиме реального времени.

Не оставляйте сообщения без ответа

Персонализируйте общение

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

Персонализируйте общение

Сегментируйте аудиторию

Разделяйте пользователей на группы и отправляйте рассылки на основе их интересов.

Сегментируйте аудиторию

Принимайте платежи Скоро

Подключите платёжную систему и принимайте деньги прямо в мессенджере. Превратите бота в полноценный магазин внутри Telegram.

Принимайте платежи

Чат-боты в Telegram — топ

Всегда на связи

Чат-бот умеет общаться с пользователями в режиме 24/7. Автоматизируйте ответы на типовые вопросы, отправляйте уведомления и рассылки — в любое время суток, без участия службы поддержки.

Удобно для пользователя

Личные контакты, рабочие переписки, интересный контент — всё есть в Telegram. Не уводите клиентов из мессенджера, в котором они привыкли общаться. Будьте на связи с пользователями там, где им удобно.

Большой охват аудитории

Telegram входит в топ-3 популярных мессенджеров в мире. Больше 500 млн активных пользователей в месяц — и аудитория только растёт. Открываемость сообщений — выше 80%. Используйте эти преимущества для продвижения и продаж.

Часто задаваемые вопросы

Как работают боты в Telegram?

  1. Отвечать на сообщения пользователя — реагирует на текст, выбор пунктов меню и команды из букв и специальных символов.
  2. Собирать контактные данные и сохранять лиды для дальнейшей работы с клиентами.
  3. Отправлять рассылки о новинках, акциях и специальных предложениях.
  4. Подключать оператора. Консультант может присоединиться к диалогу и ответить на нетиповые вопросы.
  5. Собирать аналитику — анализируйте эффективность чат-бота и корректируйте сценарии при необходимости.
  6. Принимать оплату. Пользователь может совершать покупки прямо в мессенджере.

️ Смогу ли я создать бота самостоятельно?

Да, это легко. В конструкторе Unisender — интуитивно понятный интерфейс. Вам не придётся создавать чат-бот с нуля. Используйте готовые шаблоны, наполняйте их своим контентом, настраивайте логику сообщений в простом визуальном редакторе.

️ Как подключить чат-бота в Telegram, что мне для этого нужно?

Можно создать сразу несколько ботов в Telegram?

Да. В Unisender можно создавать неограниченное количество чат-ботов.

Сколько стоит чат-бот для Telegram?

Стоимость зависит от количества подписчиков. Есть бесплатный тестовый период. Посмотреть цены.

Где взять подписчиков для бота в Telegram?

  • рассказать в соцсетях;
  • разместить виджет на сайте;
  • отправить ссылку на бота при помощи SMS-рассылки или Viber-рассылки.

У меня есть чат-боты в другом сервисе. Их можно перенести в Unisender?

Да, мы можем помочь с переносом базы в Unisender, но каждый случай нужно рассматривать индивидуально. На возможность переноса влияют данные и параметры в данных, которые вы хотите перенести. Пожалуйста, перед переездом уточните у нашей техподдержки, доступен ли перенос базы подписчиков чат-бота именно для в вашем случае.

Можно ли заказать разработку чат-бота?

Команда Unisender поможет в создании чат-бота для Telegram и других мессенджеров, если вы не хотите заниматься этим самостоятельно. Подробнее об услуге.

Подключить чат-бота в Telegram

Бот в Telegram работает даже тогда, когда вы отдыхаете

Используйте его для общения и продаж — будьте на связи там, где удобно вашим клиентам.

Источник: www.unisender.com

Рейтинг
( Пока оценок нет )
Загрузка ...