diff --git a/backend/dist/index.js b/backend/dist/index.js index 763d786..fd4f6b2 100644 --- a/backend/dist/index.js +++ b/backend/dist/index.js @@ -5978,7 +5978,7 @@ async function handleStorageCleanupCallback(client2, update, data) { const stats = await scanLocalDownloadFiles(); if (data === "storage_clear_cancel") { await client2.editMessage(update.peer, { - message: update.msgId, + message: Number(update.msgId), text: stats.count > 0 ? `\u5DF2\u53D6\u6D88\u6E05\u7406\u3002\u5F53\u524D\u672C\u5730\u4E0B\u8F7D\u6587\u4EF6\uFF1A${stats.count} \u4E2A\uFF0C\u5360\u7528 ${formatBytes(stats.totalSize)}\u3002` : "\u5DF2\u53D6\u6D88\u6E05\u7406\u3002\u5F53\u524D\u6CA1\u6709\u672C\u5730\u4E0B\u8F7D\u6587\u4EF6\u3002", buttons: buildStorageMaintenanceKeyboard(stats.count) }); @@ -5987,7 +5987,7 @@ async function handleStorageCleanupCallback(client2, update, data) { } if (data === "storage_clear_ask") { await client2.editMessage(update.peer, { - message: update.msgId, + message: Number(update.msgId), text: [ "\u26A0\uFE0F **\u786E\u8BA4\u5220\u9664\u672C\u5730\u670D\u52A1\u5668\u5168\u90E8\u4E0B\u8F7D\u6587\u4EF6\uFF1F**", "", @@ -6014,7 +6014,7 @@ async function handleStorageCleanupCallback(client2, update, data) { } const after = await scanLocalDownloadFiles(); await client2.editMessage(update.peer, { - message: update.msgId, + message: Number(update.msgId), text: [ "\u2705 **\u672C\u5730\u670D\u52A1\u5668\u4E0B\u8F7D\u6587\u4EF6\u5DF2\u6E05\u7406**", "", @@ -6102,7 +6102,7 @@ async function handleDeleteConfirmCallback(client2, update, data) { } if (action === "cancel") { pendingDeleteConfirmations.delete(confirmId); - await client2.editMessage(update.peer, { message: update.msgId, text: `\u5DF2\u53D6\u6D88\u5220\u9664\uFF1A${pending.name}`, buttons: new Api4.ReplyInlineMarkup({ rows: [] }) }); + await client2.editMessage(update.peer, { message: Number(update.msgId), text: `\u5DF2\u53D6\u6D88\u5220\u9664\uFF1A${pending.name}`, buttons: new Api4.ReplyInlineMarkup({ rows: [] }) }); await client2.invoke(new Api4.messages.SetBotCallbackAnswer({ queryId: update.queryId, message: "\u5DF2\u53D6\u6D88" })); return; } @@ -6112,7 +6112,7 @@ async function handleDeleteConfirmCallback(client2, update, data) { const file = result.rows[0]; if (!file) { pendingDeleteConfirmations.delete(confirmId); - await client2.editMessage(update.peer, { message: update.msgId, text: "\u274C \u6587\u4EF6\u5DF2\u4E0D\u5B58\u5728\u6216\u4E0D\u5728\u5F53\u524D\u5B58\u50A8\u8303\u56F4\u5185\u3002", buttons: new Api4.ReplyInlineMarkup({ rows: [] }) }); + await client2.editMessage(update.peer, { message: Number(update.msgId), text: "\u274C \u6587\u4EF6\u5DF2\u4E0D\u5B58\u5728\u6216\u4E0D\u5728\u5F53\u524D\u5B58\u50A8\u8303\u56F4\u5185\u3002", buttons: new Api4.ReplyInlineMarkup({ rows: [] }) }); await client2.invoke(new Api4.messages.SetBotCallbackAnswer({ queryId: update.queryId, message: "\u6587\u4EF6\u4E0D\u5B58\u5728", alert: true })); return; } @@ -6123,7 +6123,7 @@ async function handleDeleteConfirmCallback(client2, update, data) { } await query("DELETE FROM files WHERE id = $1", [file.id]); pendingDeleteConfirmations.delete(confirmId); - await client2.editMessage(update.peer, { message: update.msgId, text: buildDeleteSuccess(file.name, file.id), buttons: new Api4.ReplyInlineMarkup({ rows: [] }) }); + await client2.editMessage(update.peer, { message: Number(update.msgId), text: buildDeleteSuccess(file.name, file.id), buttons: new Api4.ReplyInlineMarkup({ rows: [] }) }); await client2.invoke(new Api4.messages.SetBotCallbackAnswer({ queryId: update.queryId, message: "\u5DF2\u5220\u9664" })); } catch (error) { console.error("\u{1F916} \u786E\u8BA4\u5220\u9664\u6587\u4EF6\u5931\u8D25:", error); @@ -6312,7 +6312,7 @@ async function handlePathRulesCallback(client2, update, data) { return; } await client2.editMessage(update.peer, { - message: update.msgId, + message: Number(update.msgId), text: buildPathSettingsText(pathCenterState, chatKey), buttons: buildPathSettingsKeyboard(pathCenterState) }); @@ -6341,7 +6341,7 @@ async function handleDuplicateModeCallback(client2, update, data) { const mode = match[1]; await setSetting("duplicate_file_mode", mode); await client2.editMessage(update.peer, { - message: update.msgId, + message: Number(update.msgId), text: buildDuplicateModeText(mode), buttons: buildDuplicateModeKeyboard(mode) }); @@ -6374,7 +6374,7 @@ async function handleCleanupSettingsCallback(client2, update, data) { stopPeriodicCleanup(); } await client2.editMessage(update.peer, { - message: update.msgId, + message: Number(update.msgId), text: buildCleanupSettingsText(enabled), buttons: buildCleanupSettingsKeyboard(enabled) }); @@ -6398,7 +6398,7 @@ async function handleDownloadWorkersCallback(client2, update, data) { if (data === "dw_cancel") { const current = await getCurrentDownloadWorkers(); await client2.editMessage(update.peer, { - message: update.msgId, + message: Number(update.msgId), text: buildDownloadWorkersText(current), buttons: buildDownloadWorkersKeyboard(current) }); @@ -6410,7 +6410,7 @@ async function handleDownloadWorkersCallback(client2, update, data) { const workers = Number(setMatch[1]); if (workers >= 12) { await client2.editMessage(update.peer, { - message: update.msgId, + message: Number(update.msgId), text: [ `\u26A0\uFE0F **\u786E\u8BA4\u4F7F\u7528 ${workers} workers\uFF1F**`, "", @@ -6428,7 +6428,7 @@ async function handleDownloadWorkersCallback(client2, update, data) { } await setSetting("telegram_download_workers", String(workers)); await client2.editMessage(update.peer, { - message: update.msgId, + message: Number(update.msgId), text: `${buildDownloadWorkersText(workers)} \u2705 \u5DF2\u5207\u6362\u4E3A ${workers} workers\uFF0C\u540E\u7EED\u65B0\u4E0B\u8F7D\u4EFB\u52A1\u7ACB\u5373\u751F\u6548\u3002`, @@ -6442,7 +6442,7 @@ async function handleDownloadWorkersCallback(client2, update, data) { const workers = Number(confirmMatch[1]); await setSetting("telegram_download_workers", String(workers)); await client2.editMessage(update.peer, { - message: update.msgId, + message: Number(update.msgId), text: `${buildDownloadWorkersText(workers)} \u26A0\uFE0F \u5DF2\u786E\u8BA4\u5E76\u5207\u6362\u4E3A ${workers} workers\u3002\u82E5\u51FA\u73B0\u65AD\u6D41\u3001\u9650\u901F\u3001\u98CE\u63A7\u63D0\u793A\uFF0C\u8BF7\u7ACB\u5373\u964D\u56DE 4 \u6216 8\u3002`, @@ -6474,7 +6474,7 @@ async function handleFileConcurrencyCallback(client2, update, data) { const current = await getCurrentFileConcurrency(); setFileDownloadConcurrency(current); await client2.editMessage(update.peer, { - message: update.msgId, + message: Number(update.msgId), text: buildFileConcurrencyText(current), buttons: buildFileConcurrencyKeyboard(current) }); @@ -6486,7 +6486,7 @@ async function handleFileConcurrencyCallback(client2, update, data) { const concurrency = Number(setMatch[1]); if (concurrency === 4) { await client2.editMessage(update.peer, { - message: update.msgId, + message: Number(update.msgId), text: [ "\u26A0\uFE0F **\u786E\u8BA4\u540C\u65F6\u4E0B\u8F7D 4 \u4E2A\u6587\u4EF6\uFF1F**", "", @@ -6505,7 +6505,8 @@ async function handleFileConcurrencyCallback(client2, update, data) { await setSetting("telegram_file_download_concurrency", String(concurrency)); const normalized = setFileDownloadConcurrency(concurrency); await client2.editMessage(update.peer, { - message: `${buildFileConcurrencyText(normalized)} + message: Number(update.msgId), + text: `${buildFileConcurrencyText(normalized)} \u2705 \u5DF2\u5207\u6362\u4E3A\u540C\u65F6\u4E0B\u8F7D ${normalized} \u4E2A\u6587\u4EF6\u3002`, buttons: buildFileConcurrencyKeyboard(normalized) @@ -6518,7 +6519,8 @@ async function handleFileConcurrencyCallback(client2, update, data) { await setSetting("telegram_file_download_concurrency", "4"); const normalized = setFileDownloadConcurrency(4); await client2.editMessage(update.peer, { - message: `${buildFileConcurrencyText(normalized)} + message: Number(update.msgId), + text: `${buildFileConcurrencyText(normalized)} \u26A0\uFE0F \u5DF2\u786E\u8BA4\u5E76\u5207\u6362\u4E3A\u540C\u65F6\u4E0B\u8F7D 4 \u4E2A\u6587\u4EF6\u3002\u82E5\u51FA\u73B0\u9650\u6D41\u3001\u65AD\u6D41\u6216\u4E0A\u4F20\u5931\u8D25\uFF0C\u8BF7\u7ACB\u5373\u964D\u56DE 2 \u6216 3\u3002`, buttons: buildFileConcurrencyKeyboard(normalized) diff --git a/backend/src/services/telegramCommands.ts b/backend/src/services/telegramCommands.ts index b75a6af..83cf064 100644 --- a/backend/src/services/telegramCommands.ts +++ b/backend/src/services/telegramCommands.ts @@ -376,7 +376,7 @@ export async function handleStorageCleanupCallback(client: TelegramClient, updat const stats = await scanLocalDownloadFiles(); if (data === 'storage_clear_cancel') { await client.editMessage(update.peer, { - message: update.msgId, + message: Number(update.msgId), text: stats.count > 0 ? `已取消清理。当前本地下载文件:${stats.count} 个,占用 ${formatBytes(stats.totalSize)}。` : '已取消清理。当前没有本地下载文件。', buttons: buildStorageMaintenanceKeyboard(stats.count), }); @@ -386,7 +386,7 @@ export async function handleStorageCleanupCallback(client: TelegramClient, updat if (data === 'storage_clear_ask') { await client.editMessage(update.peer, { - message: update.msgId, + message: Number(update.msgId), text: [ '⚠️ **确认删除本地服务器全部下载文件?**', '', @@ -414,7 +414,7 @@ export async function handleStorageCleanupCallback(client: TelegramClient, updat } const after = await scanLocalDownloadFiles(); await client.editMessage(update.peer, { - message: update.msgId, + message: Number(update.msgId), text: [ '✅ **本地服务器下载文件已清理**', '', @@ -548,7 +548,7 @@ export async function handleDeleteConfirmCallback(client: TelegramClient, update } if (action === 'cancel') { pendingDeleteConfirmations.delete(confirmId); - await client.editMessage(update.peer, { message: update.msgId, text: `已取消删除:${pending.name}`, buttons: new Api.ReplyInlineMarkup({ rows: [] }) }); + await client.editMessage(update.peer, { message: Number(update.msgId), text: `已取消删除:${pending.name}`, buttons: new Api.ReplyInlineMarkup({ rows: [] }) }); await client.invoke(new Api.messages.SetBotCallbackAnswer({ queryId: update.queryId, message: '已取消' })); return; } @@ -558,14 +558,14 @@ export async function handleDeleteConfirmCallback(client: TelegramClient, update const file = result.rows[0]; if (!file) { pendingDeleteConfirmations.delete(confirmId); - await client.editMessage(update.peer, { message: update.msgId, text: '❌ 文件已不存在或不在当前存储范围内。', buttons: new Api.ReplyInlineMarkup({ rows: [] }) }); + await client.editMessage(update.peer, { message: Number(update.msgId), text: '❌ 文件已不存在或不在当前存储范围内。', buttons: new Api.ReplyInlineMarkup({ rows: [] }) }); await client.invoke(new Api.messages.SetBotCallbackAnswer({ queryId: update.queryId, message: '文件不存在', alert: true })); return; } try { await removePhysicalFile(file); } catch (err) { console.warn('🤖 文件物理删除失败或文件已不存在:', err); } await query('DELETE FROM files WHERE id = $1', [file.id]); pendingDeleteConfirmations.delete(confirmId); - await client.editMessage(update.peer, { message: update.msgId, text: buildDeleteSuccess(file.name, file.id), buttons: new Api.ReplyInlineMarkup({ rows: [] }) }); + await client.editMessage(update.peer, { message: Number(update.msgId), text: buildDeleteSuccess(file.name, file.id), buttons: new Api.ReplyInlineMarkup({ rows: [] }) }); await client.invoke(new Api.messages.SetBotCallbackAnswer({ queryId: update.queryId, message: '已删除' })); } catch (error) { console.error('🤖 确认删除文件失败:', error); @@ -749,7 +749,7 @@ export async function handlePathRulesCallback(client: TelegramClient, update: Ap } await client.editMessage(update.peer, { - message: update.msgId, + message: Number(update.msgId), text: buildPathSettingsText(pathCenterState, chatKey), buttons: buildPathSettingsKeyboard(pathCenterState), }); @@ -781,7 +781,7 @@ export async function handleDuplicateModeCallback(client: TelegramClient, update const mode = match[1] as DuplicateMode; await setSetting('duplicate_file_mode', mode); await client.editMessage(update.peer, { - message: update.msgId, + message: Number(update.msgId), text: buildDuplicateModeText(mode), buttons: buildDuplicateModeKeyboard(mode), }); @@ -817,7 +817,7 @@ export async function handleCleanupSettingsCallback(client: TelegramClient, upda stopPeriodicCleanup(); } await client.editMessage(update.peer, { - message: update.msgId, + message: Number(update.msgId), text: buildCleanupSettingsText(enabled), buttons: buildCleanupSettingsKeyboard(enabled), }); @@ -843,7 +843,7 @@ export async function handleDownloadWorkersCallback(client: TelegramClient, upda if (data === 'dw_cancel') { const current = await getCurrentDownloadWorkers(); await client.editMessage(update.peer, { - message: update.msgId, + message: Number(update.msgId), text: buildDownloadWorkersText(current), buttons: buildDownloadWorkersKeyboard(current), }); @@ -856,7 +856,7 @@ export async function handleDownloadWorkersCallback(client: TelegramClient, upda const workers = Number(setMatch[1]); if (workers >= 12) { await client.editMessage(update.peer, { - message: update.msgId, + message: Number(update.msgId), text: [ `⚠️ **确认使用 ${workers} workers?**`, '', @@ -875,7 +875,7 @@ export async function handleDownloadWorkersCallback(client: TelegramClient, upda await setSetting('telegram_download_workers', String(workers)); await client.editMessage(update.peer, { - message: update.msgId, + message: Number(update.msgId), text: `${buildDownloadWorkersText(workers)}\n\n✅ 已切换为 ${workers} workers,后续新下载任务立即生效。`, buttons: buildDownloadWorkersKeyboard(workers), }); @@ -888,7 +888,7 @@ export async function handleDownloadWorkersCallback(client: TelegramClient, upda const workers = Number(confirmMatch[1]); await setSetting('telegram_download_workers', String(workers)); await client.editMessage(update.peer, { - message: update.msgId, + message: Number(update.msgId), text: `${buildDownloadWorkersText(workers)}\n\n⚠️ 已确认并切换为 ${workers} workers。若出现断流、限速、风控提示,请立即降回 4 或 8。`, buttons: buildDownloadWorkersKeyboard(workers), }); @@ -920,7 +920,7 @@ export async function handleFileConcurrencyCallback(client: TelegramClient, upda const current = await getCurrentFileConcurrency(); setFileDownloadConcurrency(current); await client.editMessage(update.peer, { - message: update.msgId, + message: Number(update.msgId), text: buildFileConcurrencyText(current), buttons: buildFileConcurrencyKeyboard(current), }); @@ -933,7 +933,7 @@ export async function handleFileConcurrencyCallback(client: TelegramClient, upda const concurrency = Number(setMatch[1]); if (concurrency === 4) { await client.editMessage(update.peer, { - message: update.msgId, + message: Number(update.msgId), text: [ '⚠️ **确认同时下载 4 个文件?**', '', @@ -953,7 +953,8 @@ export async function handleFileConcurrencyCallback(client: TelegramClient, upda await setSetting('telegram_file_download_concurrency', String(concurrency)); const normalized = setFileDownloadConcurrency(concurrency); await client.editMessage(update.peer, { - message: `${buildFileConcurrencyText(normalized)}\n\n✅ 已切换为同时下载 ${normalized} 个文件。`, + message: Number(update.msgId), + text: `${buildFileConcurrencyText(normalized)}\n\n✅ 已切换为同时下载 ${normalized} 个文件。`, buttons: buildFileConcurrencyKeyboard(normalized), }); await client.invoke(new Api.messages.SetBotCallbackAnswer({ queryId: update.queryId, message: `已设置为 ${normalized}` })); @@ -965,7 +966,8 @@ export async function handleFileConcurrencyCallback(client: TelegramClient, upda await setSetting('telegram_file_download_concurrency', '4'); const normalized = setFileDownloadConcurrency(4); await client.editMessage(update.peer, { - message: `${buildFileConcurrencyText(normalized)}\n\n⚠️ 已确认并切换为同时下载 4 个文件。若出现限流、断流或上传失败,请立即降回 2 或 3。`, + message: Number(update.msgId), + text: `${buildFileConcurrencyText(normalized)}\n\n⚠️ 已确认并切换为同时下载 4 个文件。若出现限流、断流或上传失败,请立即降回 2 或 3。`, buttons: buildFileConcurrencyKeyboard(normalized), }); await client.invoke(new Api.messages.SetBotCallbackAnswer({ queryId: update.queryId, message: '已确认 4 个文件并发', alert: true })); diff --git a/dist/index.js b/dist/index.js index 763d786..fd4f6b2 100644 --- a/dist/index.js +++ b/dist/index.js @@ -5978,7 +5978,7 @@ async function handleStorageCleanupCallback(client2, update, data) { const stats = await scanLocalDownloadFiles(); if (data === "storage_clear_cancel") { await client2.editMessage(update.peer, { - message: update.msgId, + message: Number(update.msgId), text: stats.count > 0 ? `\u5DF2\u53D6\u6D88\u6E05\u7406\u3002\u5F53\u524D\u672C\u5730\u4E0B\u8F7D\u6587\u4EF6\uFF1A${stats.count} \u4E2A\uFF0C\u5360\u7528 ${formatBytes(stats.totalSize)}\u3002` : "\u5DF2\u53D6\u6D88\u6E05\u7406\u3002\u5F53\u524D\u6CA1\u6709\u672C\u5730\u4E0B\u8F7D\u6587\u4EF6\u3002", buttons: buildStorageMaintenanceKeyboard(stats.count) }); @@ -5987,7 +5987,7 @@ async function handleStorageCleanupCallback(client2, update, data) { } if (data === "storage_clear_ask") { await client2.editMessage(update.peer, { - message: update.msgId, + message: Number(update.msgId), text: [ "\u26A0\uFE0F **\u786E\u8BA4\u5220\u9664\u672C\u5730\u670D\u52A1\u5668\u5168\u90E8\u4E0B\u8F7D\u6587\u4EF6\uFF1F**", "", @@ -6014,7 +6014,7 @@ async function handleStorageCleanupCallback(client2, update, data) { } const after = await scanLocalDownloadFiles(); await client2.editMessage(update.peer, { - message: update.msgId, + message: Number(update.msgId), text: [ "\u2705 **\u672C\u5730\u670D\u52A1\u5668\u4E0B\u8F7D\u6587\u4EF6\u5DF2\u6E05\u7406**", "", @@ -6102,7 +6102,7 @@ async function handleDeleteConfirmCallback(client2, update, data) { } if (action === "cancel") { pendingDeleteConfirmations.delete(confirmId); - await client2.editMessage(update.peer, { message: update.msgId, text: `\u5DF2\u53D6\u6D88\u5220\u9664\uFF1A${pending.name}`, buttons: new Api4.ReplyInlineMarkup({ rows: [] }) }); + await client2.editMessage(update.peer, { message: Number(update.msgId), text: `\u5DF2\u53D6\u6D88\u5220\u9664\uFF1A${pending.name}`, buttons: new Api4.ReplyInlineMarkup({ rows: [] }) }); await client2.invoke(new Api4.messages.SetBotCallbackAnswer({ queryId: update.queryId, message: "\u5DF2\u53D6\u6D88" })); return; } @@ -6112,7 +6112,7 @@ async function handleDeleteConfirmCallback(client2, update, data) { const file = result.rows[0]; if (!file) { pendingDeleteConfirmations.delete(confirmId); - await client2.editMessage(update.peer, { message: update.msgId, text: "\u274C \u6587\u4EF6\u5DF2\u4E0D\u5B58\u5728\u6216\u4E0D\u5728\u5F53\u524D\u5B58\u50A8\u8303\u56F4\u5185\u3002", buttons: new Api4.ReplyInlineMarkup({ rows: [] }) }); + await client2.editMessage(update.peer, { message: Number(update.msgId), text: "\u274C \u6587\u4EF6\u5DF2\u4E0D\u5B58\u5728\u6216\u4E0D\u5728\u5F53\u524D\u5B58\u50A8\u8303\u56F4\u5185\u3002", buttons: new Api4.ReplyInlineMarkup({ rows: [] }) }); await client2.invoke(new Api4.messages.SetBotCallbackAnswer({ queryId: update.queryId, message: "\u6587\u4EF6\u4E0D\u5B58\u5728", alert: true })); return; } @@ -6123,7 +6123,7 @@ async function handleDeleteConfirmCallback(client2, update, data) { } await query("DELETE FROM files WHERE id = $1", [file.id]); pendingDeleteConfirmations.delete(confirmId); - await client2.editMessage(update.peer, { message: update.msgId, text: buildDeleteSuccess(file.name, file.id), buttons: new Api4.ReplyInlineMarkup({ rows: [] }) }); + await client2.editMessage(update.peer, { message: Number(update.msgId), text: buildDeleteSuccess(file.name, file.id), buttons: new Api4.ReplyInlineMarkup({ rows: [] }) }); await client2.invoke(new Api4.messages.SetBotCallbackAnswer({ queryId: update.queryId, message: "\u5DF2\u5220\u9664" })); } catch (error) { console.error("\u{1F916} \u786E\u8BA4\u5220\u9664\u6587\u4EF6\u5931\u8D25:", error); @@ -6312,7 +6312,7 @@ async function handlePathRulesCallback(client2, update, data) { return; } await client2.editMessage(update.peer, { - message: update.msgId, + message: Number(update.msgId), text: buildPathSettingsText(pathCenterState, chatKey), buttons: buildPathSettingsKeyboard(pathCenterState) }); @@ -6341,7 +6341,7 @@ async function handleDuplicateModeCallback(client2, update, data) { const mode = match[1]; await setSetting("duplicate_file_mode", mode); await client2.editMessage(update.peer, { - message: update.msgId, + message: Number(update.msgId), text: buildDuplicateModeText(mode), buttons: buildDuplicateModeKeyboard(mode) }); @@ -6374,7 +6374,7 @@ async function handleCleanupSettingsCallback(client2, update, data) { stopPeriodicCleanup(); } await client2.editMessage(update.peer, { - message: update.msgId, + message: Number(update.msgId), text: buildCleanupSettingsText(enabled), buttons: buildCleanupSettingsKeyboard(enabled) }); @@ -6398,7 +6398,7 @@ async function handleDownloadWorkersCallback(client2, update, data) { if (data === "dw_cancel") { const current = await getCurrentDownloadWorkers(); await client2.editMessage(update.peer, { - message: update.msgId, + message: Number(update.msgId), text: buildDownloadWorkersText(current), buttons: buildDownloadWorkersKeyboard(current) }); @@ -6410,7 +6410,7 @@ async function handleDownloadWorkersCallback(client2, update, data) { const workers = Number(setMatch[1]); if (workers >= 12) { await client2.editMessage(update.peer, { - message: update.msgId, + message: Number(update.msgId), text: [ `\u26A0\uFE0F **\u786E\u8BA4\u4F7F\u7528 ${workers} workers\uFF1F**`, "", @@ -6428,7 +6428,7 @@ async function handleDownloadWorkersCallback(client2, update, data) { } await setSetting("telegram_download_workers", String(workers)); await client2.editMessage(update.peer, { - message: update.msgId, + message: Number(update.msgId), text: `${buildDownloadWorkersText(workers)} \u2705 \u5DF2\u5207\u6362\u4E3A ${workers} workers\uFF0C\u540E\u7EED\u65B0\u4E0B\u8F7D\u4EFB\u52A1\u7ACB\u5373\u751F\u6548\u3002`, @@ -6442,7 +6442,7 @@ async function handleDownloadWorkersCallback(client2, update, data) { const workers = Number(confirmMatch[1]); await setSetting("telegram_download_workers", String(workers)); await client2.editMessage(update.peer, { - message: update.msgId, + message: Number(update.msgId), text: `${buildDownloadWorkersText(workers)} \u26A0\uFE0F \u5DF2\u786E\u8BA4\u5E76\u5207\u6362\u4E3A ${workers} workers\u3002\u82E5\u51FA\u73B0\u65AD\u6D41\u3001\u9650\u901F\u3001\u98CE\u63A7\u63D0\u793A\uFF0C\u8BF7\u7ACB\u5373\u964D\u56DE 4 \u6216 8\u3002`, @@ -6474,7 +6474,7 @@ async function handleFileConcurrencyCallback(client2, update, data) { const current = await getCurrentFileConcurrency(); setFileDownloadConcurrency(current); await client2.editMessage(update.peer, { - message: update.msgId, + message: Number(update.msgId), text: buildFileConcurrencyText(current), buttons: buildFileConcurrencyKeyboard(current) }); @@ -6486,7 +6486,7 @@ async function handleFileConcurrencyCallback(client2, update, data) { const concurrency = Number(setMatch[1]); if (concurrency === 4) { await client2.editMessage(update.peer, { - message: update.msgId, + message: Number(update.msgId), text: [ "\u26A0\uFE0F **\u786E\u8BA4\u540C\u65F6\u4E0B\u8F7D 4 \u4E2A\u6587\u4EF6\uFF1F**", "", @@ -6505,7 +6505,8 @@ async function handleFileConcurrencyCallback(client2, update, data) { await setSetting("telegram_file_download_concurrency", String(concurrency)); const normalized = setFileDownloadConcurrency(concurrency); await client2.editMessage(update.peer, { - message: `${buildFileConcurrencyText(normalized)} + message: Number(update.msgId), + text: `${buildFileConcurrencyText(normalized)} \u2705 \u5DF2\u5207\u6362\u4E3A\u540C\u65F6\u4E0B\u8F7D ${normalized} \u4E2A\u6587\u4EF6\u3002`, buttons: buildFileConcurrencyKeyboard(normalized) @@ -6518,7 +6519,8 @@ async function handleFileConcurrencyCallback(client2, update, data) { await setSetting("telegram_file_download_concurrency", "4"); const normalized = setFileDownloadConcurrency(4); await client2.editMessage(update.peer, { - message: `${buildFileConcurrencyText(normalized)} + message: Number(update.msgId), + text: `${buildFileConcurrencyText(normalized)} \u26A0\uFE0F \u5DF2\u786E\u8BA4\u5E76\u5207\u6362\u4E3A\u540C\u65F6\u4E0B\u8F7D 4 \u4E2A\u6587\u4EF6\u3002\u82E5\u51FA\u73B0\u9650\u6D41\u3001\u65AD\u6D41\u6216\u4E0A\u4F20\u5931\u8D25\uFF0C\u8BF7\u7ACB\u5373\u964D\u56DE 2 \u6216 3\u3002`, buttons: buildFileConcurrencyKeyboard(normalized)