red_wasp / tg-clever-bot-api
PHP Telegram Clever Bot API
Requires (Dev)
- friendsofphp/php-cs-fixer: ~3.28.0
- guzzlehttp/guzzle: ^7.0
- php-http/multipart-stream-builder: ^1.0
- psr/http-client: ^1.0
- psr/http-factory: ^1.0
- symfony/http-client: ^4.3 | ^5.0 | ^6.0
- symfony/mime: ^4.3 | ^5.0 | ^6.0
- symfony/phpunit-bridge: *
- vimeo/psalm: ^5.9
Suggests
- guzzlehttp/guzzle: To use guzzlehttp/guzzle psr implementation
- php-http/multipart-stream-builder: To use psr/http-client
- psr/http-client: To use psr/http-client
- psr/http-factory: To use psr/http-client
- symfony/http-client: To use symfony/http-client
- symfony/mime: To use symfony/http-client
This package is not auto-updated.
Last update: 2025-09-26 17:55:40 UTC
README
An extended native php wrapper for Telegram Bot API without requirements. Supports all methods and types of responses.
Bots: An introduction for developers
>Bots are special Telegram accounts designed to handle messages automatically. Users can interact with bots by sending them command messages in private or group chats.
>You control your bots using HTTPS requests to bot API.
>The Bot API is an HTTP-based interface created for developers keen on building bots for Telegram. To learn how to create and set up a bot, please consult Introduction to Bots and Bot FAQ.
Installation
Via Composer
$ composer require red_wasp/tg-clever-bot-api
Usage
See example DevAnswerBot (russian).
API Wrapper
Send message
$bot = new \TelegramCleverBot\Api\BotApi('YOUR_BOT_API_TOKEN');
$bot->sendMessage($chatId, $messageText);
Send document
$bot = new \TelegramCleverBot\Api\BotApi('YOUR_BOT_API_TOKEN');
$document = new \CURLFile('document.txt');
$bot->sendDocument($chatId, $document);
Send message with reply keyboard
$bot = new \TelegramCleverBot\Api\BotApi('YOUR_BOT_API_TOKEN');
$keyboard = new \TelegramCleverBot\Api\Types\ReplyKeyboardMarkup(array(array("one", "two", "three")), true); // true for one-time keyboard
$bot->sendMessage($chatId, $messageText, null, false, null, $keyboard);
Send message with inline keyboard
$bot = new \TelegramCleverBot\Api\BotApi('YOUR_BOT_API_TOKEN');
$keyboard = new \TelegramCleverBot\Api\Types\Inline\InlineKeyboardMarkup(
[
[
['text' => 'link', 'url' => 'https://core.telegram.org']
]
]
);
$bot->sendMessage($chatId, $messageText, null, false, null, $keyboard);
Send media group
$bot = new \TelegramCleverBot\Api\BotApi('YOUR_BOT_API_TOKEN');
$media = new \TelegramCleverBot\Api\Types\InputMedia\ArrayOfInputMedia();
$media->addItem(new TelegramCleverBot\Api\Types\InputMedia\InputMediaPhoto('https://avatars3.githubusercontent.com/u/9335727'));
$media->addItem(new TelegramCleverBot\Api\Types\InputMedia\InputMediaPhoto('https://avatars3.githubusercontent.com/u/9335727'));
// Same for video
// $media->addItem(new TelegramCleverBot\Api\Types\InputMedia\InputMediaVideo('http://clips.vorwaerts-gmbh.de/VfE_html5.mp4'));
$bot->sendMediaGroup($chatId, $media);
Client
require_once "vendor/autoload.php";
try {
$bot = new \TelegramCleverBot\Api\Client('YOUR_BOT_API_TOKEN');
//Handle /ping command
$bot->command('ping', function ($message) use ($bot) {
$bot->sendMessage($message->getChat()->getId(), 'pong!');
});
//Handle text messages
$bot->on(function (\TelegramCleverBot\Api\Types\Update $update) use ($bot) {
$message = $update->getMessage();
$id = $message->getChat()->getId();
$bot->sendMessage($id, 'Your message: ' . $message->getText());
}, function () {
return true;
});
$bot->run();
} catch (\TelegramCleverBot\Api\Exception $e) {
$e->getMessage();
}
Local Bot API Server
For using custom local bot API server
use TelegramCleverBot\Api\Client;
$token = 'YOUR_BOT_API_TOKEN';
$bot = new Client($token, null, null, 'http://localhost:8081');
Third-party Http Client
use Symfony\Component\HttpClient\HttpClient;
use TelegramCleverBot\Api\BotApi;
use TelegramCleverBot\Api\Http\SymfonyHttpClient;
$token = 'YOUR_BOT_API_TOKEN';
$bot = new Client($token, null, new SymfonyHttpClient(HttpClient::create()););
Change log
Please see CHANGELOG for more information what has changed recently.
Testing
$ composer test
Contributing
Please see CONTRIBUTING for details.
Security
If you discover any security related issues, please email mail@igusev.ru instead of using the issue tracker.
Credits
License
The MIT License (MIT). Please see License File for more information.