Как отправить файл Telegram bot PHP

Получение ботом медиа-файлов и сохранение их на своем сервере

Содержание

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

У Telegram Bot Api для этого есть специальный метод getFile. На входе он получает file_id , на выходе объект File.

Параметров file_id у картинки может быть больше одного, потому как телеграм присылает несколько вариантов размеров картинки, последний всегда оригинал. При загрузке картинки в бот приходит информация в виде объекта Photo, в котором лежит массив объектов PhotoSize.

Наш бот будет принимать только команду /start и картинку, на остальные запросы он будет «ругаться». Чтобы определить, что нам пришло в нашем уже знакомом по предыдущим статьям методе init() будем проверять ключи массива пришедших данных. Для реализации задуманного нам нужен только объект Message.

Картинки мы будем сохранять в директории img , располагается она рядом с файлом index.php в котором наш код.

В случае если прислали картинку, то мы передаем массив объектов PhotoSize в метод getPhoto() , он вернет результат в boolean. Внутри метода происходит 2 действия:

  1. через метод getPhotoPath() получаем расположение файла на сервере Telegram
  2. через метод copyPhoto() копируем картинку к себе на сервер

Картинка располагается на сервере Telegram по стандартному пути:

Выводит картинку по этому пути где-либо в сети не рекомендую, так как будет доступен ваш токен от бота.

Сохранять себе на сервер мы будем оригинал, поэтому нам надо узнать количество элементов в массиве, использовать будем функцию count().

Чтобы получить расширение файла, будем разбивать file_path в массив по знаку . функцией explode() и брать последний элемент используя функцию end(). Для копирования файлов пользуемся функцией copy().

Подводим итог

Сохранить картинку через Телеграм бот очень просто. Методы Bot API позволяют это сделать быстро. Для сохранения других типов файлов с Телеграм алгоритм аналогичный. Скачать исходный код можно по этой ссылке.

Комментарии

Авторизуйтесь через Telegram, чтобы оставить комментарий.
Откройте бот @SiteAuthBot, нажмите кнопку Старт/Start. Следуйте инструкциям бота.

Внимание!
Убедитесь, что эта страница открыта в браузере, а не в приложении Telegram. В противном случае авторизация пройдет только в приложении Telegram.

imakebots.ru

API Telegram Bot и PHP — Отправка сообщений

Не так давно появилась необходимость реализовать отправку сообщений с сайта в Telegram Бот. Ранее описывал работу с API VK, где в случае получении капчи отправлялось сообщение на почту. Этот вариант меня не совсем устроил, бывают задержки, по этому решил освоить API Telegram. Всё достаточно просто, необходимо только создать Telegram Bot, получить ключ (он же token) и >

API Telegram Bot и PHP — Отправка сообщений

Содержание:

Создаём Telegram Bot.

Для начала нам необходимо создать нашего бота и получить ключ. Для этих целей разработчиками создан бот «@BotFather«. Нам необходимо написать боту в чат несколько сообщений с нужными нам параметрами:

1. Для начала пишем сообщение «/start«. Нам в ответ вернут все возможные команды бота.

2. Отправляем боту команду «/newbot«.

3. Нам предлагают ввести имя нашего бота. Тут как вам будет угодно, я назвал «PechnekTest».

4. Теперь нам необходимо выбрать имя пользователя для бота, главное, что бы название нашего бота заканчивалось на «bot» (например TestBot или Test_bot). В моём случае «PechnekTest_Bot»

5. После всего мы увидим поздравления и наш токен.

6. Теперь добавляем в друзья нашего бота. Можно искать по имени что мы задали ранее.

Получаем Chat ID Telgram Bot -а.

Для того, что бы нам отправлять сообщения, нам необходимо узнать «chat id«, если по-простому, то идентификатор нашего чата. Для этого нам необходимо проделать ряд действий:

1. Написать что-то нашему боту, абсолютно любое сообщение. Нужно это для того, что бы мы могли достать наш chat id. Без этого метод API Telegram вернёт нам пустое значение.

