Телеграмм бот php без библиотек
Телеграм бот на PHP
Передо мной появилась задача сделать телеграм бота на PHP. Я нашел два варианта решения этой задачи. Первый вариант, используя библиотеку telegram api, второй вариант без использования каких-либо библиотек. Сначала я будут инструкции, которые применимы к этим двум вариантам, а после рассмотрим каждый вариант более подробно
Обратите внимание, что действия указанные в этой статье, я делал на реальном сервере и домене у которого есть сертификат безопасности ssl, т.е. домен доступен по https. Телеграм требует этот сертификат.
Итак для начала нам необходимо создать нашего телеграм бота, для этого в телеграме необходимо найти телеграм бота @BotFather, в диалоге с этим ботом введите команду /newbot, после чего задайте имя и никнейм вашего бота. Вам будет предоставлен уникальный токен, сохраните его куда-нибудь, он вам еще пригодится.
Если вы хотите использовать вашего бота в чатах, то необходимо изменить его приватность. Для этого в диалоге с @BotFather введите команду /setprivacy, вам надо установить значение приватности в Disable.
Теперь перейдем к вариантам создания телеграм бота.
Первый вариант. Библиотека telegram api
Установим библиотеку telegram api, которая упростит нам взаимодействие с ботом. Откройте консоль, перейдите в папку, которую вы выбрали и выполните следующие команды:
Этими командами вы установите composer, при помощи которого мы и скачаем библиотеку для работы с телеграмом. Выполните команду:
Этой командой вы установили библиотеку.
Теперь в папке, в моем случае это папка botinfo, создадим файл index.php в этом файле будем писать код для работы с нашим ботом.
Пример моего php кода в файле index.php
В моем примере бот, на команду /start будет отвечать «Привет!», а на сообщение +, будет отвечать «-«.
Условие if(!file_exists(«registered.trigger»)) нужно для того, чтобы телеграм бот понимал куда ему обращаться на вашем сайте, вам надо будет запустить этот файл из браузера, один раз, чтобы появился файл registered.trigger
Пример получения координат, которые пользователь передал, отправив геолокацию в телеграме:
Пример получения фото, которое отправил в телеграм пользователь:
Пример кода, для отправки фото
Второй вариант. Создание телеграм бота, без библиотек.
Для начала я приведу вам пример кода двух файлов, после чего разберу и поясню, что написано в каждом из этих файлов.
После того как создадите эти файлы, дайте знать телеграму куда ему слать информацию, это делается ссылкой: https://api.telegram.org/botВАШТОКЕН/setWebhook?url=ССЫЛКА_НА_telegrambot.php
Используя эти два файла, ваш телеграм бот на любое сообщение будет отвечать «Нас не догонят!» Разберемся, что у нас написано в файле telegrambot.php.
Если вам интересны все данные, которые приходят от телеграм, то советую эти данные записать в какой-нибудь файл, к примеру:
После чего можете отослать сообщение своему боту, затем открыть файл test.txt и посмотреть информацию в json формате, которая пришла когда вы отправили своему боту сообщение.
Пример такой информации:
Как вы могли заметить, в этом примере, есть «photo», что говорит нам о том, что боту послали фото. Для того, чтобы сохранить фото, которое послали вашему боту, необходимо в файле telegrambot.php использовать следующий код:
Кстати, если мы говорим о фото, которые вы посылаете телеграму, то имейте ввиду, что он их сжимает. Если вам надо получить информацию о фото, например какие-нибудь exif данные, то советую отправлять фото, как файл.
У вас также есть возможность отправить клавиатуру или кнопки в чат. Пример отправки кнопок в чат:
Boolkin blog
Блог о том что мне интересно
Топ тем:
четверг, 20 февраля 2020 г.
Как создать telegram бота используя PHP без использования библиотек
полный код будет выглядеть так:
UPDATE: проверил все на практике и появилось несколько уточнений. В конструкции if с функцией strpos лучше использовать не двойное равно ==, а тройное ===, тогда можно добавить несколько аналогичных конструкций для разных условий. Я например тупо добавил боту команды (через отца бота) и теперь конкретная команду показывает погоду в конкретном городе. Удобно тем что не нужно вводить команду и локацию, а можно тупо щелкнуть по подсказке команды и сразу получить результат.
В API сайта погоды, можно извлечь температуру, для этого нужно в квадратных скобках поместить [«main»][«temp»], а для того чтобы температура отображалась в цельсиях, то в адрес нужно добавить еще и &units=metric
Можно добавить язык, и тогда описание погоды может быть переведено на русский язык. И кстати сами запросы городов тоже можно писать по-русски. Чтобы так сделать надо добавить через амперсанд &lang=ru
Можно нагуглить json decode online и подсунуть туда все то, что выдает api сайта погоды. Все это потом появится на выходе декодера в структурированном виде и потом будет проще понять как извлечь эти данные. Кстати в той статье в самом начале(ссылка на инструкцию на русском языке) эти расшифровки json кода даются и уже прочитав статью второй раз я многое из нее понял. И даже добавил из нее конструкцию по сохранению входящего запроса в текстовый файл. Буквально 4 строчки кода, которые тупо копипастятся:
Телеграм-бот криптовалютного кошелька на основе php-telegram-bot
Для быстрого создания сервиса будем использовать PHP, возьмем одну из библиотек с core.telegram.org (https://core.telegram.org/bots/samples) php-telegram-bot (https://github.com/php-telegram-bot/core/). Эта библиотека часто обновляется и подходит для дальнейшего масштабирования бота.
В свободном доступе есть несколько API-сервисов для работы с криптовалютами:
Во всех перечисленных сервисах нет проверки KYC и свободная регистрация. Blockchain.info требует получение токена для работы, он условно без проверки, но его получение может занять несколько дней или даже недель.
Выбор пал на сервис Apirone, потому что тут нет ограничений на создание кошельков и адресов.
Итак, наш бот будет уметь:
создавать криптовалютный кошелек в нужной валюте,
генерировать криптовалютный адрес,
обрабатывать обратную связь (колбэк) от криптовалютного процессинга,
делать перевод имеющихся средств.
Создаем через @BotFather нового бота, получаем идентификатор бота и ключ API. Далее разворачиваем php-telegram-bot с помощью Composer. Надо заметить, что для работы бота требуется SSL сертификат и действующее доменное имя. В конфиг composer.json добавляем дополнительно библиотеку monolog, которая требуется для отладки приложений. В секции autoload сразу укажем, что для классов будем использовать директорию Classes в папке проекта.
Запускаем composer update для создания базовой структуры. Создаем ее и добавляем туда папку Apirone и в нее файл ApironeWallet.php, в котором реализуем класс взаимодействия с криптопроцессингом.
В нем реализованы следующие функции:
Подробно работу этих функций смотрим в примере. Создадим MySQL базу данных, она будет нужна для работы интерактивных диалогов. В нее требуется добавить три таблицы: apirone_currencies, apirone_transactions и apirone_users.
Установка и удаление вебхука выполняются в две функции:
Каждой команде делаем описание, использование по умолчанию, присваиваем версию.
Сам код команды закладывается в функцию execute(). В ней происходит выполнение операций. Например, вот команда, которая смотрит баланс
SendCommand.php будет интерактивным. В нем бот спросит криптовалюту, адрес для перевода средств и сумму платежа.
Создаем StartCommand.php И в нем при первом обращении генерируем данные для нашей базы данных
В итоговом результате имеем простого бота, который в дальнейшем можно будет трансформировать и дорабатывать, т.к. заложена серьезная база в виде php-telegram-bot.
При написании бота было изучено достаточно источников. И как оказалось, готовых примеров реализаций ботов на просторах интернета очень мало. Данный бот будет полезен тем, кто хочет дорабатывать свои сервисы для приема криптовалюты или хочет получить свой собственный криптовалютный кошелек в телеграме.
Как создать простого бота для Телеграм на PHP
Здравствуйте, дорогие читатели. Раз вы здесь, то пришли вы сюда из поиска по фразе «бот для телеграм на пхп». И работающего бота вы сделать сможете, прочитав данную статью. Вопросы для чего вам бот в Телеграм, здесь не обсуждаются, хотя мы сами используем собственного публичного бота @novelsite_bot для информирования о нас и наших услугах и сборе заявок. А также у нас есть закрытый бот, который мы используем как информатор в CRM (уведомления, свои задачи) и как показала практика — это действительно удобно.
Создадим простого бота для мессенджера Telegram с использованием PHP. Данная статья создана исключительно в поучительных целях и не претендует на полноту или правильность подхода. Весь код бота очень простой и может быть освоен начинающими PHP-разработчиками.
Предупреждаю сразу профессионалов и перфекционистов от программирования — вам здесь делать нечего 
Шаг 1: подготовка
Что нам понадобится:
Шаг 2. Регистрация вашего бота в Телеграм
Да, да. Бот еще даже не создан, но перед этим его уже нужно зарегистрировать, чтобы получить уникальный идентификатор, чтобы в дальнейшем обращаться к BOT API Telegram.
Шаг 3. Создаем код бота
Будем делать прямо в корне сервера (не самый верный подход, можно создать папку bot, а в ней уже файл verysimple_bot.php). Для этого на сервере создадим файл verysimple_bot.php в котором и будет весь код бота. Не забываем, что весь код в файле verysimple_bot.php должен быть в кодировке UTF-8.
Для редактирования файлов кода и заброске их на сервер удобно использовать FAR Manager — в нем есть и подсветка синтаксиса и FTP/SFTP клиент для копирования файла на сервер.
Делаем заготовку бота, который сможет выдавать список команд и информацию о нас:
Шаг 4. Делаем WebHook и конкретизируем код бота
Итак, базовый код бота мы сделали. Он сможет отвечать на 2 команды: /help (Помощь) и /about (Информация о нас). Но как теперь это заставить работать и, как работает функция message_to_telegram?
https://api.telegram.org/bot 1234567899:AAKJhkkjhkjhKhKhjkhkhk_kJhgkjhJhgjghjhG /setWebhook?url= https://www.mysite.ru/verysimple_bot.php
Не забываем где красное заменяем на свои данные!
Как сформируете эту ссылку — вставьте её в браузер и запустите!
Шаг 5. Добавим возможность делать заявки через бота
Заявкой будем считать сообщение или вопрос, которое можно будет отправить через нашего бота какому-то пользователю, назовем его менеджер компании. То есть нам нужно организовать такую цепочку:
Получим идентификатор chat_id пользователя кому нужно отсылать заявки:
Сохраняем состояние бота для каждого пользователя
Далее, важный момент: у нас любой присоединившийся пользователь сможет сделать заявку, и чтобы бот понимал, что находится в режиме ввода заявки именно с этим пользователем, мы должны сохранять и считывать состояния бота для каждого пользователя отдельно!
Теперь дополним код бота, добавив запись и отлов состояния и отправив заявку менеджеру компании, если состояние отправки заявки.
Скачать данный пример: verysimple_bot.php (2 kb)
Шаг 6. Регистрация команд бота
Теперь, если у вас все работает и бот отзывается на все команды, можно будет зарегистрировать эти команды у отца ботов @BotFather
Вот и все — простой бот работает! Всем спасибо, если дочитали и что-то заработало.

Николай Комарков
Пишем простого чат-бота для Telegram на PHP
Шукюров Заур, разработчик @KinomanBot и @GaidarForum_bot, написал руководство по созданию простого чат-бота.
24 июня 2015 года разработчики Telegram открыли платформу для создания ботов (программ, которые выполняют определенные действия по заданному алгоритму). За полтора года работы платформы набралось много интересных чат-ботов, решающих множество проблем и позволяющих с пользой провести время в мессенджере.
Шаг 1: регистрация бота у @BotFather
Прежде чем начать писать код, нового бота нужно зарегистрировать у «папы всех ботов» — @BotFather, чтобы получить токен (ключ) для работы с Telegram API. Регистрация проходит в 5 простых этапов:
По итогу регистрации получаем наш токен — 375466075:AAEARK0r2nXjB67JiB35JCXXhKEyT42Px8s.
Будьте осторожны: никогда и никому не показывайте токен, иначе ваш бот может быть скомпрометирован. Если по несчастливой случайности кто-то нехороший все-таки узнал ваш токен, то заменить его можно всё в том же @BotFather, нажав на кнопку «Revoke current token» в разделе «API Token».
Шаг 2: выбираем способ обработки запросов
Исходя из официальной документации, Telegram API основан на простых HTTP-запросах. Существует всего два различных способа обрабатывать запросы, которые пользователи будут посылать боту:
Мы остановимся на втором варианте, но у него есть ограничение: у вас на сайте обязательно должен быть установлен SSL-сертификат, чтобы все запросы проходили через безопасный протокол HTTPS. Самоподписанные и бесплатные сертификаты «Let’s Encrypt», которые поддерживает большинство хостингов, также подходят.
Пример настройки самоподписанного сертификата из официальной документации Telegram.
Шаг 3: пишем код
Писать код бота будем на PHP, но чтобы не изобретать заново колесо, воспользуемся уже готовой и очень удобной библиотекой.
Перво-наперво привязываем через метод SetWebhook бота к нашему файлу-обработчику. Сделать это можно при помощи библиотеки, но есть вариант быстрее и проще – это построить вот такую ссылку:
https://api.telegram.org/bot375466075:AAEARK0r2nXjB67JiB35JCXXhKEyT42Px8s/setWebhook?url=https://yoursitehere.ru/directory/bot.php,
375466075:AAEARK0r2nXjB67JiB35JCXXhKEyT42Px8s — это наш токен,
https://yousitehere.ru/directory/bot.php — ссылка на файл-обработчик на нашем сайте.
Открыв в браузере эту ссылку, должен прийти JSON-ответ со значением «Webhook was set», что будет означать, что вебхук установлен, и теперь все запросы от пользователей будут присылаться по адресу файла-обработчика.
Переходим к самому главному — обработке этих самых запросов и написанию функционала бота. Ниже представлен полный листинг файла-обработчика:
$keyboard = [[«Последние статьи»],[«Картинка»],[«Гифка»]]; //Клавиатура
$reply = «Добро пожаловать в бота!»;
$reply = «Информация с помощью.»;
>elseif ($text == «Картинка») <
>elseif ($text == «Гифка») <
>elseif ($text == «Последние статьи») <
$reply = «По запросу \»».$text.»\» ничего не найдено.»;
Разберем всё по порядку.
1. Сначала мы подключаем скачанную библиотеку, указав путь (лучше полный) до файла автозагрузчика.
include(‘vendor/autoload.php’); //Подключаем библиотеку
2. Создаем экземпляр класса в переменной $telegram и передаем в него наш токен. В переменной $result получаем информацию о сообщении, которое пришлет нам Telegram.
$telegram = new Api(‘375466075:AAEARK0r2nXjB67JiB35JCXXhKEyT42Px8s’); //Устанавливаем токен, полученный у BotFather
3. Затем определяем главные переменные: текстовое сообщение, уникальный идентификатор пользователя и его юзернейм. Если предстоит работа с БД, то не забывайте про фильтрацию (или лучше используйте PDO).
4. Создаем нашу клавиатуру, состоящую из трех кнопок.
$keyboard = [[«Последние статьи»],[«Картинка»],[«Гифка»]]; //Клавиатура
5. Теперь, когда мы обозначили все переменные, можно перейти к обработке полученного сообщения. Для этого можно использовать конструкцию switch-case либо if-else. Так как принципиальной разницы между ними нет, остановимся на втором варианте, как наиболее привычном.
В самом начале проверяем, заполнена ли переменная $text и является ли сообщение пользователя текстовым.
Если нет, то отправляем пользователю с помощью метода sendMessage сообщение с просьбой ввести текстовое сообщение.
6. Рассмотрим вариант, когда пользователь прислал сообщение с командами /start или /help
$reply = «Добро пожаловать в бота!»;
$reply = «Информация с помощью.»;
В этом случае помимо текста из переменной $reply будет подгружаться клавиатура, состоящая из трёх кнопок: «Последние статьи», «Картинка» и «Гифка». Реализуется это с помощью метода replyKeyboardMarkup, параметрами которого являются:
7. После появления клавиатуры пользователь явно захочет попробовать потыкать на расположенные на ней кнопки, и вот что у нас «под капотом» в этом случае
>elseif ($text == «Картинка») <
>elseif ($text == «Гифка») <
>elseif ($text == «Последние статьи») <
8. Для отправки картинки используется метод sendPhoto, для отправки гифки – sendDocument. В обоих случаях Telegram позволяет передавать прямую ссылку на файл, что безусловно очень удобно, но не так быстро, как если бы мы передавали file_id уже отправленной на сервера Telegram картинки или гифки.
9. Для получения последних статей используется простой парсинг RSS ленты Нетологии при помощи встроенной в PHP функции simplexml_load_file.
В параметрах метода sendMessage можно заметить два новых значения:
10. В качестве смайла (стрелка вправо) используются символы \xE2\x9E\xA1. Список всех смайлов в таком виде можно найти на специальном сайте.
11. После того, как вы протестируете бота и будете уверены в его работоспособности, можно отправлять его на всеобщее обозрение.
Благодаря удобному API, боты Telegram могут стать хорошей платформой для автоматизации рутинных действий, настройки уведомлений, удобному и быстрому получению информации и созданию игр. Бесплатными площадками для продвижения могут послужить каталоги ботов Telegram Bot Store, TeleChappy или 50bots. А анализировать активность пользователей можно с помощью бесплатного инструмента для аналитики ботов от Яндекса — Botan.
От редакции
PHP — один из самых популярных языков программирования. Его легко изучать, с ним легко работать, у него мощное сообщество. 5 мая «Нетология» запускает курс «PHP/SQL: back-end разработка и базы данных», где ведущие программисты расскажут об управляющих конструкциях, циклах, функциях, о строках и массивах. Вы узнаете все про реляционные базы данных и язык запросов SQL, научитесь устанавливать и настраивать веб-сервер nginx и php, управлять базами данных различной сложности. Ждем вас!


.png)