В этой статье мы напишем небольшой код и разберём, как отправлять запросы через HTTPS .
Отправка запросов
Для начала разберём, что мы можем сделать и получить пользуясь только браузером на любом устройстве , даже со смартфона.
-Большая часть взята из документации по Telegram Bot API .
Все запросы к Telegram Bot API осуществляются через HTTPS в следующем виде:
https://api.telegram.org/bot/название_метода.
https://api.telegram.org/bot123456:ABC-DEF1234ghIkl-zyx57W2v1u123ew11/getMe
Допускаются GET и POST запросы.
Для передачи параметров в Bot API доступны 4 способа:
- Запрос в URL
- application/x-www-form-urlencoded
- application/json (не подходит для загрузки файлов)
- multipart/form-data (для загрузки файлов)
Подробнее об этом вы можете прочитать в официальной документации ,
а сейчас приступим к практике GET запроса.
GET запросы: getMe, getupdates
Метод » getMe» позволит нам получить основную информацию о боте.
Как создать телеграмм бота и получить ID чата
Открываем браузер и в адресной строке пишем:
Но вместо пишем токен полученный от BotFather.
Как в примере выше.
Отправляем данный запрос и смотрим, что мы получим.
Часть token’a закрашена.
В результате мы видим, вкратце, что наш бот работает ,
его first_name , username и дополнительные сведения ,
что они значат вы можете догадаться просто переведя их.
Теперь получим обновления нашего бота,
перейдём в диалог к нашему боту в Telegram и напишем ему » /start «,
также в адресную строку браузера напишем вместо команды
» getME » >> » getupdates «.
И посмотрим, что на этот раз мы получим.
-поместил в кадре 2 окна, для вашего удобства,
чтобы не засорять всю статью скринами.
Метод » getupdates » позволяет получать нам информацию поступающую на нашего бота.
В ней мы видим имя и фамилию отправителя, его id , id этого чата , тип диалога , количество символов в сообщении, сам текст сообщения и т.п.
Если написать на русском, то текст сообщения будет не так просто прочитать, дело в том, что русская клавиатура будет выведена в кодировке utf-8. Можете конвертировать её на специальных сайтах,
в интернете их полно.
Теперь мы разберём, как отправить сообщение через адресную строку, зная id чата.
Воспользуемся методом » sendmessage».
Пишем от имени бота через адресную строку, метод «sendmessage»
Для начала скопируем и сохраним chat_id, именно, нашего диалога.
Копируем выделенные цифры.
Переходим в адресную строку, стираем метод » getupdates » и пишем » sendmessage «, но на этом ещё не всё, нам ещё нужно написать наш chat_id и текст сообщения .
В данном примере » 974446490 » вам следует сменить на id вашего диалога.
И » текст » можете сменить на абсолютно любое текстовое сообщение .
Сообщения с сайта в чат Telegram
Как отправлять фотографии или видео ,
мы с вами разберём в следующих статьях,
но в браузере это делать нет смысла, так как за нас всё будет делать наш код.
Отправим сообщение и скорее же переходим к написанию кода.
Отправляю в адресную строку: /sendmessage?chat_id=974446490>, token вставляйте свой.
Получили сообщение в Telegram.
Не будем с этим затягивать.
лично мне данная функция пригодилась, разве что, для розыгрышей,
но для этого приходилось следить за тем, что пишут мои друзья(как же им не дать протестировать бота), затем конвертировать с utf-8 русский текст и после уже отвечать.
Переходим к ЯП Python .
Первый код, эхо-бот
Для удобства, вы можете скачать PyCharm .
-Но видите ли на мою 7-ку он не встал, т.к. она 32-разрядная, так что в примерах будет самый обычный Python IDLE(Python 3.8.3 shell), результату это не помешает.
У кого также не получится скачать PyCharm, советую скачать notepad++, он удобно подстраивается почти под каждый язык, но выполнен в стиле обычного блокнота.
Для начала без объяснения.
Создаём текстовый документ( лучше в отдельной папке ) c именем config.py >>, с текстом:
TOKEN = ‘ ВАШ_ТОКЕН ‘ >>, никаких точек и точек с запятой в конце не надо. Этот файл нам ещё пригодится, скоро расскажу зачем.
Пример config.py
Теперь создаём в той же папке текстовый документ с любым названием, главное чтобы расширение было » .py » Я назову его как и бота Moon.py >>.
Пишем в нём следующий текст, после расскажу, что он значит.
import telebot
import config
bot = telebot.TeleBot(config.TOKEN)
def welcome(message):
bot.send_message(message.chat.id, «Привет, !».format(message.from_user, bot.get_me())
bot.polling(none_stop=True)
Код в Python shell.
Теперь мы разберём с вами подробно весь этот код , а затем допишем небольшую часть, чтобы бот пересылал нам наши же сообщения.
-Просто не знал что придумать простенькое и решил сделать как во многих самоучителях, написать эхо-бота.
- import telebot — импорт библиотеки telebot, чтобы наш бот работал
import config подключаем наш файл config.py, чтобы взять от туда ТОКЕН.
bot.send_message(message.chat.id, «Привет, !».format(message.from_user, bot.get_me()) —
— bot.send_message — метод отправки сообщения ботом, принимает 2 аргумента: id чата и сам текст, аргумент «message.chat.id» равен chat_id, но работает он только в случаях, если наш бот получил сообщение от пользователя, иначе нам нужен другой аргумент, но об этом случае как-нибудь потом.
В кавычках «» пишем текст, который бот должен отправить.
В нашем примере он пишет: «Привет, ИМЯ_ПОЛЬЗОВАТЕЛЯ!».
Переменная хранит в себе имя пользователя который написал сообщение боту, но если написать его просто так, то бот нам так его и выведет, а не имя пользователя,
- для этого нам и нужен параметр .format(), который принимает в себя сообщение и GET запросом передаёт в ту переменную имя пользователя который написал нашему боту.
- bot.polling(none_stop=True) — Запуск нашего бота в режиме без тормозов,всё-таки он «тормозит».
Чтобы запустить нашего бота в Python shell, достаточно нажать F5.
Этот способ предпочтительнее для недолгого включения .
А если на длительный промежуток времени , лучше воспользоваться python.exe или py.exe, их вы можете найти если наш файл открыть с помощью. В таком случае py.exe изображен с ракетой, а python.exe c чёрным фоном, в результате запуска, вы увидите, что разницы в них нет, но нам же надо всё рассмотреть.
Можете запустить бота одним из трёх способов и проверить его на команде » /start «, на обычные текстовые сообщения он ещё не умеет отвечать. Научим.
Допишем в коде, после функции welcome и перед bot.polling() :
def first(message):
Источник: dzen.ru
Отправка сообщений в Telegram
И вот одним из популярных мессенджеров является Telegram. На мой взгляд преимуществ у него много. И наверное каждый пользователь хотел бы получать сообщения с формы прямо в телеграмм! Ведь это круто, на дворе то уже 2017 год))
И как раз в данной статье я хочу показать Вам, как я настроил отправку сообщений с формы обратной связи в Telegram. Конечно всё это я реализовал для MODX, это не сложно реализовать и на каком-нибудь PHPMailer.
Схема использования очень проста, и выглядит так:
Первым делом необходимо создать бота в Telegram с помощью этой инструкции
Дальше, после того как Вы создали бота, то у вас есть так называемый токен, который как раз нам и пригодится!
Отправка запросов
Все запросы к Telegram Bot API должны осуществляться через HTTPS в следующем виде:
https://api.telegram.org/bot/НАЗВАНИЕ_МЕТОДА.
Все методы доступны в Telegram Bot API
Узнать id чата Telegram
Дальше необходимо узнать id чата, чтобы бот присылал сообщения с формы именно Вам!
Для этого необходимо что-нибудь написать своему боту и воспользоваться методом getUpdates.
После того как Вы написали своему боту, прописываем следующий адрес в браузере:
https://api.telegram.org/bot/getUpdates
Вместо необходимо прописать свой токен!
Если всё сделали правильно, то Вы получите ответ в виде массива. Для корректный работы нам необходимо id чата, он как-раз такие есть в этом массиве после «chat»:»>
Так, id чата успешно получен, теперь попробуем отправить тестовое сообщение своему боту с браузера!
Отправка тестового сообщения
Чтобы отправить сообщение себе через бота, необходимо воспользоваться методом sendMessage. Для этого прописываем следующий адрес в браузере, вместо и необходимо прописать свои данные!
https://api.telegram.org/bot/sendMessage?chat_id=; $chat_id = «»; $values = $hook->getValues(); #Получаем название формы $formName = $modx->getOption(‘formName’, $formit->config, ‘form-‘.$modx->resource->get(‘id’)); #Получаем ip адрес отправителя $ip = $modx->getOption(‘REMOTE_ADDR’, $_SERVER, »); #Данные с формы $name = $values[‘name-zv’]; $phone = $values[‘phone-zv’]; #Создаем массив $arr = array( «Имя» => $name, «Телефон» => $phone, «Название формы» => $formName, «Айпи» => $ip); /*Цикл по массиву (собираем сообщение) */ foreach($arr as $key => $value) < $txt .= «».$key.»: «.$value.»%0A»; > #Отправляем сообщение $fp=fopen(«https://api.telegram.org/bot/sendMessage?chat_id=text=»,»r»); #Возвращаем true return true;
Указываем токен и id чата!
Наименование полей с формы у вас могут быть другими, я использовал название полей со статьи, где мы настраивали отправку сообщений с модального окна!
К тому-же данные с формы можно получить сразу с помощью метода $hook ->getValues(); но для наглядности я решил расписать всё подробнее))
Кстати строки в телеграмме я переношу с помощью %0A. Почему-то n и
не работали(
И так, теперь там где вызывается Formit, прописываем наш хук FormitTelegram в formName=`Название формы`
Вот и всё, также можно настроить отправку сообщений и себе в ВК!
Если у Вы отправляете форму с помощью PHP, то на блоге smartlanding.biz есть грамотная инструкция, где всё подробно расписано с применением Ajax.
Надеюсь статья понравилась и очень полезная 🙂
Пишите в комментариях, чтобы вы ещё хотели реализовать с помощью ботов для телеграмма!
UPD
Воспользуйтесь методами компонента https://modstore.pro/packages/alerts-mailing/modtelegram
Очень удобно, особенно при отправке изображений 🙂
Написать комментарий
Алексей 25 июля 2022, 15:32 # ↓ 0
А как сделать чтобы приходили данные с чекбоксов формы? Данный скрипт их не выводит
Ильвар 11 января 2023, 15:10 # ↑ ↓ 0
Яна 23 мая 2022, 18:38 # ↓ 0
Кто захочет подцепить бота в группу, добавьте также в группу бота Get My ID, он выдаст Current chat ID начинающийся с минуса, его и нужно использовать в сниппете
Shahzod 11 января 2022, 13:50 # ↓ 0
Всем привет. Готовы ли вы к этому проекту? По какой-то причине я не мог использовать то, что я сделал. По возможности скиньте .zip
Сергей 27 ноября 2021, 20:58 # ↓ 0
Я перевел своих клиентов на webjack, делает все то же самое, минимальный тариф дешевле.
Можно получить месяц бесплатно по промокоду semen21, напишите его в чат техподдержки на сайте
Jstart 08 ноября 2021, 15:09 (Комментарий был изменён) # ↓ 0
Как возможно прикрепить файлы например фотографии и документы и отправить?
Не где не могу найти материал, как это можно реализовать?
Я думаю эта тема была бы топ если реализовать такое ))
Просто есть sendPhoto — для фото и есть sendDocument — для документов, вопрос такой есть ли общий переменная может как то объединить?
Мой снипет
getValues(); // Получаем название формы $formName = $modx->getOption(‘formName’, $formit->config, ‘form-‘.$modx->resource->get(‘id’)); // Получаем ip адрес отправителя $ip = $modx->getOption(‘REMOTE_ADDR’, $_SERVER, »); // Берем данные с формы $name= $values[name]; $phone= $values[‘phone’]; $email= $values[’email’]; $length= $values[‘length’]; $width= $values[‘width’]; $height= $values[‘height’]; $circulation= $values[‘circulation’]; $arr = array( «IP» => $ip, «Длина» => $length, «Ширина» => $width, «Высота» => $height, «Количество» => $circulation, «Имя» => $name, «Телефон» => $phone, «Email» => $email); if($length){ $arr[«Длина»] = $length; } if($width){ $arr[«Ширина»] = $width; } if($height){ $arr[«Высота»] = $height; } if($circulation){ $arr[«Количество»] = $circulation; } if($email){ $arr[«Email»] = $email; } if($phone){ $arr[«Телефон»] = $phone; } if($email){ $arr[«Email»] = $email; } $txt = ‘Заполнена форма — ‘.$formName.»n»; // Цикл по массиву (собираем сообщение) foreach($arr as $key => $value) { $txt .= «».$key.»: «.$value.» n»; } // Отправляем сообщение посредством cURL $website=»https://api.telegram.org/bot».$token; $params=[ ‘chat_id’ => $chat_id, ‘text’ => $txt, ‘parse_mode’ => ‘html’ ]; $ch = curl_init($website . ‘/sendMessage’); curl_setopt($ch, CURLOPT_HEADER, false); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_POSTFIELDS, ($params)); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); $result = curl_exec($ch); $modx->log(MODX_LOG_LEVEL_ERROR, $result); curl_close($ch); //Возвращаем true – это особенность написания хуков для FormIt. return true;
Игорь 09 ноября 2021, 21:59 # ↑ ↓ 0
Воспользуйтесь данным компонентом modstore.pro/packages/alerts-mailing/modtelegram
jstart 10 ноября 2021, 00:40 # ↑ ↓ 0
Оно не понятное, и смысла не вижу от него, как с формой работать, как подключать, нету не какой информации.
Доки вообще старые.
Как вставлять документы?
Если скините форум как он работает и подключается было бы супер.
jstart 10 ноября 2021, 00:44 (Комментарий был изменён) # ↑ ↓ 0
Это же чат и всё, смысла нет, нужна именно форма для отправки заявки, спасибо конечно, но это не подходит уже смотрел.
Источник: igamov.ru
Telegram bot с ChatGpt на Python.
Это руководство по созданию ChatGPT бота Telegram всего несколькими строками кода на ЯП Python. Независимо от того, являетесь ли вы профессионалом в области программирования или только начинаете, мы подготовили для вас пошаговое руководство. Приготовьтесь произвести революцию в ваших чатах и хорошенько повеселиться!
1. Для начала убедитесь, что на вашем компьютере установлен Python.
Если python не установлен, инструкция тут:
Как только бот будет создан, BotFather предоставит вам токен. Этот токен используется для аутентификации вашего бота и предоставления ему доступа к Telegram API. Скопируйте токен и используйте его в коде вашего бота для аутентификации и доступа к API. Не делитесь токеном вашего бота ни с кем.
Затем вам нужно будет получить ID чата канала, который вы только что создали в Telegram. Этот ID является уникальным идентификатором и используется, когда кто-то хочет интегрировать Telegram со своими собственными приложениями или сервисами.
Отправьте сообщение на этот канал через API бота, используя своё имя канала и токен доступа.
, «chat»:< «id»:-1001527664788, «title»:»», «username»:»TestChannel»,»type»:»channel» >, «date»:1670434355, «text»:»123″ > >
Вы найдёте идентификатор канала в разделе chat/id.
Важно предоставить вашему боту права администратора, чтобы он мог выполнять все необходимые задачи.
Внимание всем программистам! Эти ID токенов доступа могут выглядеть красиво, но они просто для галочки. Далее вам понадобится свой собственный для вашего приложения.
3. Пришло время получить свой API-ключ и подключиться к движку OpenAI.
Если в вашем регионе ChtGpt недоступен, вот инструкция по получению апи ключа,
Оттуда вы можете сгенерировать новый ключ и использовать его для аутентификации ваших запросов API. Важно хранить этот API-ключ в секрете и в безопасности, чтобы защитить вашу учётную запись.
Имейте в виду, что OpenAI может ограничить количество вызовов API, которые вы можете выполнять. С личной учётной записью вам предоставляется грант в размере 18 долларов США для использования в запросах API. Обязательно ознакомьтесь с условиями предоставления услуг и информацией о ценах на веб-сайте OpenAI перед использованием API.
Подключение к Text-davinci-003
Text-davinci-003 – это большая языковая модель, разработанная OpenAI. Она считается одной из наиболее эффективных языковых моделей, доступных в настоящее время, благодаря своей способности генерировать текст, похожий на человеческий, и выполнять широкий спектр языковых задач. Она был обучена на наборе данных из миллиардов слов и может генерировать связный текст, который читается так, как будто он был написан человеком.
С помощью нескольких простых шагов и немного магии Python вы сможете подключить и развернуть своего бота ChatGPT в своей группе в кратчайшие сроки. Давайте приступим к написанию кода!
4. Начните писать код на Python.
Для начала мы импортируем необходимые библиотеки и установим параметр аутентификации ключа.
# 1. импорт стандартных библиотек import json import os import threading # серктный ключ чатджипити, полученный ранее API_KEY = ‘xxxxxxxxxxxsecretAPIxxxxxxxxxx’ # Models: text-davinci-003,text-curie-001,text-babbage-001,text-ada-001 MODEL = ‘text-davinci-003’ #токен, полученный от телеграм бота ботфазер BOT_TOKEN = ‘xxxxxxbotapikeyxxxxx’ # определяем личность бота, мы сделали бота-шутника для примера BOT_PERSONALITY = ‘Answer in a funny tone, ‘
Вводим параметр BOT_PERSONALITY — задайте стиль ответов ChatGpt в телеграме ! Используйте эту удобную константу, чтобы придать вашему боту определённый тон или манеру разговора, например, дружелюбный, профессиональный или с чувством юмора. Установив параметр BOT_PERSONALITY, вы можете настроить способ общения ChatGPT с вашими пользователями и создать более персонализированный и привлекательный объект:
Вот 15 видов персоналий, которые можно выбрать of ChatGPT: 1. Friendly 2. Professional 3. Humorous 4. Sarcastic 5. Witty 6. Sassy 7. Charming 8. Cheeky 9. Quirky 10. Laid-back 11. Elegant 12. Playful 13. Soothing 14. Intense 15. Passionate
Затем создайте функцию, которая получает ответ от чат-бота OpenAI.
# 2a. ответ от openAi def openAI(prompt): # делаем запрос на сервер с ключами response = requests.post( ‘https://api.openai.com/v1/completions’, headers=’>, json= ) result = response.json() final_result = ».join(choice[‘text’] for choice in result[‘choices’]) return final_result # 2b. функция обработки изображений def openAImage(prompt): # запрос на OpenAI API resp = requests.post( ‘https://api.openai.com/v1/images/generations’, headers=’>, json= ) response_text = json.loads(resp.text) return response_text[‘data’][0][‘url’]
Эта функция 2.a отправит POST-запрос в OpenAI API с заданными входными данными (например, “Что такое энтропия?”) для анализа API. Параметр temperature определяет, насколько случайным будет сгенерированный ответ — более низкие значения означают более предсказуемый текст. Параметр max_tokens устанавливает ограничение на количество слов и знаков препинания в ответе. И вуаля! Функция вернёт сгенерированный ответ из указанной модели OpenAI.
Далее, пришло время создать функцию, которая отправляет сообщение определённой группе в Telegram:
# 3a. функция отправки в заданную телеграм группу def telegram_bot_sendtext(bot_message,chat_id,msg_id): data = < ‘chat_id’: chat_id, ‘text’: bot_message, ‘reply_to_message_id’: msg_id >response = requests.post( ‘https://api.telegram.org/bot’ + BOT_TOKEN + ‘/sendMessage’, json=data ) return response.json() # 3b. Функция, которая отправляет изображение в определенную группу телеграмм def telegram_bot_sendimage(image_url, group_id, msg_id): data = < ‘chat_id’: group_id, ‘photo’: image_url, ‘reply_to_message_id’: msg_id >url = ‘https://api.telegram.org/bot’ + BOT_TOKEN + ‘/sendPhoto’ response = requests.post(url, data=data) return response.json()
Приведённая выше функция 3.a отправляет сообщение определённой группе Telegram с помощью Telegram API. Функция принимает три аргумента: bot_message, который является сообщением, подлежащим отправке, chat_id, который является уникальным идентификатором чата, в который будет отправлено сообщение, и msg_id, который задаёт уникальный идентификатор сообщения, на которое вы хотите ответить. Функция использует библиотеку запросов для отправки запроса GET в Telegram API с необходимыми параметрами, включая ключ API, идентификатор чата и сообщение для отправки.
Теперь пришло время перейти к самому интересному— созданию функции, которая извлекает последние запросы от пользователей в группе Telegram, генерирует умный ответ с помощью OpenAI и отправляет его обратно в группу. Давайте сделаем это!
Итак, последний шаг! Пришло время добавить компонент планирования в ваш бот, чтобы он мог регулярно проверять наличие новых сообщений в группе и отправлять ответы по мере необходимости. Потоковая библиотека Python может помочь вам в этом:
# 5 Запускаем проверку каждые 5 секунд на наличие новых сообщений def main(): timertime=5 Chatbot() # 5 секунд таймер threading.Timer(timertime, main).start() # запускаем функцию main if __name__ == «__main__»: main()
Та-да! Представляем плоды вашего труда: окончательный код на Python для вашего нового весёлого чат-бота. Просто скопируйте и вставьте этого “парня” в свой любимый редактор кода, подключите свои API-ключи и идентификатор группы чата, и вы в мгновение ока будете общаться с ChatGPT.
Полная версия кода (github link here):
С помощью нескольких простых шагов и небольшого количества магии Python вы успешно создали чат-бота для своей группы Telegram с помощью OpenAI. Поздравляю! Время откинуться на спинку стула и понаблюдать за поступающими весёлыми ответами. Или, знаете ли, проведите некоторую тонкую настройку, чтобы сделать вашего чат-бота действительно уникальным.
Источник: uproger.com