pechenek.net

Как отправить большие файлы с URL на бота Telegram?

У меня есть файлы большого размера (в MP4 а также Zip форматы), и я хочу отправить их в свой чат ботом Telegram, я использовал код ниже:

Но он просто может отправлять файлы с небольшими размерами, менее 50 МБ! Но я знаю, что для документов, отправляемых file_id , Ты можешь видеть эта страница
Теперь, как я могу сделать file_id для моих файлов? Мои файлы загружены на мой сервер, и я использую PHP.

Telegram Bot API может отправлять файлы размером менее 20 МБ url Param, вы должны искать Отправка файлов раздел.

Если вы хотите отправить файлы размером 20-50 МБ, вы должны загрузить и повторно загрузить их на сервер бота Telegram API.
Вы можете сослаться на этот простой код

Другие решения

Вы можете установить pwrtelegram на вашем сервере. Затем просто переключите URL API, и вы сможете загрузить до 1,5 ГБ файлов с вашим ботом. Это единственный возможный путь. Проверьте ссылку для получения дополнительной информации.

Вас также не могу пройти в любом случайном file_id , так как Telegram его не отправит. Вы можете передать только file_id, который был загружен вашим ботом ранее. Чтобы обойти ограничение, используйте метод, описанный выше. Это работает очень хорошо.

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

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

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

Вам не нужно делать fileID.

Все, что вам нужно, это отправить файл в бот и позволить боту выяснить,
fileID и сохраните его где-нибудь для будущих передач.

web-answers.ru

Bot API: часто задаваемые вопросы

Если вы незнакомы с ботами в Telegram, рекомендуется сначала прочитать ознакомительную статью.
Также, возможно, вас заинтересует описание Bot API.

Общие вопросы
Получение обновлений
Обработка фото и видео
  • Скачивание файлов
  • Загрузка больших файлов
  • Каков срок жизни file_ > Общие вопросы

Создание бота для Telegram крайне простое, однако, вам понадобится кое-какой опыт в программировании. Для работы вашего бота вам необходимо осуществить первоначальную настройку через робота @BotFather, а затем подключить его к вашему серверу через API.

Еще по теме:   Как узнать номер человека в Телеграм?

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

Вот два бота-образца, написанных на PHP:

  • Hello Bot: демонстрация основных возможностей Bot API.
  • Simple Poll bot: более сложный бот, поддерживающий оба способа получения обновлений (long-polling и вебхуки).

Многие разработчики создают своих ботов с открытым исходным кодом.
Мы собираем их на специальной странице »

API ботов — весьма молодой проект. Есть ещё масса возможностей, которые уже рассматриваются к реализации. Пока что администрация Telegram наблюдает за тем, как пользователи используют своих ботов, чтобы понять, в каком направлении необходимо развивать платформу.

Если у вас есть мысли по этому поводу, вы можете высказать их пользователю @BotSupport (на английском).

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

  • Сообщение было ответом боту или нажатием на его клавиатуру;
  • В сообщении есть @упоминание бота по его имени пользователя;
  • В сообщении содержится общая команда (напр., /start ) или команда, предназначающаяся вашему боту (напр., /start@YourBot );
  • Сообщение является служебным (о смене названия группы, выходе кого-либо из чата, и т. д.).

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

  • Сообщений от других ботов;
  • Команд для других ботов (напр., /start@NotYourBot );
  • Ответов на сообщения от других ботов за исключением случаев, когда в сообщении содержится @упоминание вашего бота.

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

На текущий момент доступно два способа. Вы можете использовать либо long polling, либо вебхуки. Обратите внимание: если вы используете вебхуки, метод getUpdates работать не будет.

Принципиальное отличие: при long polling вашему приложению самому нужно запрашивать обновления у API, а используя вебхуки — сервера Telegram будут отправлять на ваш сервер каждое обновление с помощью HTTPS POST-запроса.

