С помощью декораторов можно отловить, например, определённую команду, посылаемую боту. Например, если использовать такой декоратор:
то, при отправке мной команды ‘/abc’ боту из чата, он выполнит всё, что указанно в функции abc(). Вопрос такой, как без помощи чата (не используя приложение Telegram на телефоне/компьютере) отправить боту ту же команду ‘/abc’, следовательно, что бы выполнился код функции abc()? Используя, например, requests и т.д. для обращения к API Telegram
Отслеживать
13.5k 12 12 золотых знаков 43 43 серебряных знака 72 72 бронзовых знака
задан 31 янв 2018 в 2:46
470 1 1 золотой знак 6 6 серебряных знаков 18 18 бронзовых знаков
пример от бота в чат: просто requests.post() вызовите
31 янв 2018 в 8:14
. вы, наверное, не поняли суть вопроса.
31 янв 2018 в 11:59
вы наверное комментарий не поняли 😉
13 фев 2018 в 8:09
1 ответ 1
Сортировка: Сброс на вариант по умолчанию
Схема работы бота — событийная, не используя телефон или другие клиенты можно только заставлять его отправлять сообщения и выполнять другие действия, перечень которых определён Bot API. Вклинить свой код туда вы не сможете. Свой код вы можете выполнять только ловя обновления (Updates) от бота (любые).
Отправка сообщений в телеграм с помощью бота Telecobra
UPD Чуть подробнее о том же самом
У бота, как программы, только одна точка входа — получение обновлений от серверов телеграма. То есть, если не придёт обновление (команда боту, например) — ваша логика его обработки не будет выполнена, ваш код не будет выполняться. Обновления можно слать только клиентом — официальными клиентами мессенджера (только через интерфейс), либо собственным клиентом на базе Telegram API (через интерфейс либо программно).
Обращение к боту через Bot API позволяет выполнять только предопределённые действия, такие как sendMessage, sendInvoice и тп. Никакой свой middleware выполнить не получится.
Соответственно, если хотите, чтобы выполнялся какой-то конкретный код по какой-то конкретной команде — эту команду надо послать через одного из клиентов, не имеет значения какого. Либо, как вариант, использовать выполнение какого-то куска кода по расписанию.
Не по теме вопроса непосредственно, но может быть полезно — Пример отправки сообщения от бота напрямую http-запросом.
Источник: ru.stackoverflow.com
Создание Telegram бота на PHP #2: создание первого бота для Telegram
Во втором уроке я вам покажу как создать бота для Telegram и мы попробуем отправить несколько сообщений в чат.
Для того чтобы создать бота, нам необходимо сделать несколько последовательных действий.
Отправка сообщений в Telegram при помощи python в 2 строки кода
1) Вам нужно авторизоваться в Telegram аккаунте
3) Отправить сообщение боту — /newbot
4) После отправки запроса , нужно указать имя бота
5) После этого дублировать название бота, но только суффиксом _bot
7) Теперь нам нужно создать чат в который мы добавим нашего бота
8) Далее нам нужно получить id нашего бота. Для этого нужно перейти по следующей ссылке, где вместо символов X нужно подставить ваш токен:
https://api.telegram.org/botXXXXXXXXXXXXXXXXXX/getUpdates
Не закрывайте эту страницу, после 9 пункта, её нужно будет обновить.
9) Теперь вам необходимо отправить команду /join в чат для активации бота. После отправки команды, вам нужно обновить страницу, чтобы сделать повторный запрос.
Здесь вам нужно записать следующий фрагмент кода — id вашего бота.
Вам нужен id со знаком минус.
«my_chat_member»:
Пример отправки сообщения боту в Telegram
Теперь давайте попробуем отправить сообщение нашему боту методом GET запроса.
Здесь мы создаём переменные в которые заносим токен, id чата и сообщение. Сообщение мы прогоняем через функцию urlencode() для формирования специальный кодировки, для создания запросов.
А в конце мы используем функцию file_get_contents() для отправки запроса.
$token = «5340791844:AAEXXD786InvQrlWHRXykV91USOQSevrPVU»; $chat_id = -594377170; $textMessage = «Тестовое сообщение»; $textMessage = urlencode($textMessage); $urlQuery = «https://api.telegram.org/bot». $token .»/sendMessage?chat_id=». $chat_id .» rel=»noopener noreferrer nofollow»>https://prog-time.ru/parsing-php-biblioteka-curl/
Давайте посмотрим код для запросов, с использованием Curl.
$token = «5340791844:AAEXXDduvInvQrlykV91USOQSevrPVU»; $getQuery = array( «chat_id» => 1424625511, «text» => «Новое сообщение из формы», «parse_mode» => «html», ); $ch = curl_init(«https://api.telegram.org/bot». $token .»/sendMessage?» . http_build_query($getQuery)); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($ch, CURLOPT_HEADER, false); $resultQuery = curl_exec($ch); curl_close($ch); echo $resultQuery;
Теперь мы получили более удобочитаемый код, благодаря записи параметров в массив $getQuery. При такой структуре, вам не нужно переписывать URL запроса, изменения вносятся только в массив $getQuery, а функция http_build_query() сама добавит строку параметров в URL запроса.
В дальнейших уроках, мы будем пользоваться библиотекой Curl, но вы должны понимать что многие запросы можно отправлять через функцию file_get_contents. Нужно просто составить правильный URL.
У нас получилось отправить сообщение в Telegram с помощью нашего бота. Теперь давайте посмотрим на ответы которые отправляет нам Telegram.
Разбор ответа от Telegram.
При создании запроса к боту, Telegram всегда отправляет ответ, который вы можете записать в переменную и вывести на экран.
Если вы допустили ошибку, то вам придёт сообщение с параметрами, в которых указан код ошибки с описанием.
В зависимости от метода работы, вам будут возвращаться разные ответы. В прошлом уроке мы с вами рассматривали документацию, где я рассказывал о типах данных которые вам могут прийти в ответе.
Сейчас давайте попробуем сделать запрос на отправку сообщения и разобрать полученный ответ.
< «ok»: true, «result»: < «message_id»: 12, «from»: < «id»: 5340791844, «is_bot»: true, «first_name»: «test_prog_time», «username»: «test_prog_time_bot» >, «chat»: < «id»: 1424646511, «first_name»: «Илья», «last_name»: «Лящук», «username»: «iliyalyachuk», «type»: «private» >, «date»: 1658907913, «text»: «Новое сообщение из формы» > >
В ответе мы видим следующее:
- Параметр «ok» — описывает успешность отправки запроса
- «result» — возвращает массив с данными ответа, в которых:
- «message_id» — id созданного сообщения
- «from» — кто отправил сообщение
- «chat» — данные о чате в который попало сообщение
- «date» — дата создания сообщения
- «text» — текст сообщения
- Все боты для Telegram создаются через BotFather
- Для отправки запросов вы можете использовать функцию file_get_contents или воспользоваться библиотекой Curl
- Каждый запрос в Telegram возвращает ответ с описание результата запроса.
Источник: habr.com
Создание Telegram бота на PHP #2: создание первого бота для Telegram
Во втором уроке я вам покажу как создать бота для Telegram и мы с вами попробуем отправить сообщения в чат в Telegram.
3) Отправить сообщение боту — /newbot
4) После отправки запроса , нужно указать имя бота (на английском языке)
5) После этого дублировать название бота, но только суффиксом _bot
7) Теперь нам нужно создать чат в который мы добавим нашего бота
8) Далее нам нужно получить id нашего бота. Для этого нужно перейти по следующей ссылке, где за место символов X нужно подставить ваш токен:
https://api.telegram.org/botXXXXXXXXXXXXXXXXXX/getUpdates
Не закрывайте эту страницу, после 9 пункта, её нужно будет обновить.
9) Теперь вам необходимо отправить команду /join в чат для активации бота. После отправки команды, вам нужно обновить страницу, чтобы сделать повторный запрос.
Здесь вам нужно записать следующий фрагмент кода — id вашего бота.
Вам нужен id со знаком минус.
«my_chat_member»:-594377170, .
Пример отправки сообщения боту в Telegram
Теперь давайте попробуем отправить сообщение нашему боту методом GET запроса.
Здесь мы создаём переменные в которые заносим токен, id чата и сообщение. Сообщение мы прогоняем через функцию urlencode() для формирования специальный кодировки, для создания запросов.
А в конце мы используем функцию file_get_contents() для отправки запроса.
$token = «5340791844:AAEXXD786InvQrlWHRXykV91USOQSevrPVU»; $chat_id = -594377170; $textMessage = «Тестовое сообщение»; $textMessage = urlencode($textMessage); $urlQuery = «https://api.telegram.org/bot». $token .»/sendMessage?chat_id=». $chat_id .» target=»_blank» rel=»noreferrer noopener»>https://prog-time.ru/parsing-php-biblioteka-curl/
Давайте посмотрим код для запросов, с использованием Curl.
$token = «5340791844:AAEXXDduvInvQrlykV91USOQSevrPVU»; $getQuery = array( «chat_id» => 1424625511, «text» => «Новое сообщение из формы», «parse_mode» => «html», ); $ch = curl_init(«https://api.telegram.org/bot». $token .»/sendMessage?» . http_build_query($getQuery)); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($ch, CURLOPT_HEADER, false); $resultQuery = curl_exec($ch); curl_close($ch); echo $resultQuery;
Теперь мы получили более удобочитаемый код, благодаря записи параметров в массив $getQuery. При такой структуре, вам не нужно переписывать URL запроса, изменения вносятся только в массив $getQuery, а функция http_build_query() сама добавит строку параметров в URL запроса.
В дальнейших уроках, мы будем пользоваться библиотекой Curl, но вы должны понимать что многие запросы можно отправлять через функцию file_get_contents. Нужно просто составить правильный URL.
У нас получилось отправить сообщение в Telegram с помощью нашего бота. Теперь давайте посмотрим на ответы которые отправляет нам Telegram.
Разбор ответа от Telegram.
При создании запроса к боту, Telegram всегда отправляет ответ, который вы можете записать в переменную и вывести на экран.
Если вы допустили ошибку, то вам придёт сообщение с параметрами, в которых указан код ошибки с описанием.
В зависимости от метода работы, вам будут возвращаться разные ответы. В прошлом уроке мы с вами рассматривали документацию, где я рассказывал о типах данных которые вам могут прийти в ответе.
Сейчас давайте попробуем сделать запрос на отправку сообщения и разобрать полученный ответ.
< «ok»: true, «result»: < «message_id»: 12, «from»: < «id»: 5340791844, «is_bot»: true, «first_name»: «test_prog_time», «username»: «test_prog_time_bot» >, «chat»: < «id»: 1424646511, «first_name»: «Илья», «last_name»: «Лящук», «username»: «iliyalyachuk», «type»: «private» >, «date»: 1658907913, «text»: «Новое сообщение из формы» > >
В ответе мы видим следующее:
- Параметр «ok» — описывает успешность отправки запроса
- «result» — возвращает массив с данными ответа, в которых:
- «message_id» — id созданного сообщения
- «from» — кто отправил сообщение
- «chat» — данные о чате в который попало сообщение
- «date» — дата создания сообщения
- «text» — текст сообщения
- Все боты для Telegram создаются через BotFather
- Для отправки запросов вы можете использовать функцию file_get_contents или воспользоваться библиотекой Curl
- Каждый запрос в Telegram возвращает ответ с описание результата запроса.
В следующих урокам мы будем создавать более сложные запросы и по окончанию курса, мы создадим полноценный класс для создания запросов и обработки ответов.
На этом всё!
Больше интересных статей в нашей группе — https://vk.com/progtime
Вы так же можете разместить свой вопрос на нашем форуме, где другие программисты смогут вам помочь в решение вашей задачи — https://vk.com/prog_time
Так же прокачивайте свои навыки на нашем канале — https://www.youtube.com/c/ProgTime
Наши планы
- Написание материала для курса по разработке ботов на Telegram
- Разработка универсального парсера на PHP
Поддержите мой сайт!
Каждый переведённый донат, мотивирует на создание новых записей и уроков на YouTube
Источник: prog-time.ru