Editmessagereplymarkup telegram bot пример php

Saved searches

Use saved searches to filter your results more quickly

You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session.

Telegram bot framework written in PHP

License

radyakaze/phptelebot

This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?

Sign In Required

Please sign in to use Codespaces.

Launching GitHub Desktop

If nothing happens, download GitHub Desktop and try again.

Launching GitHub Desktop

If nothing happens, download GitHub Desktop and try again.

Launching Xcode

If nothing happens, download Xcode and try again.

Читайте также:  Кавычки внутри кавычек python

Launching Visual Studio Code

Your codespace will open once ready.

There was a problem preparing your codespace, please try again.

Latest commit

Git stats

Files

Failed to load latest commit information.

README.md

Telegram bot framework written in PHP

To install PHPTelebot with Composer, just add the following to your composer.json file:

< "require": < "radyakaze/phptelebot": "*" > >

or by running the following command:

composer require radyakaze/phptelebot

Composer installs autoloader at ./vendor/autoloader.php . to include the library in your script, add:

require_once 'vendor/autoload.php';

Download the PHP library from Github, then include PHPTelebot.php in your script:

require_once '/path/to/phptelebot/src/PHPTelebot.php';
 require_once './src/PHPTelebot.php'; $bot = new PHPTelebot('TOKEN', 'BOT_USERNAME'); // Bot username is optional, its required for handle command that contain username (/command@username) like on a group. // Simple command $bot->cmd('*', 'Hi, human! I am a bot.'); // Simple echo command $bot->cmd('/echo|/say', function ($text) < if ($text == '') < $text = 'Command usage: /echo [text] or /say [text]'; > return Bot::sendMessage($text); >); // Simple whoami command $bot->cmd('/whoami|!whoami', function () < // Get message properties $message = Bot::message(); $name = $message['from']['first_name']; $userId = $message['from']['id']; $text = 'You are '.$name.' and your ID is '.$userId.''; $options = [ 'parse_mode' => 'html', 'reply' => true ]; return Bot::sendMessage($text, $options); >); $bot->run();

You can also see my other sample.

  • If function parameters is more than one, PHPTelebot will split text by space.
  • If you don’t set chat_id on options bot will send message to current chat.
  • If you add option reply => true, bot will reply current message (Only work if you don’t set custom chat_id and reply_to_mesage_id).

Use $bot->cmd(, ) to handle command.

// simple answer $bot->cmd('*', 'I am a bot'); // catch multiple commands $bot->cmd('/start|/help', function () < // Do something here. >); // call a function name function googleSearch($search) < // Do something here. > $bot->cmd('/google', 'googleSearch');

Use * to catch any command.

This code will send a photo to users when type command /upload.

// Simple photo upload $bot->cmd('/upload', function () < $file = '/path/to/photo.png'; // File path, file id, or url. return Bot::sendPhoto($file); >);

Use $bot->on(, ) to handle all possible PHPTelebot events.

To handle inline message, just add:

$bot->on('inline', function($text) < $results[] = [ 'type' => 'article', 'id' => 'unique_id1', 'title' => $text, 'message_text' => 'Lorem ipsum dolor sit amet', ]; $options = [ 'cache_time' => 3600, ]; return Bot::answerInlineQuery($results, $options); >);

Also, you can catch multiple events:

