Пишем простых ботов на php и разбираемся как это работает.
Просто, доступно, на конкретных примерах.
Telegram боты на php своими руками. Простые примеры.
Сюда буду сваливать примеры с комментариями.
Расписывать что да как — времени нет, извините.
Итак, этот раздел посвящен телеграм ботам.
И, как можно понять из названия, боты будут написаны именно РНР.
Постараюсь максимально упростить и писать без использования библиотек, модулей и т.п. Максимально просто и понятно.
curl https://api.telegram.org/botXXXX:XXXXXXXXXXXXX/deleteWebhook curl -d «url=https://my.site.ru/bot/mytupobot.php» https://api.telegram.org/botXXXX:XXXXXXXXXXX/setWebhook curl https://api.telegram.org/botXXXX:XXXXXXXXXXXXX/getWebhookInfo
и готов написать своего первого бота прям срочно, чтобы хоть какой-то результат получить от этого. =)
Тупо-бот, самый простой телеграм бот на php, который почти ничего не делает болванка для проектов:
Итак, этот тупо-бот всё же чего-то делает.
Создание чат-бота на PHP. Настройка хостинга и домена
Например, бот умеет слушать сообщения чата в котором сидит и на команду /start выдавать тупо сообщение, смайлик и говорить что он на связи.
А для бота это самое главное — уметь слушать и уметь отправлять сообщение.
Постарался в примере показать некоторые детали. Такие как вставка смайлов в сообщения бота, парс-мод в html сообщения, выгребания из сообщений команд. Вроде самое необходимое есть и наглядно.
UPD: Исходники этих и других примеров php ботов расположены на гитЛабе https://gitlab.com/net4me/telegram-php и код лучше брать оттуда.
Тут код неудобно мне обновлять, но я стараюсь это делать по возможности.
Пример «welcome message».
Задача: При подключении юзера к каналу — выдать приветственное сообщение.
При покидании юзером канала — вывести прощальное сообщение.
Пример простой. Но заставляет задуматься, а что же там в этом контенте такого, что оттуда можно достать всё что угодно? Делаем самого неправильного бота дебагера.
Бот дебагер отладчик. Постит json объекты как есть
Само-собой разумеется, что запускать такого бота-отладчика в паблик чаты глупо, вредно и очень по лоховски.
Предполагается, что у нас есть приватный чат, куда приглашен наш бот, которому мы сейчас сделаем отладочную начинку.
Что мы сделали? Правильно. Все сообщения (кроме команды /start , на которую мы реагируем ) выдаём в сыром виде. Как есть.
Должен заметить, что PHP далеко не самый заточенный под ботов язык программирования. Но в качестве начала изучения telegram bot api вполне подходит и php.
Эти и другие примеры простых телеграм ботов, работающих через webHook вы найдете на github https://github.com/BenJanet4me/telegram-php
И конечно, до новых встреч на портале net4me!
Дополнение: Использование inline keyboard в сообщениях.
Спасибо 4eburashk.
Telegram бот на PHP за 10 минут
Свежие версии этих php ботов вы найдёте в нашем репозитории на gitLab: https://gitlab.com/net4me/telegram-php
Дополнение: У данной статьи появилось продолжение про использование curl и post для отправки в telegram фото, файлов, координат, аудио и т.д.
Добро пожаловать во вторую часть статьи!
- net4me.net home page
- Contacts
Источник: net4me.net
Отправка сообщений в телеграм с помощью JavaScript (JQuery) и PHP
Сегодня я опишу основы, как можно отправлять сообщения, фото, видео или аудио в ваш telegram канал с помощью JavaScript или PHP.
Для начала вам нужно создать бота, здесь нет ничего сложного, программировать ничего не надо.
В телеграме нужно найти, через поиск, бота BotFather, и добавить его в телеграм. С помощью бота BotFather, мы будем создавать своих ботов. Для этого заходим в бот BotFather, пишем /newbot и отправляем сообщение боту.
После того, как вы отправили /newbot, вам нужно придумать название для ваше бота. В моем случае, я назвал бот myddr64_bot
Теперь нужно придумать еще имя пользователя для нашего бота, одно из условий, имя должно заканчиваться на окончание “bot”. У меня, что имя бота, что имя пользователя, называются одинаково, хотя в названии бота, не обязательно использовать окончание “bot”.
После того, как вы придумаете имя пользователя, и отправите его боту, вы в ответ получите токен (715125500:AAHJCKYqq9AR_3yvn6EI7m5VTs_2ThYaav0), с помощью которого, вы будете иметь доступ к вашему созданному боту.
Сразу скажу, бот, который я привожу в примере, я уже удалил.
По этому принципу создаются все боты, но в нашем случае, мы не будем создавать программу под нашего бота. Наша задача, через бота отправлять сообщения в наш телеграм канал. Для этого, нужно зайти в настройки телеграм канала, и добавить нашего бота, как администратора.
По сути, чтобы отправить сообщение в телеграм канал, нам достаточно в адресной строки нашего браузера создать запрос определенного формата.
Источник: ddr64.link
Отправка сообщений в 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