ayaya118 / simple-telegram-bot-api
PHP Wrapper for Telegram Bot API
Requires
- php: >=5.5.0
- ext-curl: *
- ext-json: *
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 auto-updated.
Last update: 2024-12-14 10:16:49 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 ayaya118/simple-telegram-bot-api
Usage
See example DevAnswerBot (russian).
API Wrapper
Send message
$bot = new \TelegramBot\Api\BotApi('YOUR_BOT_API_TOKEN'); $bot->sendMessage($chatId, $messageText);
Send document
$bot = new \TelegramBot\Api\BotApi('YOUR_BOT_API_TOKEN'); $document = new \CURLFile('document.txt'); $bot->sendDocument($chatId, $document);
Send message with reply keyboard
$bot = new \TelegramBot\Api\BotApi('YOUR_BOT_API_TOKEN'); $keyboard = new \TelegramBot\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 \TelegramBot\Api\BotApi('YOUR_BOT_API_TOKEN'); $keyboard = new \TelegramBot\Api\Types\Inline\InlineKeyboardMarkup( [ [ ['text' => 'link', 'url' => 'https://core.telegram.org'] ] ] ); $bot->sendMessage($chatId, $messageText, null, false, null, $keyboard);
Send media group
$bot = new \TelegramBot\Api\BotApi('YOUR_BOT_API_TOKEN'); $media = new \TelegramBot\Api\Types\InputMedia\ArrayOfInputMedia(); $media->addItem(new TelegramBot\Api\Types\InputMedia\InputMediaPhoto('https://avatars3.githubusercontent.com/u/9335727')); $media->addItem(new TelegramBot\Api\Types\InputMedia\InputMediaPhoto('https://avatars3.githubusercontent.com/u/9335727')); // Same for video // $media->addItem(new TelegramBot\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 \TelegramBot\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 (\TelegramBot\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 (\TelegramBot\Api\Exception $e) { $e->getMessage(); }
Local Bot API Server
For using custom local bot API server
use TelegramBot\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 TelegramBot\Api\BotApi; use TelegramBot\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.