Download the PHP package shokirjonmk/telegram-bot without Composer
On this page you can find all versions of the php package shokirjonmk/telegram-bot. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Download shokirjonmk/telegram-bot
More information about shokirjonmk/telegram-bot
Files in shokirjonmk/telegram-bot
Package telegram-bot
Short Description Professional Telegram Bot Extension for Yii2 Framework with multi-bot support, queue integration, command routing, and rate limiting
License MIT
Informations about the package telegram-bot
Telegram Bot Extension for Yii2
Professional Telegram Bot Extension for Yii2 Framework with advanced features: multi-bot support, queue integration, command routing, rate limiting, and more.
✨ Xususiyatlar
- ✔ Yii2 uchun maxsus yozilgan
- ✔ Multi-bot support - bir nechta botlarni boshqarish (student, staff, va boshqalar)
- ✔ Queue integration - background message sending
- ✔ Command Router - Laravel-like command handling
- ✔ Rate Limiting - per-user va per-bot rate limiting (Redis bilan)
- ✔ Retry mechanism - exponential backoff bilan avtomatik retry
- ✔ File Helper - Telegram fayllarini yuklab olish
- ✔ Update Handler Middleware - update handling uchun middleware
- ✔ Exception, Logging, MarkdownV2 escape
- ✔ Inline keyboard builder
- ✔ Chat actions support
📦 O'rnatish
Composer orqali
Yoki composer.json ga qo'shing:
Qo'shimcha paketlar (ixtiyoriy, lekin tavsiya etiladi)
Queue va rate limiting uchun:
⚙️ Konfiguratsiya
Asosiy konfiguratsiya (config/web.php va config/console.php)
Queue worker ishga tushirish
Lokal polling ishga tushirish (Development)
🚀 Ishlatish
1. Oddiy xabar yuborish (eski usul - backward compatible)
2. Multi-bot support (yangi usul)
3. Options bilan xabar yuborish
4. Queue orqali background xabar yuborish
5. Chat action yuborish
6. Fayl yuklab olish
7. Command Router ishlatish
8. Update Handler Middleware bilan to'liq webhook
📚 API Metodlari
TelegramComponent
Xabar metodlari
sendMessage($chatId, $text, $options = [])- Xabar yuborisheditMessageText($chatId, $messageId, $text, $options = [])- Xabarni o'zgartirisheditMessageReplyMarkup($chatId, $messageId, $keyboard = null)- Xabar keyboardini o'zgartirishdeleteMessage($chatId, $messageId)- Xabarni o'chirishforwardMessage($chatId, $fromChatId, $messageId, $options = [])- Xabarni forward qilish
Media metodlari
sendPhoto($chatId, $photo, $caption = null, $keyboard = null)- Rasm yuborishsendDocument($chatId, $document, $caption = null, $keyboard = null, $options = [])- Hujjat yuborishsendVideo($chatId, $video, $caption = null, $keyboard = null, $options = [])- Video yuborishsendLocation($chatId, $latitude, $longitude, $keyboard = null, $options = [])- Lokatsiya yuborish
Callback va Actions
answerCallbackQuery($callbackQueryId, $text = null, $showAlert = false)- Callback javob berishsendChatAction($chatId, $action = 'typing')- Chat action yuborish (typing, upload_photo, record_voice, etc.)
Webhook va Updates
setWebhook($url, $options = [])- Webhook o'rnatishdeleteWebhook($dropPendingUpdates = false)- Webhook o'chirishgetWebhookInfo()- Webhook ma'lumotlarini olishgetUpdates($offset = null, $limit = null, $timeout = null, $allowedUpdates = null)- Updates olish (polling)
Fayl va Bot ma'lumotlari
getFile($fileId)- Fayl ma'lumotlarini olishgetMe()- Bot ma'lumotlarini olish
Queue va Utility
enqueueSendMessage($chatId, $text, $options = [])- Queue orqali xabar yuborishescapeMarkdownV2($text)- MarkdownV2 uchun matnni escape qilishescape($text)- Alias for escapeMarkdownV2
TelegramManager
get($name = null)- Bot component olishgetBotNames()- Barcha bot nomlarini olishhas($name)- Bot mavjudligini tekshirish
Keyboard
Keyboard::inline($buttons)- Inline keyboard yaratishKeyboard::inlineButton($text, $callback)- Inline button yaratishKeyboard::reply($buttons, $resize = true)- Reply keyboard yaratish
FileHelper
FileHelper::downloadFile($component, $fileId, $saveDir)- Fayl yuklab olish
CommandRouter
register($name, $callable)- Command ro'yxatdan o'tkazishhandleUpdate($update, $component)- Update ni handle qilish
RateLimiter
allow($userId)- Rate limit tekshirish
🎛 Konfiguratsiya parametrlari
TelegramComponent
token- Bot tokenapiUrl- Telegram API URL (default:https://api.telegram.org/bot)timeout- Request timeout (default: 5)enableLogs- Logging yoqish/yoqmaslik (default: true)rateLimitPerSecond- Per-bot rate limit (default: 20)
RateLimiter
limit- Requests per window (default: 5)window- Time window in seconds (default: 1)
📝 Webhook Controller namunasi
controllers/TelegramController.php:
Webhook URL: https://your.domain/telegram/webhook?bot=student yoki ?bot=staff
🔧 Qo'shimcha xususiyatlar
- Retry mechanism: Exponential backoff bilan avtomatik retry (default: 3 attempts)
- Rate limiting: Ikki darajali - global per-bot va per-user
- Queue support: Background message sending
- Logging: Barcha xatolar
telegram-errorkategoriyasi bilan loglanadi - Backward compatibility: Eski
Telegramclass hali ham ishlaydi - Local polling support: Python telegram bot kabi lokalda ishlash uchun polling
🖥️ Lokalda ishlatish (Polling)
Python telegram bot kabi lokalda ishlatish uchun polling ishlatishingiz mumkin. Ikki usul bor:
1. Console Command (Tavsiya etiladi)
console/commands/TelegramPollingCommand.php faylini yarating (misol: examples/PollingCommand.php):
Ishga tushirish:
2. Standalone Script
examples/polling.php faylini ishlatishingiz mumkin:
Polling vs Webhook
| Xususiyat | Polling (Lokal) | Webhook (Production) |
|---|---|---|
| Ishlash joyi | Lokal kompyuter | Server |
| Webhook kerakmi | ❌ Yo'q | ✅ Ha |
| Natijaviylik | Pastroq | Yuqori |
| Development | ✅ Qulay | ❌ Qiyin |
| Production | ❌ Tavsiya etilmaydi | ✅ Tavsiya etiladi |
Tavsiya:
- Development uchun: Polling ishlating (lokalda)
- Production uchun: Webhook ishlating (serverda)
📝 License
MIT
👤 Author
ShokirjonMK