Вебхуки могут работать только через HTTPS, допустимо использование самозаверенного сертификата. Доступные порты: 443, 80, 88, 8443.

В «боевых» условиях рекомендуется использовать вебхуки из-за большей надёжности.

Метод getUpdates выдаёт 100 последних неподтверждённых обновлений. Чтобы подтвердить обновление, используйте параметр offset при вызове getUpdates вот так:

Все обновления с update_id меньшим или равным offset будут отмечены как подтверждённые и не будут больше возвращаться сервером.

Если вы успешно задали адрес вебхука, но не получаете обновлений, убедитесь, что:

  • SSL-сертификат вашего вебхука валиден и корректен.
  • При использовании самозаверенного сертификата, вы передаёте его публичный ключ в поле certificate метода setWebhook. Необходимо загружать InputFile , отправка строки не сработает.
  • Ваш вебхук работает на одном из допустимых портов: 443, 80, 88 или 8443.

Ознакомьтесь с инструкцией по созданию сертификатов. Если после прочтения у вас остались вопросы, напишите пользователю @botsupport.

Для этого включите ваш токен в адрес вебхука, примерно так:

Так как никто посторонний не знает вашего токена, запросы на этот адрес смогут отсылать только сервера Telegram.

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

Всякий раз при получении обновления на вебхук, у вас есть два варианта:

1. Отправить POST-запрос к https://api.telegram.org/bot /МЕТОД

2. Ответить напрямую, указав метод в виде JSON в HTTP-ответе:

Для этого используйте метод getFile .

Этот метод работает только для файлов объёмом до 20 МБ.

На текущий момент боты могут отправлять файлы объёмом до 50 МБ, так что крупные файлы отправить не получится. Возможно, это ограничение будет снято в будущем.

file_id у отправленных вашим ботом файлов будут удалены после отправления нескольких тысяч файлов.

Для принятых файлов file_id можно считать вечным и неизменным.

При работе с отдельным чатом, избегайте отправки более 1 сообщения в секунду. Конечно, допустимы небольшие пики, но со временем вы начнёте получать ошибку 429.

При рассылке уведомлений нескольким пользователям, API не позволит отправлять более 30 сообщений в секунду. Для преодоления этого лимита вам необходимо разбить отправку на части с большим интервалом между собой (около 8-12 часов).

При работе с группой ограничение установлено на 20 сообщений в минуту.

К сожалению, пока сделать это встроенными методами нельзя. Возможно, в будущем будут добавлены пару строк для управления подписчиками.

Чтобы максимально эффективно рассылать сообщения, вам необходимо разбивать отправку на несколько частей с интервалом в 8-12 часов. Также недопустимо отправление более 30 сообщений разным пользователям в секунду — иначе вы будете получать ошибку 429.

НЕОФИЦИАЛЬНЫЙ сайт про Telegram на русском.

Здесь собраны приложения на базе MTProto, переведена некоторая документация с официального сайта, а также работает Webogram.

tlgrm.ru

Бот Телеграм на PHP

Примеры как зарегистрировать бота в Telegram, описание и взаимодействие с основными методами API. Документация на core.telegram.org и tlgrm.ru (неофициальный, на русском).

  • Все запросы к API должны осуществляться по HTTPS, подойдет бесплатный сертификат «Let’s Encrypt».
  • В связи с блокировкой Telegram в РФ, возможно придется использовать прокси (в зависимости от нахождения серверов хостинга).

Регистрация бота

Для регистрации нового бота нужно написать «папе ботов» @BotFather команду /newbot

Следующим сообщением отправляем название для бота, обязательно на конце имени должно быть слово «bot» или «_bot». Ответным сообщением получим токен:

Тут же можно настроить описание и аватарку:

/setname имя
/setdescription краткое описание
/setabouttext описание бота
/setuserpic юзерпик