$bot->on('sticker|photo|document', function() < // Do something here. >);
  • * — any type of message
  • text – text message
  • audio – audio file
  • voice – voice message
  • document – document file (any kind)
  • photo – photo
  • sticker – sticker
  • video – video file
  • contact – contact data
  • location – location data
  • venue – venue data
  • edited – edited message
  • pinned_message – message was pinned
  • new_chat_member – new member was added
  • left_chat_member – member was removed
  • new_chat_title – new chat title
  • new_chat_photo – new chat photo
  • delete_chat_photo – chat photo was deleted
  • group_chat_created – group has been created
  • channel_chat_created – channel has been created
  • supergroup_chat_created – supergroup has been created
  • migrate_to_chat_id – group has been migrated to a supergroup
  • migrate_from_chat_id – supergroup has been migrated from a group
  • inline — inline message
  • callback — callback message
  • game — game
  • channel — channel
  • edited_channel — edited channel post

Command with custom regex (advanced)

Create a command: /regex string number

$bot->regex('/^\/regex (.*) (8)$/i', function($matches) < // Do something here. >);

Источник

Простейший бот для Телеграма на PHP

Для написания простейшего бота для телеграмма будем использовать схему работы через webhook, те отдадим телеге ссылку, по которой она будет стучаться, когда происходит какое-нибудь событие.

Всего у нас будет 2 файла: webhook.php, который содержит логику работы, и tg.class.php, который содержит методы для отправки сообщений и ответа на запросы.

Для того, что бы телеграм знаю куда стучаться при наступлении события сообщим ему о нашем обработчике открыв в браузере страницу с адресом, обратите внимание, что обязательно нужен SSL: https://api.telegram.org/botAPI_TOKEN_TG/setWebhook?url=https://YOUR_DOMAIN/webhook.php

webhook.php

sendChatAction($tg_id); $sms_rev=''; switch($message_text) < case '/start': $sms_rev = 'Здравствуйте, Вас приветсвует Простейший Бот Telegram! '; break; case '/help': $sms_rev = 'Я могу выполнить следующюю функцию: /rev - переворачиваею строку наоборот. '; break; case '/rev': $sms_rev = strrev($message_text); break; default: $sms_rev ='Команда не распознана'; break; >$tg->send($tg_id, $sms_rev, $rez_kb); exit('ok'); // говорим телеге, что все окей ?>

tg.class.php

token = $token; > public function send($id, $message, $kb) < $data = array( 'chat_id' =>$id, 'text' => $message, 'parse_mode' => 'HTML', 'disable_web_page_preview'=>true, 'reply_markup' => json_encode(array('inline_keyboard' => $kb)) ); $this->request('sendMessage', $data); > public function editMessageText($id, $m_id, $m_text, $kb='') < $data=array( 'chat_id' =>$id, 'message_id' => $m_id, 'parse_mode' => 'HTML', 'text' => $m_text ); if($kb) $data['reply_markup']=json_encode(array('inline_keyboard' => $kb)); $this->request('editMessageText', $data); > public function editMessageReplyMarkup($id, $m_id, $kb) < $data=array( 'chat_id' =>$id, 'message_id' => $m_id, 'reply_markup' => json_encode(array('inline_keyboard' => $kb)) ); $this->request('editMessageReplyMarkup', $data); > public function answerCallbackQuery($cb_id, $message) < $data = array( 'callback_query_id' =>$cb_id, 'text' => $message ); $this->request('answerCallbackQuery', $data); > public function sendChatAction($id,$action='typing') < $data = array( 'chat_id' =>$id, 'action' => $action ); $this->request('sendChatAction', $data); > public function request($method, $data = array()) < $curl = curl_init(); curl_setopt($curl, CURLOPT_URL, 'https://api.telegram.org/bot' . $this->token . '/' . $method); curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); curl_setopt($curl, CURLOPT_CUSTOMREQUEST, 'POST'); curl_setopt($curl, CURLOPT_POST, true); curl_setopt($curl, CURLOPT_POSTFIELDS, $data); $out = json_decode(curl_exec($curl), true); curl_close($curl); return $out; > >

Разберем отдельно по функциям

Конструктор

Все крайне просто, в конструкторе сохраняем во внутреннюю переменную Api ключ, который получили от BotFather бота телеграмма.

Функция отправки запроса в телегу

 public function request($method, $data = array()) < $curl = curl_init(); curl_setopt($curl, CURLOPT_URL, 'https://api.telegram.org/bot' . $this->token . '/' . $method); curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); curl_setopt($curl, CURLOPT_CUSTOMREQUEST, 'POST'); curl_setopt($curl, CURLOPT_POST, true); curl_setopt($curl, CURLOPT_POSTFIELDS, $data); $out = json_decode(curl_exec($curl), true); curl_close($curl); return $out; >

