@@ -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
10182use 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