Далее нужно поставить «Webhook» чтобы все сообщения из Telegram приходили на PHP скрипт. Для этого нужно пройти по ссылке в которой подставлены полученный токен и адрес скрипта.

https://api.telegram.org/bot /setWebhook?url= https://snipp.ru/bot.php

При смене токена, установку вебхука нужно повторить.

Входящие сообщения

Сообщения приходят POST-запросом, с типом application/json. Получить его в PHP можно следующим образом:

Чтобы посмотреть входящие данные, их придется дампить в файл:

Текстовое сообщение

Запрос от Телеграм:

Получим текст сообщения:

Фотографии

При отправки фото боту, на скрипт приходит массив превьюшек, последним элементом будет оригинальное фото. Максимальный размер файла 20МБ.

Запрос от Телеграм:

Чтобы скачать файл нужно отправить POST или GET запрос на получение c параметром file_id изображения по URL:

В ответ придет информация о файле:

Далее его можно скачать по ссылке:

В PHP сохранение файла на сервер можно реализовать следующим образом:

Запрос от Телеграм:

Скачивание файлов происходит по такой же схеме как у фотографий.

snipp.ru

Пишем бота для Telegram — принимаем файлы

Для скачивания файлов используем метод getFile . Этот метод работает только для файлов объёмом до 20 МБ.

Принимаем фотографии:

Принимаем видео:

Принимаем аудио:

Принимаем документы:

Принимаем стикеры:

Полный код:

62 комментария

Огромное спасибо! Наконец-то появились работающие образцы кода

Добрый вечер! Если я правильно понимаю загруженные в telergram фото хранятся на сервере telegram? Если так то как получить доступ к ним (url) ? Чтобы можно было расшарить их для использования сторонними приложениями?

Привет, файлы доступны по ссылке вида
https://api.telegram.org/file/bot /photo/file_12717.jpg
ну и естественно категорически нельзя «светить» эту ссылку )

Еще по теме:   Как принять изображение Telegram bot API?

Доброе утро!
Наверное совсем глупый вопрос)
имя загруженного в телеграм файла я получаю согласно Вашему коду из
file_info = bot.get_file(message.photo[len(message.photo)-1].file_id)
как правильно записать последние символы ‘/’ в строке
https://api.telegram.org/file/bot/photo/file_12717.jpg ?
Что бы я со строками не делал у меня получается все что угодно, но не это
[Errno 2] No such file or directory: ‘https://api.telegram.org/file/bot/photo\/file_93.jpg’
[Errno 2] No such file or directory: ‘https://api.telegram.org/file/bot/photo/file_91.jpg’
[Errno 2] No such file or directory: ‘https://api.telegram.org/file/bot/photofile_91.jpg’
[Errno 2] No such file or directory: ‘https://api.telegram.org/file/bot/photo\file_91.jpg’

Здесь 211…22s — мой токен. Правильно?

Например код, который выведет в консоль ссылку на принятый файл (фото):
file_info = bot.get_file(message.photo[len(message.photo)-1].file_id)
print ‘https://api.telegram.org/file/bot<0>/<1>’.format(API_TOKEN, file_info.file_path)

Спасибо! Так все работает)

Добрый день! Еще вопрос) Полностью скопировал Ваш код. После загрузки видео (mp4, 1,6 Mb) программа ни как реагирует. Даже «видео загружено» не пишет. Подскажите, пожалуйста, что сделать? Пробовал загружать gif — аналогично.

jeckill.ru

Как отправлять большие файлы с URL-адреса на телеграмму?

У меня есть файлы большого размера (в форматах MP4 и Zip ), и я хочу отправить их в мой чат боттом Telegram, я использовал следующий код:

Но он просто может отправлять файлы с небольшими размерами, менее 50 МБ! Но я знаю, что нет ограничений на размер файлов для документов, которые отправляются file_id . Вы можете увидеть эту страницу
Теперь, как я могу сделать file_id для моих файлов? Мои файлы загружаются на моем сервере, и я использую PHP.

