BotHub
Разработчик ботов
Добрый вечер. Для своих проектов разработал несколько методов, упрощающих мне работу, в данном проекте я собрал их все воедино, и решил поделиться с вами. Из преимущества, перед классами из github'а, то что работает всего 1 файл, который удобно подключить к вашему проекту и можно создавать полноценного бота, для вашего чата, канала или просто сервиса в Telegram. Возможности класса практически безграничны, и все зависит от вашей фантазии. Опишу некоторые возможности класса:
Я очень ленивый человек, поэтому не стал описывать все возможности класса. Но написал небольшого бота, что бы показать возможности.
В работе я использую встроенный шаблонизатор. Для создания шаблона всех сообщений, создается любой текстовый документ. Каждое отдельное сообщение для бота заключается в теги <!-- BEGIN:start --> и <!-- END:start --> слово start в нашем случае это тот самый ключ, с помощью которого шаблонизатор и поймет какое сообщение нужно выводить. Для клавиатур используется похожая технология, только нужно использовать документ с Json строкой. Для удобства создания этого файла в классе есть метод createJson(); Сердцем класса является метод typeMessage(); именно он позволяет понимать боту, какой тип сообщения ему отправлен или какие манипуляции с сообщениями происходят именно сейчас. Хочу отметить что у бота есть встроенный метод вырезания команд из сообщений, что позволяет отправлять несколько команд в 1 сообщении, бот каждую из них обработает, повторы команд он не допускает.
Пример из темы можно оценить тут @vlmi_su_bot
Все мои последующие уроки, из темы https://vlmi.top/threads/uroki-po-razrabotke-telegram-botov.13307/ будут проходить с использованием этого класса. Прошу задавать вопросы и предлагать новые возможности для расширения функционала класса. Используя мои разработки, можно создавать достаточно сложные проект, в кратчайшие сроки, выложенный выше код бота, написан в течении нескольких минут.
- Вывод информации с помощью методов класса.
- Отправка, изменение, удаление, ответы на сообщения, цитирование.
- Отправка файлов
- Скачивание файлов на ваш сервер.
- Система шаблонов, с помощью шаблонизатора, можно создавать заготовки сообщений бота, и манипулировать ими в ваших проектах. Что позволит вам создавать ботов под разную языковую аудиторию.
- Система клавиатур, единый файл для хранения клавиатур бота.
- Определение типов сообщения.
- Фильтрация данных, которые могли бы привести к ошибкам в ваших скриптах.
Я очень ленивый человек, поэтому не стал описывать все возможности класса. Но написал небольшого бота, что бы показать возможности.
Код:
<?php
define('ROOT_DIR', __DIR__);
require_once(ROOT_DIR . '/Telegram.class.php');
$token = '555446138:AAHsMS7z366Z0-tcD1pCsoy9ZQiZIYd4CI8'; // Telegram bot токен
$telegram = new Telegram($token);
$telegram->pathTemplate(ROOT_DIR . '/message.tpl'); // путь к файлу с шаблонами сообщений
$telegram->pathKeyboard(ROOT_DIR . '/keyboard.json'); // путь к файлу с шаблонами клавиатур
switch ($telegram->typeMessage()) {
case 'message':
switch ($telegram->text()) {
case 'Тестовая кнопка 1':
$telegram->sendMessage($telegram->chatID(), $telegram->showTemplate('test_button1'));
break;
case 'Тестовая кнопка 2':
$telegram->sendMessage($telegram->chatID(), $telegram->showTemplate('test_button2'));
break;
case 'Тестовая кнопка 3':
$telegram->sendMessage($telegram->chatID(), $telegram->showTemplate('test_button3'));
break;
default:
# code...
break;
}
break;
case 'entities_message':
foreach($telegram->entities() as $valueEntities) {
if ($valueEntities['type'] == 'bot_command') {
switch ($valueEntities['data']) {
case '/start':
case '/help':
$telegram->sendMessage($telegram->chatID(), $telegram->showTemplate('start'));
break;
case '/account_info':
$telegram->tagTemplate('{first_name}', !empty($telegram->firstName()) ? $telegram->firstName() : '-');
$telegram->tagTemplate('{last_name}', !empty($telegram->lastName()) ? $telegram->lastName() : '-');
$telegram->tagTemplate('{username}', !empty($telegram->username()) ? $telegram->username() : '-');
$telegram->tagTemplate('{language_code}', $telegram->languageCode());
$telegram->tagTemplate('{date}', date('H:i:s d/m/Y', $telegram->date()));
$telegram->sendMessage($telegram->chatID(), $telegram->showTemplate('account_info'));
break;
case '/keyboard':
$telegram->sendMessage($telegram->chatID(), $telegram->showTemplate('keyboard'), $telegram->Keyboard($telegram->setKeyboard('keyboard')));
break;
case '/remove_keyboard':
$telegram->sendMessage($telegram->chatID(), $telegram->showTemplate('remove_keyboard'), $telegram->removeKeyboard());
break;
case '/inline_keyboard':
$telegram->sendMessage($telegram->chatID(), $telegram->showTemplate('inline_keyboard'), $telegram->inlineKeyboard($telegram->setKeyboard('inline_keyboard')));
break;
default:
# code...
break;
}
}
}
break;
case 'callback_query':
switch ($telegram->callbackData()) {
case 'inline1':
$telegram->sendAnswer($telegram->callbackID(), $telegram->showTemplate('test_button1'));
break;
case 'inline2':
$telegram->sendAnswer($telegram->callbackID(), $telegram->showTemplate('test_button2'));
break;
case 'inline3':
$telegram->sendAnswer($telegram->callbackID(), $telegram->showTemplate('test_button3'));
break;
case 'inline_del':
$telegram->deleteMessage($telegram->chatID(), $telegram->messageID());
$telegram->sendAnswer($telegram->callbackID(), $telegram->showTemplate('inline_keyboard_del'));
break;
default:
# code...
break;
}
break;
default:
# code...
break;
}
?>
В работе я использую встроенный шаблонизатор. Для создания шаблона всех сообщений, создается любой текстовый документ. Каждое отдельное сообщение для бота заключается в теги <!-- BEGIN:start --> и <!-- END:start --> слово start в нашем случае это тот самый ключ, с помощью которого шаблонизатор и поймет какое сообщение нужно выводить. Для клавиатур используется похожая технология, только нужно использовать документ с Json строкой. Для удобства создания этого файла в классе есть метод createJson(); Сердцем класса является метод typeMessage(); именно он позволяет понимать боту, какой тип сообщения ему отправлен или какие манипуляции с сообщениями происходят именно сейчас. Хочу отметить что у бота есть встроенный метод вырезания команд из сообщений, что позволяет отправлять несколько команд в 1 сообщении, бот каждую из них обработает, повторы команд он не допускает.
Пример из темы можно оценить тут @vlmi_su_bot
Все мои последующие уроки, из темы https://vlmi.top/threads/uroki-po-razrabotke-telegram-botov.13307/ будут проходить с использованием этого класса. Прошу задавать вопросы и предлагать новые возможности для расширения функционала класса. Используя мои разработки, можно создавать достаточно сложные проект, в кратчайшие сроки, выложенный выше код бота, написан в течении нескольких минут.
Вложения
Последнее редактирование: