Telegram bot framework written in PHP
- Simple, easy to use.
- Support Long Polling and Webhook.
- cURL
- PHP 5.4+
- Telegram Bot API Token - Talk to @BotFather and generate one.
Using Composer
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';
<?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 <b>'.$name.'</b> and your ID is <code>'.$userId.'</code>';
$options = [
'parse_mode' => 'html',
'reply' => true
];
return Bot::sendMessage($text, $options);
});
$bot->run();
Then run
php file.php
You can also see my other sample.
NOTE:
- 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(<command>, <function>)
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(<event>, <function>)
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
Create a command: /regex string number
$bot->regex('/^\/regex (.*) ([0-9])$/i', function($matches) {
// Do something here.
});
Handle a command.
Handles events.
Create custom regex for command.
Return message event type.
Get message properties.
PHPTelebot use standard Telegram Bot API method names.
Bot::getMe()
?
A simple method for testing your bot's auth token.
Bot::sendMessage(<text>, <options>)
?
Use this method to send text messages.
Bot::forwardMessage(<options>)
?
Use this method to forward messages of any kind.
Bot::sendPhoto(<file path | file id | url>, <options>)
?
Use this method to send a photo.
Bot::sendVideo(<file path | file id | url>, <options>)
?
Use this method to send a video.
Bot::sendAudio(<file path | file id | url>, <options>)
?
Use this method to send a audio.
Bot::sendVoice(<file path | file id | url>, <options>)
?
Use this method to send a voice message.
Bot::sendDocument(<file path | file id | url>, <options>)
?
Use this method to send a document.
Bot::sendSticker(<file path | file id | url>, <options>)
?
Use this method to send a sticker.
Bot::sendLocation(<options>)
?
Use this method to send point on the map.
Bot::sendVenue(<options>)
?
Use this method to send information about a venue.
Bot::sendContact(<options>)
?
Use this method to send phone contacts.
Bot::sendChatAction(<action>, <options>)
?
Use this method when you need to tell the user that something is happening on the bot's side.
Bot::getUserProfilePhotos(<user id>, <options>)
?
Use this method to get a list of profile pictures for a user.
Bot::getFile(<file id>)
?
Use this method to get basic info about a file and prepare it for downloading. For the moment, bots can download files of up to 20MB in size.
Bot::answerInlineQuery(<array of results>, <options>)
?
Use this method to send answers to an inline query.
Bot::answerCallbackQuery(<text>, <options>)
?
Use this method to send answers to callback queries sent from inline keyboards.
Bot::getChat(<chat_id>)
?
Use this method to get up to date information about the chat.
Bot::leaveChat(<chat_id>)
?
Use this method for your bot to leave a group, supergroup or channel.
Bot::getChatAdministrators(<chat_id>)
?
Use this method to get a list of administrators in a chat.
Bot::getChatMembersCount(<chat_id>)
?
Use this method to get the number of members in a chat.
Bot::getChatMember(<options>)
?
Use this method to get information about a member of a chat.
Bot::kickChatMember(<options>)
?
Use this method to kick a user from a group or a supergroup.
Bot::unbanChatMember(<options>)
?
Use this method to unban a previously kicked user in a supergroup.
Bot::editMessageText(<options>)
?
Use this method to edit text messages sent by the bot or via the bot (for inline bots).
Bot::editMessageCaption(<options>)
?
Use this method to edit captions of messages sent by the bot or via the bot (for inline bots).
Bot::editMessageReplyMarkup(<options>)
?
Use this method to edit only the reply markup of messages sent by the bot or via the bot (for inline bots).
Bot::sendGame(<game short name>, <options>)
?
Use this method to send a game.
Bot::setGameScore(<options>)
?
Use this method to set the score of the specified user in a game.
Bot::getGameHighScores(<user id>, <options>)
?
Use this method to get data for high score tables.
Open via browser https://api.telegram.org/bot<BOT TOKEN>/setWebhook?url=https://yourdomain.com/your_bot.php