API Telegram bot может отправлять файлы менее чем на 20 МБ с помощью url param, вы должны искать Отправка файлов.

Если вы хотите отправить файлы размером 20-50 МБ, вы должны загрузить и повторно загрузить его на сервер API Telegram bot.
Вы можете сослаться на этот простой код

Вы можете установить pwrtelegram на свой сервер. Затем просто переключите URL-адрес API, и вы сможете загрузить до 1,5 ГБ файлов с помощью своего бота. Это единственный возможный путь. Подробнее см. Ссылку.

Кроме того, вы не можете проходить в любом случайном file_id , поскольку Telegram не отправит его. Вы можете передать файл file_id, который ранее был загружен вашим ботом. Чтобы обойти предел, используйте метод выше. Он работает очень хорошо.

Во-первых, вы должны отправить свой файл своему боту, а затем получить файл.

После этого вы можете просто использовать fileID для отправки файлов, и таким образом загрузка будет на сервере Telegram, а не на вашем. Конечно, вы можете отправлять файлы с вашего собственного сервера, но этот метод приведет к снижению скорости для вашего бота.

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

Вам не нужно делать fileID.

Все, что вам нужно, это отправить файл боту и дать боту узнать fileID и сохранить его где-нибудь в будущих передачах.

qaru.site

Telegram BOT Api: как отправить фотографию с помощью PHP?

Команде sendPhoto требуется photo аргумента, определенная как InputFile or String .

API doc сообщает:

Поэтому я пробовал этот метод

Кудри выполнены, но Telegram ответит мне на это:

Я также попытался заменить @/path. на file_get_contents , но в этом случае Telegram дал мне пустой ответ (и curl_error пуст!).

Каким способом отправить фотографию в телеграмму с помощью php + curl?

Это мое рабочее решение, но для него требуется PHP 5.5:

Этот код помогает мне многого, что я получаю с сайта php.net здесь

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

Basic Try: теперь просто используйте этот код, отправив имя фотографии с идентификатором пути и чата, вот как это сделать:

Для отправки png или других методов измените функцию curl_custom в соответствии с вашими потребностями.

Я много раз искал в Интернете, но не нашел ответа. Но, ваш вопрос решил мою проблему … Я только что изменил свой код и ответил на него для меня … Я изменил код на это:

Вы можете использовать либо сохраненное изображение, либо URL.

Это плохая идея, но вы можете использовать некоторые такие:

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

Кроме того, вы можете увидеть примеры всех других методов телеграммы бота api из следующего репозитория, который я в настоящее время разрабатываю Telegram Bot Client в PHP

ruphp.com

Пишем бота для Telegram на php

Вступление

Сегодня telegram является активно развивающейся платформой, а потому актуально будет осветить для широкой аудитории тему создания собственных ботов для этого мессенджера. Хотя-бы поверхностно. Для полноценного освящения этой темы я планирую написать две статьи, первая для php вторая для c#. Почему две? Дело в том, что правила телеграма(защищенность) задают для ботов очень жесткие правила размещения. В частности бот должен находиться на https домене. Сегодня мы будем рассматривать именно такой вариант бота, как наиболее очевидный. К сожалению, разрабатывать бота вам придется прямиком на сервере, то есть я предполагаю что у читателя уже есть свой домен и собственно уже налажен ftp доступ к этому домену. На дэнвере php боты работать не будут. Ну ладно не буду врать — можно сделать чтобы оно и на дэнвере работало, но давайте не будем писать такие велосипеды в этой статье и подождем до следующей, в которой я как раз опишу данный способ на примере с c#(а нахрена нам php с дэнвером когда есть такой замечательный инструмент). В этой статье мы общаемся с telegram api через webhook, это для особо прошаренных. Читающий статью человек должен уметь пользоваться: ftp, ssh(консоль сервера).

Шаг первый. Домен и https

