В наше время чат-боты не только предоставляют массу преимуществ при работе с клиентами в бизнесе, но и стали неотъемлемой частью нашей жизни.
Они могут выполнять различные функции и предоставлять разнообразные услуги. Вот некоторые из наиболее распространенных возможностей чат-бота в Telegram:
- Ответы на вопросы: Чат-бот может отвечать на вопросы пользователей на основе заданного набора правил или алгоритмов. Для этого можно подключить ChatGPT, о чем дальше пойдет речь.
- Информационные сервисы: Программа может предоставлять информацию о погоде, новостях, курсах валют, расписаниях транспорта и других событиях.
- Управление задачами и напоминаниями: Помогают пользователям управлять задачами, создавать напоминания и отправлять уведомления в заданное время.
- Бронирование и заказы: Чат-боты могут помогать пользователям бронировать столики в ресторанах, заказывать билеты на мероприятия, оформлять доставку товаров и услуг.
- Поиск информации: Боты могут выполнять поиск информации в Интернете и предоставлять результаты пользователю.
- Поддержка клиентов: Виртуальный помощник может предоставлять поддержку клиентам, отвечать на часто задаваемые вопросы, помогать решать проблемы и направлять пользователей на соответствующих специалистов.
- Игры и развлечения: Боты могут предлагать различные игры, викторины, головоломки и другие формы развлечений для пользователей.
Это только некоторые примеры возможностей чат-ботов в Telegram.
Будем создавать бота в Телеграмме, используя @BotFather
Первым шагом в создании бота будет создание его в Телеграмме. Для этого вы можете использовать @BotFather – официального помощника, который поможет создать вашу программу. Чтобы начать, найдите @BotFather в поиске Telegram и запустите его. Затем введите команду «/newbot» и следуйте инструкциям, вводя имя и юзернейм для вашего бота.
На этом этапе достаточно дать боту имя и обязательно адресс. Адресс должен заканчиваться на _bot. Т.е например fox_bot
Бот вас поздравит с созданием и даст API. Это очень важная часть, свой API нужно сохранить так, чтобы он не попал в чужие руки.
Теперь же нам надо бот активировать. Существуют много фрейворков которые могут активировать бота. Но самый простой способ это использовать Webhook
Webhook - это метод веб-разработки, который позволяет приложениям автоматически получать информацию из других приложений или сервисов в режиме реального времени. Он представляет собой механизм обратного вызова (callback), который отправляет данные по HTTP протоколу на определенный URL.
Вот URL - https://api.telegram.org/bot<ваш API>/setWebhook?url=https://example.com/<ваш обработчик команд бота>
Эту ссылку введите в адресную строку поисковика и нажмите "ENTER"
В ответ должны получить {"description": "Webhook was set", "ok": true, "result": true}
Значит все нормально можно продолжать
Настройка
После создания вам нужно настроить бота, добавив команды, которые он будет выполнять, а также настроить его интерфейс. Для этого вы можете использовать @BotFather, введя команды «/setcommands» и «/setabouttext». Он также поможет настроить аватар и описание вашего бота.
При создании телеграмм бота необходимо выбрать способ обработки запросов.
Существует несколько вариантов:
- Использование библиотек: можно использовать готовые библиотеки для работы с Telegram API, такие как pyTelegramBotAPI или Telebot. Эти библиотеки упрощают процесс разработки и позволяют более быстро создавать ботов.
- Использование фреймворков: можно использовать фреймворки, такие как Flask или Django, для обработки запросов. Эти фреймворки позволяют создавать более сложные боты и легко масштабировать приложение.
- Написание собственного кода: можно написать собственный код для обработки запросов, используя Telegram API напрямую. Этот вариант может быть более трудоемким, но позволяет более гибко настроить бота и оптимизировать его производительность.
Выбор способа зависит от конкретной задачи и уровня опыта разработчика.
Для начала сделаем оработчик на php и прикрутим к нему ChatGPT-3.5 turbo от OpenAI.
Нам понадобится API от OpenAI. К сожалению из Росии получить его не так просто, но возможно. Об этом будет отдельная статья.
Будем исходить из того, что он у вас есть.
$bot_token = <Токен вашего телеграмм бота> $data = file_get_contents('php://input'); // весь ввод перенаправляем в $data $data = json_decode($data, true); // декодируем json-закодированные-текстовые данные в PHP-массив // Основной код: получаем сообщение, что юзер отправил боту и // заполняем переменные для дальнейшего использования if (!empty($data['message']['text'])) { $chat_id = $data['message']['from']['id']; $user_name = $data['message']['from']['username']; $first_name = $data['message']['from']['first_name']; $last_name = $data['message']['from']['last_name']; $text = trim($data['message']['text']); $text_array = explode(" ", $text); } // функция отправки сообщения от бота в диалог с юзером function message_to_telegram($bot_token, $chat_id, $text, $reply_markup = '') { $ch = curl_init(); $ch_post = [ CURLOPT_URL => 'https://api.telegram.org/bot' . $bot_token . '/sendMessage', CURLOPT_POST => TRUE, CURLOPT_RETURNTRANSFER => TRUE, CURLOPT_TIMEOUT => 10, CURLOPT_POSTFIELDS => [ 'chat_id' => $chat_id, 'parse_mode' => 'HTML', 'text' => $text, 'reply_markup' => $reply_markup, ] ]; curl_setopt_array($ch, $ch_post); curl_exec($ch); }
Я здсь не буду загружать вас описанием обработки команд типа /help и прочих. В кратце, в переменной $text будет запрос от пользователя, и в зависимости от него можно выводить нужную инфу.
Теперь самое интересное. Мы запрос от пользователя отправим GPT, а ответ вернем в телеграмм бот
if (!empty($data['message']['text'])) { $url = "https://api.openai.com/v1/chat/completions"; $api_key = <здесь API чат бота> $data = array( 'model' => 'gpt-3.5-turbo', 'messages' => array( array( 'role' => 'user', 'content' => $data['message']['text'] ) ) ); $options = array( CURLOPT_URL => $url, CURLOPT_POST => true, CURLOPT_POSTFIELDS => json_encode($data), CURLOPT_RETURNTRANSFER => true, CURLOPT_HTTPHEADER => array( 'Content-Type: application/json', "Authorization: Bearer $api_key" ) ); $ch = curl_init(); curl_setopt_array($ch, $options); $response_json = curl_exec($ch); $response = json_decode($response_json, true); curl_close($ch); @$response['choices'] != false ? $text = $response['choices'][0]['message']['content']:die('Бот временно не доступен. Мы решаем эту проблему'); message_to_telegram($bot_token, $chat_id,$text); }
Это должно быть в одном файле вашего обработчика. Адресс которого вы указали в веб-хуке
Если все нормально, то вы сможете общаться с ChatGPT в телеграмм
Ну, а на питоне как-то так. Правда без GPT.
Для начала воспользуемся pyTelegramBotAPI.
Сначала установите Python и pip (установщик пакетов Python), а затем pyTelegramBotAPI, используя следующую команду в командной строке:
pip install python-telegram-bot
После установки библиотеки можно приняться за программирование. Вот пример кода, который вы можете использовать для создания бота вида «Hello World»:
import telegram def hello(bot, update): chat_id = update.message.chat_id bot.sendMessage(chat_id=chat_id, text="Hello, World!") bot = telegram.Bot('ваш_токен_бота') dp = telegram.ext.Dispatcher(bot) dp.addTelegramCommandHandler('hello', hello) dp.run()
Для создания кнопок в телеграмм боте необходимо использовать специальный тип сообщения - InlineKeyboardButton. Это позволяет добавлять кнопки с заданным текстом и действиями в сообщение бота.
Например, можно создать кнопку для отправки определенного текста в ответ на нажатие:
from telegram import InlineKeyboardButton, InlineKeyboardMarkup keyboard = [[InlineKeyboardButton("Нажми меня", callback_data='press')]] reply_markup = InlineKeyboardMarkup(keyboard) update.message.reply_text('Выберите опцию:', reply_markup=reply_markup)
Здесь создается кнопка с текстом "Нажми меня" и атрибутом callback_data. Когда пользователь нажимает на кнопку, это значение передается в обработчик действий.
Также можно создавать меню с несколькими кнопками:
keyboard = [ [ InlineKeyboardButton("Опция 1", callback_data='option1'), InlineKeyboardButton("Опция 2", callback_data='option2'), ], [ InlineKeyboardButton("Отмена", callback_data='cancel') ] ] reply_markup = InlineKeyboardMarkup(keyboard) update.message.reply_text('Выберите опцию:', reply_markup=reply_markup)
Здесь создается меню с двумя кнопками "Опция 1" и "Опция 2", а также кнопкой "Отмена".
Обработчики действий можно настроить в боте, чтобы выполнять определенные действия при нажатии на кнопки.
Разверните ваш бот
После написания кода вам нужно развернуть бот. Для этого вы можете воспользоваться бесплатными сервисами хостинга, например Heroku.
Создайте аккаунт на Heroku, а затем и приложение. Далее вы сможете загрузить свой код и настроить переменные среды, в том числе токен вашего бота.
Теперь можно потестировать и использовать
После того, как ваш бот развернут, вы можете начать использовать его в Телеграмме. Просто найдите вашего бота и начните отправлять ему сообщения.
В заключение, создание бота в Телеграмме не так сложно, как может показаться на первый взгляд. Следуйте этим простым шагам и используйте полученные знания, чтобы создать бота, который поможет решать самые разнообразные задачи.