Отправляем запрос вида https://api.telegram.org/botAPI_KEY/ИМЯ_МЕТОДА по протоколу post через curl.

Функция отправки сообщения — sendMessage

public function send($id, $message, $kb) < $data = array( 'chat_id' =>$id, 'text' => $message, 'parse_mode' => 'HTML', 'disable_web_page_preview'=>true, 'reply_markup' => json_encode(array('inline_keyboard' => $kb)) ); $this->request('sendMessage', $data); > 

Получаем в параметрах ID диалога, сообщение и инлайн клавиатуру, если она нужна.

Функция редактирования текста сообщения — editMessageText

public function editMessageText($id, $m_id, $m_text, $kb='') < $data=array( 'chat_id' =>$id, 'message_id' => $m_id, 'parse_mode' => 'HTML', 'text' => $m_text ); if($kb) $data['reply_markup']=json_encode(array('inline_keyboard' => $kb)); $this->request('editMessageText', $data); >

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

Функция ответа на событие нажатия кнопки (обратного запроса) — answerCallbackQuery

public function answerCallbackQuery($cb_id, $message) < $data = array( 'callback_query_id' =>$cb_id, 'text' => $message ); $this->request('answerCallbackQuery', $data); > 

Получаем в параметрах ID обратного запроса и текст ответа.

Функция редактирования разметки/кнопок — editMessageReplyMarkup

public function editMessageReplyMarkup($id, $m_id, $kb) < $data=array( 'chat_id' =>$id, 'message_id' => $m_id, 'reply_markup' => json_encode(array('inline_keyboard' => $kb)) ); $this->request('editMessageReplyMarkup', $data); >

Получаем как параметр ID чата, ID сообщения, новую разметку/клавиатуру. Используем в паре с answerCallbackQuery, для ответа на запрос с заменой разметки.

Primary Sidebar

О нас

Мы занимаемся веб разработкой, автоматизацией бизнес-процессов и сопровождением информационных систем. Если есть вопросы, желание поговорить о Вашем проекте или интерес к сотрудничеству — пишите info@consultapp.ru

Полезные ссылки

Свежие записи

Источник

Editmessagereplymarkup telegram bot пример php

Поменять текст на кнопках, не присылая новый экран, можно с помощью запроса к Телеграм API методом editMessageReplyMarkup.

Для этого оформите в конструкторе экраны таким образом:

Рассмотрим более подробно:

1. Добавьте Кнопки. Все кнопки будут переводить на Запрос.

2. Оформите Запрос.

Метод — POST.

URL запроса:

https://api.telegram.org/bot123456789/editMessageReplyMarkup

Где вместо 123456789 — токен вашего бота.

Добавьте Тело запроса:

В Теле запроса в переменная text имеет значения «3» и «4».

Поэтому, когда пользователь нажмет на кнопку 1 или 2 на первоначальном экране, Запросом цифры на кнопках меняются на 3 и 4.

Значения в переменной «text» можно поменять на свои — на текст, который должен быть на кнопках после нажатия.

3. На том же экране, после Запроса, добавьте Перемотку с активным чек-боксом Остановить бота после перемотки до следующего сообщения от пользователя. Перемотка будет переводить на следующий экран с Развилкой.

4. Добавьте Развилку, в которой будет проверяться кнопка, которую нажал пользователь.

Для этого в Имя переменной откуда Развилка возьмет значение добавьте переменную lastUpdate.update.data.value.

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

В нашем примере, проверяются значения kn3 и kn4, так как их мы указали в теле запроса. Вы можете поменять значения на свои, главное, чтобы в Запросе и в Развилке эти значения совпадали.

5. Добавьте на экраны, куда будет попадать пользователь после Развилки, компонент Запрос.

Метод запроса — POST и URL запроса, остаются без изменений, как на « Экране после кнопок».

Когда пользователь окажется на этих экранах, текст на кнопках от бота снова поменяется на текст, который будет в теле запроса в переменной «text» .

Источник

Оцените статью