Начнем пожалуй с домена, на котором будет размещаться наш будущий бот. Я беру свой старый домен — вебача. Как вы видите там нет https и я не покупал для этого домена https сертификат. Но тем не менее сертификат нужен иначе бота там не разместить. К счастью, есть cloudflare, который, в числе прочих преимуществ, дает нам возможность использовать эмулированный https. Переносим наш домен туда, это делается очень быстро бесплатно и автоматически. Зарегистрируйтесь, нажмите addsite поменяйте ns адреса у домена и все будет установлено. Если этого краткого описания вам не достаточно — можете нагуглить в сети мануал по подключению cloudflare, моя статья этому не посвящена.

И так мы подключили домен. Теперь надо перейти на панель своего сайта:

После чего выбрать вкладку Crypto и пункт SSL установить в flexible.

Что делает этот пункт? Он эмулирует безопасное соединение до вашего сайта.
Проверяем — https://2webach.ru/

Как вы видите — все работает. У вас должно быть абсолютно так-же, без этого, бота вы запустить не сможете! Будет выдаваться ошибка «HTTP Version Not Supported», так что если вы пришли на эту страницу в поисках решения — перечитайте данный пункт внимательно и повторите все то я описал.

Шаг второй. Знакомство с Botfather.

Botfather — это такой бот, через которого регистрируют все остальные боты. Без него нам никак не обойтись, поэтому давайте откроем telegram и перейдем по ссылке — BotFather

Там все крайне просто, вбиваем /help и смотрим на список доступных команд:

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

собственно сейчас нас интересует команда /newbot, пишем ее и создаем бота указывая его название. В данном случае я назову своего бота — Рев.ком.стих и будет он у нас выдавать стихи о Маяковского и Есенина (когда я его доделаю, однако весь процесс в эту статью я включать не буду).

Нам выдадут токен, на скриншоте он замазан в целях…, ну вы сами понимаете. Этот токен нам и нужен, сохраните его куда-нибудь в текстовый файл, он нам еще пригодится.

Далее можно задать оформление для бота. Например картинку — логотип. Для этого используем команду /setuserpic после чего загружаем картинку. Так-же задаются описание бота и прочие вещи до которых вы допрете и без моего участия.

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

Теперь надо сделать боту доступ к сообщениям пользователей, то есть выключить нахер приватный режим. Если мы планируем добавлять бота в группы или конфы, назовите как хотите, в любом случае приватность нам нахер не нужна. Чтобы ее выключить вбиваем команду /setprivacy после чего выбираем пункт — disabled. Обязательно выполните этот шаг, если вы хотите сделать действительно интерактивного бота.

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

Шаг третий. Среда для разработки.

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

Но сначала давайте ее установим. Для этого будем использовать composer. Короче говоря будем делать все по «правилам», если этот термин вообще применим к php. Хороший язык, гибкий, не вгоняет в рамки, я знаете ли люблю его за эту вот гибкость. Но любителям «сапога в жопе» конечно всегда больше подходят ruby или какой-нибудь go в котором даже нормально библиотеку в своей папке не разместить, только в gopath. Однако так уж вышло, что данную библиотеку руками ставить будет геморойнее, чем через composer, я тут непричем, просто экономия времени. Для начала нам понадобится ssh соединение с вашим сервером. Для таких дел я предпочитаю ZOC terminal т.к. работаю из под windows. Скачать этот продукт можно на торрентах, сами найдете короче. Далее запускаем ваш терминал и заходим на сервер, после чего переходим к директории нашего домена(команда cd).

Я не хочу размешать наш проект в корне директории, потому что там может быть например… форум. А вот в подпапке — запросто. Так что давайте эту самую подпапку и создадим через команду mkdir

В данном случае подпапка называется ‘revcom_bot’.

Теперь в эту папку надо засунуть composer, собственно делается это тремя командами:

Просто вставляете их в ssh консоль по очереди и все.

Отлично, если вы справились с этой задачей, то далее нам следует установить компонент telegram-bot/api, для этого просто пишем в консоли:

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

