Botfire is a modern library that is used to build different types of Telegram bot projects. Likewise, a dedicated framework has been created for this purpose, which doubles the simplicity of construction and development
composer require botfire/botfire
use
use botfire\botfire\bot;
Set Token
bot::token('your-bot-token');
bot::autoInput();
Set Webhook
$result = bot::webhook()->url( $url )->set();
Get Webhook
$get = bot::webhook()->getInfo();
echo $get;
Send Message
bot::id($chat_id)->message('...')->send();
// auto set chat_id
bot::this()->message('...')->send();
Send Photo
bot::id($chat->id)->photo($file_id)->send();
Send Audio
bot::id($chat->id)->audio($file_id)->send();
Send Voice
bot::id($chat->id)->voice($file_id)->send();
Send Video Note
bot::id($chat->id)->videoNote($file_id)->send();
Send Video
bot::id($chat->id)->video($file_id)->send();
Send Animation
bot::id($chat->id)->animation($file_id)->send();
Send Document
bot::id($chat->id)->document($file_id)->send();
Send Contact
bot::id($chat->id)->contact($phone_number,$first_name,$last_name)->send();
Send chat action
bot::id($chat->id)->chatAction($action)->send();
'typing','upload_photo','record_video','upload_video','record_audio','upload_audio','upload_document','find_location','record_video_note','upload_video_note'
Send MediaGroup docs
Edit message
bot::id($chat->id)->editMessage('new text')->message_id($msg_id)->send();
Edit caption
bot::id($chat->id)->editCaption('caption text')->message_id($msg_id)->send();
Edit reply markup
$k = bot::keyboard();
$k->btn('hello inline button','callback data')->row();
bot::id($chat->id)->editReplyMarkup()->keyboard( $k )->send();
Delete message
bot::id($chat->id)->deleteMessage()->message_id($msg_id)->send();
Get message text
$text = bot::text();
get message caption
$caption = bot::caption();
Get callback data
$data = bot::data();
Get message id
$msg_id = bot::message_id();
Get all message Object
$msg = bot::getMessage();
Get All receive Object
$get = bot::json(); // object
$get = bot::input(); // text
if( bot::isUser() ){
// Receive private messages
}
else if( bot::isGroup() ){
// Receive from super group
}
else if( ! bot::isGroup() && bot::isGroup(true) ){
// Receive from normal group
}
else if( bot::isChannel() ){
// Receive channel post
}
if( bot::getCallback() ){
// When I click on the inline button
$data = bot::data();
//...
}
else {
// When I send normal text
// ...
}
Receive edited message
if (bot::getEditedMessage()) {
// ...
}
// for channel
if(bot::getEditedChannelPost()){
// ...
}
Answer
bot::this()->answerCallback()->send();
Answer and send alert
bot::this()->answerCallback(true)->text('hello')->send();
Get chat info
$chat = bot::chat();
Get From
$from = bot::from();
inline keyboard
$k = bot::keyboard();
$k
->btn('btn name 1','data callback 1')
->btn('btn name 2','data callback 2')
->row()
->btnUrl('btn name 3','https://github.com')
->row();
bot::id(bot::chat()->id)->message('...')->keyboard($k)->send();
markup keyboard
markup($resize_keyboard,$one_time_keyboard,$selective)
example
$k = bot::keyboard();
$k->markup(true)->btn('button name')->row();
bot::id(bot::chat()->id)->message('...')->keyboard($k)->send();
can use autoRow method
$k = bot::keyboard();
foreach($list as $item){
$k->btn($item->name,$item->value);
}
// Creates two buttons in each row
$k->autoRow(2);
bot::this()->message(...)->keyboard($k)->send();
/*
out:
______________
| btn1 | btn2 |
_______________
| btn3 | btn4 |
*/
send user contatc
$k = bot::keyboard()->markup(true)->contact('Send Phone')->row();
bot::id(bot::chat()->id)->message('Click Send Phone Button')->keyboard($k)->send();
$info = bot::getMe();
bot::id($chat_id)->message($info)->send();
method : getUserProfilePhotos($user_id,$offset=null,$limit=null)
sample
$profile = bot::getUserProfilePhotos(bot::chat()->id);
usage
bot::this()->photo($file_id)->caption($text)->send();
method | *** |
---|---|
caption($text) | media message caption |
message_id($msg_id) | |
inline_message_id($inline_msg_id) | |
callback_query_id($query_id) | |
parse_mode($type) | Send Markdown or HTML |
vcard($vcard) | |
disable_web_page_preview($bool) | |
disable_notification($bool) | |
live_period($int) | should be between 60 and 86400 |
reply_to($message_id) | |
duration($duration) | |
performer($performer) | |
title($title) | |
width($int) | |
height($int) | |
supports_streaming($bool) | |
thumb($thumb) | |
length($int) | |
latitude($latitude) | |
longitude($longitude) | |
foursquare_id($foursquare_id) | |
foursquare_type($foursquare_type) |
Use this method to set default chat permissions for all members
bot::this()
->setChatPermissions()
->can_change_info(false)
->send();
/*
| methods :
|
| can_send_messages(true|false)
| can_send_media_messages(true|false)
| can_send_polls(true|false)
| can_send_other_messages(true|false)
| can_add_web_page_previews(true|false)
| can_change_info(true|false)
| can_invite_users(true|false)
| can_pin_messages(true|false)
|
*/
Use this method to restrict a user in a supergroup
bot::this()
->restrictChatMember(chat_id)
->can_send_polls(false)
->send();
/*
| methods :
|
| can_send_messages(true|false)
| can_send_media_messages(true|false)
| can_send_polls(true|false)
| can_send_other_messages(true|false)
| can_add_web_page_previews(true|false)
| can_change_info(true|false)
| can_invite_users(true|false)
| can_pin_messages(true|false)
|
*/