MCPcopy Create free account
hub / github.com/TeleBoxOrg/TeleBox_Plugins / restorePins

Method restorePins

restore_pin/restore_pin.ts:108–161  ·  view source on GitHub ↗

* 批量恢复置顶

(msg: Api.Message, chatId: any, messageIds: number[])

Source from the content-addressed store, hash-verified

106 await msg.edit({ text: "✅ 没有需要恢复的置顶消息", parseMode: "html" });
107 return;
108 }
109
110 await msg.edit({
111 text: `🔄 正在恢复 ${messageIds.length} 条置顶消息...`,
112 parseMode: "html"
113 });
114
115 let successCount = 0;
116 let errorCount = 0;
117 const errors: string[] = [];
118
119 for (let i = 0; i < messageIds.length; i++) {
120 const messageId = messageIds[i];
121
122 // 每3条更新一次进度
123 if ((i + 1) % 3 === 0) {
124 await msg.edit({
125 text: `🔄 正在恢复第 ${i + 1}/${messageIds.length} 条置顶消息...\n✅ 成功: ${successCount} ❌ 失败: ${errorCount}`,
126 parseMode: "html"
127 });
128 }
129
130 const success = await this.pinMessage(chatId, messageId);
131 if (success) {
132 successCount++;
133 } else {
134 errorCount++;
135 errors.push(`消息 ${messageId} 恢复失败`);
136 }
137
138 // 延迟避免触发限制(减少到1秒)
139 await new Promise(resolve => setTimeout(resolve, 1000));
140 }
141
142 let resultText = `📊 <b>恢复完成</b>\n\n`;
143 resultText += `✅ 成功恢复: ${successCount} 条\n`;
144 resultText += `❌ 恢复失败: ${errorCount} 条`;
145
146 if (errors.length > 0) {
147 resultText += `\n\n<b>失败详情:</b>\n`;
148 errors.slice(0, 3).forEach(error => {
149 resultText += `• ${htmlEscape(error)}\n`;
150 });
151 if (errors.length > 3) {
152 resultText += `• ... 还有 ${errors.length - 3} 个错误`;
153 }
154 }
155
156 await msg.edit({ text: resultText, parseMode: "html" });
157 }
158
159 /**
160 * 主命令处理器
161 */
162 private async handleRestorePin(msg: Api.Message): Promise<void> {
163 const client = await getGlobalClient();
164 if (!client) {

Callers 1

handleRestorePinMethod · 0.95

Calls 3

pinMessageMethod · 0.95
htmlEscapeFunction · 0.70
editMethod · 0.45

Tested by

no test coverage detected