( client: TelegramClient, task: DeleteTask, status: string )
| 168 | task: DeleteTask, |
| 169 | status: string |
| 170 | ): Promise<number | undefined> => { |
| 171 | try { |
| 172 | const elapsed = Date.now() - task.startTime; |
| 173 | const hours = Math.floor(elapsed / 3600000); |
| 174 | const minutes = Math.floor((elapsed % 3600000) / 60000); |
| 175 | const seconds = Math.floor((elapsed % 60000) / 1000); |
| 176 | |
| 177 | const speed = task.deletedMessages > 0 |
| 178 | ? (task.deletedMessages / (elapsed / 1000)).toFixed(2) |
| 179 | : "0"; |
| 180 | |
| 181 | let statusText = "⏹️ 已停止"; |
| 182 | if (task.isRunning) { |
| 183 | statusText = "🟢 运行中"; |
| 184 | } else if (task.sleepUntil && task.sleepUntil > Date.now()) { |
| 185 | const sleepRemaining = Math.ceil((task.sleepUntil - Date.now()) / 1000); |
| 186 | statusText = `😴 休眠中 (${sleepRemaining}秒)`; |
| 187 | } else if (task.isPaused) { |
| 188 | statusText = "⏸️ 已暂停"; |
| 189 | } |
| 190 | |
| 191 | const safeStatus = htmlEscape(status); |
| 192 | const safeChatName = htmlEscape(task.chatName); |
| 193 | const safeStatusText = htmlEscape(statusText); |
| 194 | const recentErrors = task.errors |
| 195 | .slice(-3) |
| 196 | .map((error) => htmlEscape(error)) |
| 197 | .join("\n"); |
| 198 | |
| 199 | const message = `📊 <b>删除任务${safeStatus}</b> |
| 200 | |
| 201 | <b>群聊:</b> ${safeChatName} |
| 202 | <b>状态:</b> ${safeStatusText} |
| 203 | |
| 204 | <b>📈 统计信息:</b> |
| 205 | • 已删除: <code>${task.deletedMessages.toLocaleString()}</code> 条 |
| 206 | • 删除速度: ${speed} 条/秒 |
| 207 | • 运行时长: ${hours}小时 ${minutes}分钟 ${seconds}秒 |
| 208 | |
| 209 | <b>最后更新:</b> ${new Date(task.lastUpdate).toLocaleString("zh-CN")} |
| 210 | |
| 211 | ${recentErrors ? `<b>⚠️ 最近错误:</b>\n${recentErrors}` : ""}`; |
| 212 | |
| 213 | // 如果已有收藏夹消息,则编辑;否则创建新消息 |
| 214 | if (task.savedMessageId) { |
| 215 | try { |
| 216 | await client.editMessage("me", { |
| 217 | message: task.savedMessageId, |
| 218 | text: message, |
| 219 | parseMode: "html", |
| 220 | }); |
| 221 | return task.savedMessageId; |
| 222 | } catch (editError) { |
| 223 | // 如果编辑失败,创建新消息 |
| 224 | console.log("编辑收藏夹消息失败,创建新消息:", editError); |
| 225 | } |
| 226 | } |
| 227 |
no test coverage detected