Отлично. Вот теперь можно начинать писать код.

Шаг четвертый. Кодинг

Минимальная версия PHP

Для использования кода, который я демонстрирую, у вас должен стоять минимум php-5.6

Собственно создаем в директории файл index.php в котором мы и будем писать код нашего проекта. Внимание: кодировка файла — utf-8 без bom! Вообще описание кода по шагам это не моя сильная сторона, поэтому я просто буду вставлять код с комментариями в статью, а вы читайте и повторяйте.

После того как переменная бота создана мы можем обращаться к api, но сначала нам надо зарегистрировать webhook.
Что такое webhook? Это такой механизм по которому выполняется связка бота с telegram’ом. Когда пользователь в телеграме вводит команду ее надо как-то передать в на сервер и получить ответ. Webhook как раз это и делает — указывает телеграму куда передавать команду пользователя. Но так как изначально телеграм НЕ ЗНАЕТ где мы разместили нашего бота, то надо ему об этом обязательно сообщить.
Для этого у нас есть команда: $bot->setWebhook

Отлично, можно запустить наш бот и проверить, перейдя к нему из браузера. Если в папке бота создался файл registered.trigger значит телеграм теперь знает о том, где находится наш бот.

Приготовления пройдены, самое время зарегистрировать первые команды для бота. В спецификации телеграма сказано, что каждый бот должен отвечать на две обязательные команды. Первая команда — /start и вторая — /help, создадим их.

Отлично! А теперь давайте разберемся немного с API нашей библиотеки.

Команды задаются блоком:

Где $message — объект Message, все его поля можно посмотреть тут — Types/Message.php

Отправка сообщения выполняется командой:

Отправка картинок

Отправка картинок пользователю выполняется через передачу телеграму ссылки на эту картинку. Телеграм САМ скачивает изображение и отдает пользователю, нам ничего качать не надо! В качестве демонстрации я загружу сейчас на свой блог изображение и отошлю его пользователю на команду /getpic.

Как вы видите — все работает.

Отправка документа

Документы, в отличие от картинок, на сервер телеграма надо оправлять в POST формате, но не пугайтесь, библиотека сделает все за вас.
Для начала файл документа нам надо загрузить в папку с ботом:

После чего добавить такую команду:

Точно так-же можно передать войсы:

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

Теперь осталось только добавить чуточку интерактивности, например заставить бота в чате постить что-нибудь с определенным шансом.

Дабы сделать это у API есть очень годная команда .on() ее мы и будем использовать в самой простой из форм.

Этот метод так-же позволит вам прикрутить к телеграму, например, нейросеть для анализа сообщений или алгоритм Маркова, чтобы развлекать публику генерацией случайного бреда.

Задаем список команд

Теперь команды работают а значит настало время сообщить о том что они у нас есть в Botfather’а. Идем туда и вбиваем /setcommands

И к стати если вы где-то опечатались можете заново вбить /setcommands и переопределить команды.

Смотрим добавились команды на страницу бота или нет:

Заключение

Думаю этого будет достаточно. Статья получилась полной, я разве что не осветил методы отправки аудио файлов, но думаю вы и сами сможете на них посмотреть без моего в этом участия — тут, я ведь разобрался, хоть и не нашел ни документации нормальной ни освещения данных вопросов в интернете. Зато теперь в этой статье я рассказал вам все что сам знаю о создании ботов к telegram на php. Однако, как я говорил выше эта статья всего лишь часть всех возможностей. Советую вам прочитать вторую статью уже про C# и работу с telegram api БЕЗ webhook, https и прочих геморроев. Проще говоря хостинг не понадобится.

Надеюсь, дорогой читатель, что я не зря писал эту статью. Ах да.

Скачать исходники

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

aftamat4ik.ru

Поделиться:
Нет комментариев

Добавить комментарий

Ваш e-mail не будет опубликован. Все поля обязательны для заполнения.

×
Рекомендуем посмотреть
Adblock
detector