Skip to content

Commit 0e0acb2

Browse files
authored
Revise README with updated broadcast methods
Updated README to reflect changes in broadcast management methods and usage examples.
1 parent dddfdd1 commit 0e0acb2

1 file changed

Lines changed: 110 additions & 49 deletions

File tree

README.md

Lines changed: 110 additions & 49 deletions
Original file line numberDiff line numberDiff line change
@@ -58,29 +58,6 @@ Version](https://img.shields.io/packagist/v/wizardloop/broadcastmanager)](https:
5858

5959
---
6060

61-
## 📁 Repository Structure
62-
63-
```
64-
BroadcastManager/
65-
├── src/
66-
│ └── BroadcastManager.php
67-
├── data/
68-
│ └── .gitkeep
69-
├── composer.json
70-
├── README.md
71-
├── LICENSE
72-
└── CHANGELOG.md
73-
```
74-
75-
---
76-
77-
## 💻 Requirements
78-
79-
* [MadelineProto](https://docs.madelineproto.xyz/)
80-
* [amphp/amp](https://amphp.org/)
81-
82-
---
83-
8461
## ⚡ Installation
8562

8663
```bash
@@ -97,6 +74,10 @@ require 'vendor/autoload.php';
9774

9875
## 🚀 Usage Example
9976

77+
---
78+
## Send Broadcast
79+
80+
### 1) live progress update in message to admin:
10081
```php
10182
use BroadcastTool\BroadcastManager;
10283

@@ -105,10 +86,90 @@ $manager = new BroadcastManager($api);
10586
$manager->broadcastWithProgress($users, $messages, $adminChatId, true, 20);
10687
```
10788

89+
### 2) track on progress without message:
90+
This method returns an integer ID that can be used.
91+
92+
```php
93+
use BroadcastTool\BroadcastManager;
94+
95+
$manager = new BroadcastManager($api);
96+
97+
$broadcastId = $manager->broadcastWithProgress($users, $messages, null, true, 20);
98+
99+
/**
100+
* Get progress (can be polled)
101+
*/
102+
$progress = $manager->progress($broadcastId);
103+
104+
if ($progress !== null) {
105+
106+
// 📊 Core stats
107+
$processed = $progress['processed'];
108+
$success = $progress['success'];
109+
$failed = $progress['failed'];
110+
$pending = $progress['pending'];
111+
$flood = $progress['flood'];
112+
113+
// 📈 Progress %
114+
$progressPercent = $progress['progressPercent'];
115+
116+
// 📦 Breakdown
117+
$sent = $progress['breakdown']['sent'];
118+
$deleted = $progress['breakdown']['deleted'];
119+
$unpin = $progress['breakdown']['unpin'];
120+
121+
// ⚙️ State
122+
$done = $progress['done'];
123+
$paused = $progress['paused'];
124+
$cancel = $progress['cancel'];
125+
126+
// ⏱ Timing
127+
$startedAt = $progress['startedAt'];
128+
129+
/**
130+
* Example usage
131+
*/
132+
echo "Progress: {$progressPercent}%\n";
133+
echo "Sent: {$sent}\n";
134+
echo "Failed: {$failed}\n";
135+
136+
if ($done) {
137+
echo "Broadcast finished!";
138+
}
139+
140+
if ($paused) {
141+
echo "Broadcast paused...";
142+
}
143+
}
144+
```
145+
146+
```php
147+
* progress return array|null {
148+
* processed: int, // total processed items (sent + deleted + unpin + failed)
149+
* success: int, // successful operations (sent + deleted + unpin)
150+
* failed: int, // failed operations count
151+
* pending: int, // remaining items in queue
152+
* flood: int, // FLOOD_WAIT occurrences
153+
*
154+
* progressPercent: float, // completion percentage (processed / total)
155+
*
156+
* breakdown: array {
157+
* sent: int,
158+
* deleted: int,
159+
* unpin: int
160+
* },
161+
*
162+
* done: bool, // process finished
163+
* paused: bool, // process paused
164+
* cancel: bool, // process cancelled
165+
*
166+
* startedAt: float // microtime start timestamp
167+
* }
168+
```
169+
108170
---
109171

110172
## Filer Peers
111-
112173
```php
113174
$filterSub = $manager->filterPeers($users, 'users');
114175
$targets = $filterSub['targets']; # array
@@ -121,64 +182,64 @@ $total = $filterSub['total']; # int
121182
## ⏸ Control Broadcasts
122183

123184
```php
124-
$manager->pause();
125-
$manager->resume();
126-
$manager->cancel();
185+
$manager->pause($broadcastId);
186+
$manager->resume($broadcastId);
187+
$manager->cancel($broadcastId);
127188
```
128189

129-
Check state:
190+
### Check state:
130191
```php
131-
if ($manager->isPaused()) echo "Paused";
132-
if ($manager->isCancelled()) echo "Cancelled";
133-
if (!$manager->hasLastBroadcast()) echo "No last Broadcast do delete";
134-
if (!$manager->hasAllBroadcast()) echo "No all Broadcast to delete";
135-
print_r($manager->progress());
192+
if ($manager->isActive($broadcastId));
193+
if ($manager->isPaused($broadcastId));
194+
if ($manager->isCancelled($broadcastId));
195+
if (!$manager->hasLastBroadcast($broadcastId));
196+
if (!$manager->hasAllBroadcast($broadcastId));
197+
print_r($manager->progress($broadcastId));
136198
```
137199

138-
Set data dir:
200+
### Set data dir:
139201
```php
140-
BroadcastManager::setDataDir(__DIR__ . '/data');
202+
BroadcastManager::setDataDir(__DIR__ . '/data'); // default: __DIR__ . '/../data'
141203
```
142-
_default is: __DIR__ . '/../data'_
143204

144205
---
145206

146207
## 🧹 Delete Last Broadcast
147208

148209
```php
149-
$manager->deleteLastBroadcastForAll($users, $adminChatId, 20);
210+
$broadcastId = $manager->deleteLastBroadcastForAll($users, $adminChatId, 20);
150211
```
151212

152213
---
153214

154215
## ♻️ Delete All Broadcast
155216

156217
```php
157-
$manager->deleteAllBroadcastsForAll($users, $adminChatId, 20);
218+
$broadcastId = $manager->deleteAllBroadcastsForAll($users, $adminChatId, 20);
158219
```
159220

160221
---
161222

162223
## 📊 Get Last Broadcast Data
163224

164225
```php
165-
$manager->lastBroadcastData();
226+
$broadcastId = $manager->lastBroadcastData();
166227
```
167228

168229
---
169230

170231
## 📌 Pin / Unpin Messages
171232

172-
Pin last broadcast automatically:
233+
## Pin last broadcast automatically:
173234

174235
```php
175-
$manager->broadcastWithProgress(..., pin: true);
236+
$broadcastId = $manager->broadcastWithProgress(..., pin: true);
176237
```
177238

178-
Unpin all messages:
239+
## Unpin all messages:
179240

180241
```php
181-
$manager->unpinAllMessagesForAll(...);
242+
$broadcastId = $manager->unpinAllMessagesForAll(...);
182243
```
183244

184245
---
@@ -199,11 +260,11 @@ $message = [
199260

200261
## ⚙️ Advanced Options
201262

202-
* **Concurrency** Number of parallel workers.
203-
* **Filter Types** 'users', 'groups', 'channels', 'all'
204-
* **Album Handling** JSON-based albums with multiple media files.
205-
* **Retries & Delays** Automatic retries with backoff.
206-
* **Progress Tracking** Real-time broadcast stats with `progress()`.
263+
* **Concurrency** - Number of parallel workers.
264+
* **Filter Types** - 'users', 'groups', 'channels', 'all'
265+
* **Album Handling** - JSON-based albums with multiple media files.
266+
* **Retries & Delays** - Automatic retries with backoff.
267+
* **Progress Tracking** - Real-time broadcast stats with `progress()`.
207268

208269
---
209270

@@ -219,7 +280,7 @@ $message = [
219280

220281
## 📄 License
221282

222-
**GNU AGPL-3.0** see [LICENSE](LICENSE).
283+
**GNU AGPL-3.0** - see [LICENSE](LICENSE).
223284

224285
---
225286

0 commit comments

Comments
 (0)