@will-17173/telegram-cli 0.1.1 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (111) hide show
  1. package/README.md +169 -10
  2. package/README.zh-CN.md +169 -11
  3. package/dist/cli/app.js +3 -1
  4. package/dist/cli/app.js.map +1 -1
  5. package/dist/commands/account.js +51 -5
  6. package/dist/commands/account.js.map +1 -1
  7. package/dist/commands/config.js +96 -13
  8. package/dist/commands/config.js.map +1 -1
  9. package/dist/commands/group-write.js +88 -0
  10. package/dist/commands/group-write.js.map +1 -0
  11. package/dist/commands/group.js +121 -0
  12. package/dist/commands/group.js.map +1 -0
  13. package/dist/commands/telegram-runner.js +84 -0
  14. package/dist/commands/telegram-runner.js.map +1 -0
  15. package/dist/commands/telegram.js +154 -172
  16. package/dist/commands/telegram.js.map +1 -1
  17. package/dist/config/credential-store.js +76 -22
  18. package/dist/config/credential-store.js.map +1 -1
  19. package/dist/config/env.js +12 -1
  20. package/dist/config/env.js.map +1 -1
  21. package/dist/group-commands/catalog.js +69 -0
  22. package/dist/group-commands/catalog.js.map +1 -0
  23. package/dist/group-commands/executor.js +93 -0
  24. package/dist/group-commands/executor.js.map +1 -0
  25. package/dist/group-commands/parser.js +268 -0
  26. package/dist/group-commands/parser.js.map +1 -0
  27. package/dist/group-commands/tokenize.js +51 -0
  28. package/dist/group-commands/tokenize.js.map +1 -0
  29. package/dist/group-commands/types.js +2 -0
  30. package/dist/group-commands/types.js.map +1 -0
  31. package/dist/listen-commands/catalog.js +61 -0
  32. package/dist/listen-commands/catalog.js.map +1 -0
  33. package/dist/listen-commands/dispatch.js +46 -0
  34. package/dist/listen-commands/dispatch.js.map +1 -0
  35. package/dist/listen-commands/match.js +113 -0
  36. package/dist/listen-commands/match.js.map +1 -0
  37. package/dist/presenters/group.js +130 -0
  38. package/dist/presenters/group.js.map +1 -0
  39. package/dist/presenters/human.js +29 -9
  40. package/dist/presenters/human.js.map +1 -1
  41. package/dist/presenters/ink/display-width.js +45 -7
  42. package/dist/presenters/ink/display-width.js.map +1 -1
  43. package/dist/presenters/ink/group-command-confirm.js +13 -0
  44. package/dist/presenters/ink/group-command-confirm.js.map +1 -0
  45. package/dist/presenters/ink/group-command-result.js +21 -0
  46. package/dist/presenters/ink/group-command-result.js.map +1 -0
  47. package/dist/presenters/ink/listen-command-menu.js +38 -0
  48. package/dist/presenters/ink/listen-command-menu.js.map +1 -0
  49. package/dist/presenters/ink/listen-scroll.js +5 -1
  50. package/dist/presenters/ink/listen-scroll.js.map +1 -1
  51. package/dist/presenters/ink/listen.js +806 -171
  52. package/dist/presenters/ink/listen.js.map +1 -1
  53. package/dist/presenters/ink/use-group-command.js +125 -0
  54. package/dist/presenters/ink/use-group-command.js.map +1 -0
  55. package/dist/presenters/listen-message.js +25 -241
  56. package/dist/presenters/listen-message.js.map +1 -1
  57. package/dist/presenters/logical-message.js +78 -0
  58. package/dist/presenters/logical-message.js.map +1 -0
  59. package/dist/services/attachment-download.js +5 -2
  60. package/dist/services/attachment-download.js.map +1 -1
  61. package/dist/services/auto-download-coordinator.js +214 -0
  62. package/dist/services/auto-download-coordinator.js.map +1 -0
  63. package/dist/services/group-service.js +164 -0
  64. package/dist/services/group-service.js.map +1 -0
  65. package/dist/services/group-write-service.js +165 -0
  66. package/dist/services/group-write-service.js.map +1 -0
  67. package/dist/services/listen-album-aggregator.js +9 -29
  68. package/dist/services/listen-album-aggregator.js.map +1 -1
  69. package/dist/services/listen-attachment.js +265 -0
  70. package/dist/services/listen-attachment.js.map +1 -0
  71. package/dist/services/listen-composer-command.js +102 -0
  72. package/dist/services/listen-composer-command.js.map +1 -0
  73. package/dist/services/listen-reply-resolver.js +126 -0
  74. package/dist/services/listen-reply-resolver.js.map +1 -0
  75. package/dist/services/message-service.js +54 -4
  76. package/dist/services/message-service.js.map +1 -1
  77. package/dist/services/query-service.js +95 -34
  78. package/dist/services/query-service.js.map +1 -1
  79. package/dist/services/reply-context.js +29 -0
  80. package/dist/services/reply-context.js.map +1 -0
  81. package/dist/services/sync-service.js +18 -6
  82. package/dist/services/sync-service.js.map +1 -1
  83. package/dist/storage/message-db.js +241 -5
  84. package/dist/storage/message-db.js.map +1 -1
  85. package/dist/telegram/client-factory.js +4 -2
  86. package/dist/telegram/client-factory.js.map +1 -1
  87. package/dist/telegram/fake-group-management.js +381 -0
  88. package/dist/telegram/fake-group-management.js.map +1 -0
  89. package/dist/telegram/group-types.js +59 -0
  90. package/dist/telegram/group-types.js.map +1 -0
  91. package/dist/telegram/group-write-types.js +2 -0
  92. package/dist/telegram/group-write-types.js.map +1 -0
  93. package/dist/telegram/mtcute-client.js +74 -9
  94. package/dist/telegram/mtcute-client.js.map +1 -1
  95. package/dist/telegram/mtcute-group-helpers.js +56 -0
  96. package/dist/telegram/mtcute-group-helpers.js.map +1 -0
  97. package/dist/telegram/mtcute-group-invites.js +82 -0
  98. package/dist/telegram/mtcute-group-invites.js.map +1 -0
  99. package/dist/telegram/mtcute-group-management.js +493 -0
  100. package/dist/telegram/mtcute-group-management.js.map +1 -0
  101. package/dist/telegram/mtcute-group-members.js +118 -0
  102. package/dist/telegram/mtcute-group-members.js.map +1 -0
  103. package/dist/telegram/mtcute-group-settings.js +146 -0
  104. package/dist/telegram/mtcute-group-settings.js.map +1 -0
  105. package/dist/telegram/mtcute-group-topics.js +63 -0
  106. package/dist/telegram/mtcute-group-topics.js.map +1 -0
  107. package/dist/telegram/proxy.js +27 -0
  108. package/dist/telegram/proxy.js.map +1 -0
  109. package/dist/telegram/raw-message.js +46 -0
  110. package/dist/telegram/raw-message.js.map +1 -0
  111. package/package.json +9 -1
@@ -0,0 +1,84 @@
1
+ import { createTelegramClient } from '../telegram/client-factory.js';
2
+ import { runWithAccountContext } from './account-options.js';
3
+ const BENIGN_UPDATE_WARNINGS = [
4
+ 'pts_before does not match local_pts',
5
+ 'local pts not available for postponed updateNewChannelMessage',
6
+ 'error fetching common difference',
7
+ 'error fetching difference for',
8
+ 'Session is reset',
9
+ 'MtprotoSession.resetState',
10
+ ];
11
+ export async function runTelegramCommand(options, handler) {
12
+ await runWithAccountContext(options, async (context) => {
13
+ const restoreStdoutWarnings = hideBenignUpdateWarnings(process.stdout);
14
+ const restoreStderrWarnings = hideBenignUpdateWarnings(process.stderr);
15
+ let client;
16
+ try {
17
+ client = createTelegramClient(context.sessionPath);
18
+ }
19
+ catch (error) {
20
+ restoreStdoutWarnings();
21
+ restoreStderrWarnings();
22
+ return commandFailure('config_error', error);
23
+ }
24
+ try {
25
+ return await handler(client, context);
26
+ }
27
+ catch (error) {
28
+ const authError = toAuthSessionError(error, context.account.name);
29
+ return authError ?? commandFailure('telegram_error', error);
30
+ }
31
+ finally {
32
+ restoreStdoutWarnings();
33
+ restoreStderrWarnings();
34
+ await client.close().catch(() => undefined);
35
+ }
36
+ });
37
+ }
38
+ export function hideBenignUpdateWarnings(stream) {
39
+ const write = stream.write;
40
+ stream.write = ((chunk, encoding, cb) => {
41
+ const rendered = typeof chunk === 'string' ? chunk : Buffer.from(chunk).toString();
42
+ const isBenignUpdateWarning = BENIGN_UPDATE_WARNINGS.some((warning) => rendered.includes(warning))
43
+ || (rendered.includes('error fetching difference for') && rendered.includes('400 CHANNEL_INVALID'));
44
+ if (isBenignUpdateWarning) {
45
+ return true;
46
+ }
47
+ return write.call(stream, chunk, encoding, cb);
48
+ });
49
+ return () => {
50
+ stream.write = write;
51
+ };
52
+ }
53
+ function toAuthSessionError(error, accountName) {
54
+ if (isAuthKeyUnregistered(error)) {
55
+ return {
56
+ ok: false,
57
+ error: {
58
+ code: 'telegram_account_session_expired',
59
+ message: `Session for account "${accountName}" is no longer valid. Re-add the account: tg account remove ${accountName} --force && tg account add.`,
60
+ },
61
+ };
62
+ }
63
+ return null;
64
+ }
65
+ function isAuthKeyUnregistered(error) {
66
+ if (error === null || typeof error !== 'object')
67
+ return false;
68
+ const candidate = error;
69
+ const text = typeof candidate.text === 'string'
70
+ ? candidate.text
71
+ : undefined;
72
+ if (text === 'AUTH_KEY_UNREGISTERED')
73
+ return true;
74
+ const code = typeof candidate.code === 'number' ? candidate.code : undefined;
75
+ const message = typeof candidate.message === 'string' ? candidate.message : '';
76
+ return message.includes('AUTH_KEY_UNREGISTERED') && code === 401;
77
+ }
78
+ function commandFailure(code, error) {
79
+ return { ok: false, error: { code, message: errorMessage(error) } };
80
+ }
81
+ function errorMessage(error) {
82
+ return error instanceof Error ? error.message : String(error);
83
+ }
84
+ //# sourceMappingURL=telegram-runner.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"telegram-runner.js","sourceRoot":"","sources":["../../src/commands/telegram-runner.ts"],"names":[],"mappings":"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"}
@@ -3,41 +3,36 @@ import { createTelegramClient } from '../telegram/client-factory.js';
3
3
  import { MessageService } from '../services/message-service.js';
4
4
  import { SyncService } from '../services/sync-service.js';
5
5
  import { ListenAlbumAggregator } from '../services/listen-album-aggregator.js';
6
+ import { AutoDownloadCoordinator } from '../services/auto-download-coordinator.js';
6
7
  import { actionDetail, chatTable, recordDetail, syncSummary, userDetail } from '../presenters/human.js';
7
8
  import { formatListenLine } from '../presenters/listen-message.js';
8
9
  import { renderInteractiveListen } from '../presenters/ink/listen.js';
9
10
  import { runWithAccountContext } from './account-options.js';
11
+ import { hideBenignUpdateWarnings, runTelegramCommand } from './telegram-runner.js';
12
+ import { createListenReplyResolver } from '../services/listen-reply-resolver.js';
10
13
  export function registerTelegramCommands(app) {
11
14
  app.command('status')
12
15
  .description('Show Telegram authentication status')
13
16
  .option('--json')
14
17
  .option('--yaml')
15
18
  .action(async (options) => {
16
- await renderTelegramResult(options, async (client) => {
17
- try {
18
- const user = await client.getCurrentUser();
19
- return {
20
- ok: true,
21
- data: {
22
- authenticated: true,
23
- user: normalizeTelegramUser(user),
24
- },
25
- human: {
26
- kind: 'summary',
27
- title: 'Telegram status',
28
- fields: [
29
- { label: 'Authenticated', value: 'Yes', tone: 'success' },
30
- ...userDetail(normalizeTelegramUser(user)).fields,
31
- ],
32
- },
33
- };
34
- }
35
- catch (error) {
36
- return {
37
- ok: false,
38
- error: { code: 'auth_error', message: errorMessage(error) },
39
- };
40
- }
19
+ await runTelegramCommand(options, async (client) => {
20
+ const user = await client.getCurrentUser();
21
+ return {
22
+ ok: true,
23
+ data: {
24
+ authenticated: true,
25
+ user: normalizeTelegramUser(user),
26
+ },
27
+ human: {
28
+ kind: 'summary',
29
+ title: 'Telegram status',
30
+ fields: [
31
+ { label: 'Authenticated', value: 'Yes', tone: 'success' },
32
+ ...userDetail(normalizeTelegramUser(user)).fields,
33
+ ],
34
+ },
35
+ };
41
36
  });
42
37
  });
43
38
  app.command('whoami')
@@ -45,21 +40,13 @@ export function registerTelegramCommands(app) {
45
40
  .option('--json')
46
41
  .option('--yaml')
47
42
  .action(async (options) => {
48
- await renderTelegramResult(options, async (client) => {
49
- try {
50
- const user = normalizeTelegramUser(await client.getCurrentUser());
51
- return {
52
- ok: true,
53
- data: { user },
54
- human: userDetail(user),
55
- };
56
- }
57
- catch (error) {
58
- return {
59
- ok: false,
60
- error: { code: 'auth_error', message: errorMessage(error) },
61
- };
62
- }
43
+ await runTelegramCommand(options, async (client) => {
44
+ const user = normalizeTelegramUser(await client.getCurrentUser());
45
+ return {
46
+ ok: true,
47
+ data: { user },
48
+ human: userDetail(user),
49
+ };
63
50
  });
64
51
  });
65
52
  app.command('chats')
@@ -68,7 +55,7 @@ export function registerTelegramCommands(app) {
68
55
  .option('--json')
69
56
  .option('--yaml')
70
57
  .action(async (options) => {
71
- await renderTelegramResult(options, async (client) => {
58
+ await runTelegramCommand(options, async (client) => {
72
59
  const chats = await client.listChats(options.type);
73
60
  return { ok: true, data: chats, human: chatTable(chats) };
74
61
  });
@@ -77,21 +64,25 @@ export function registerTelegramCommands(app) {
77
64
  .description('Fetch chat history and store it locally')
78
65
  .argument('<chat>')
79
66
  .option('-n, --limit <limit>', 'Max messages to fetch', '1000')
67
+ .option('--delay <delay>', 'Seconds between history pages', '1')
80
68
  .option('--json')
81
69
  .option('--yaml')
82
70
  .action(async (chat, options) => {
83
71
  const limit = Number.parseInt(options.limit ?? '0', 10);
84
- await renderSyncResult(options, async (service) => service.history({ chat, limit }));
72
+ const pageDelay = parsePageDelay(options.delay);
73
+ await renderSyncResult(options, async (service) => service.history({ chat, limit, pageDelay }));
85
74
  });
86
75
  app.command('sync')
87
76
  .description('Sync new messages from a Telegram chat')
88
77
  .argument('<chat>')
89
78
  .option('-n, --limit <limit>', 'Max messages to fetch', '5000')
79
+ .option('--delay <delay>', 'Seconds between history pages', '1')
90
80
  .option('--json')
91
81
  .option('--yaml')
92
82
  .action(async (chat, options) => {
93
83
  const limit = Number.parseInt(options.limit ?? '0', 10);
94
- await renderSyncResult(options, async (service) => service.sync({ chat, limit }));
84
+ const pageDelay = parsePageDelay(options.delay);
85
+ await renderSyncResult(options, async (service) => service.sync({ chat, limit, pageDelay }));
95
86
  });
96
87
  app.command('sync-all')
97
88
  .description('Sync messages from all Telegram chats')
@@ -138,7 +129,7 @@ export function registerTelegramCommands(app) {
138
129
  .option('--json')
139
130
  .option('--yaml')
140
131
  .action(async (chat, options) => {
141
- await renderTelegramResult(options, async (client) => {
132
+ await runTelegramCommand(options, async (client) => {
142
133
  const info = await client.getChatInfo(parseChat(chat));
143
134
  if (!info)
144
135
  return { ok: false, error: { code: 'chat_not_found', message: `Chat '${chat}' not found on Telegram.` } };
@@ -148,16 +139,18 @@ export function registerTelegramCommands(app) {
148
139
  app.command('send')
149
140
  .description('Send a message to a Telegram chat')
150
141
  .argument('<chat>')
151
- .argument('<message>')
142
+ .argument('[message]')
143
+ .option('-f, --file <path>', 'File to attach (repeatable)', collectOption, [])
152
144
  .option('-r, --reply <reply>', 'Message ID to reply to')
153
145
  .option('--no-preview')
154
146
  .option('--json')
155
147
  .option('--yaml')
156
148
  .action(async (chat, message, options) => {
157
- const reply = options.reply == null ? undefined : Number.parseInt(options.reply, 10);
149
+ const reply = options.reply == null ? undefined : Number(options.reply);
158
150
  await renderMessageResult(options, 'Message sent', (service) => service.send({
159
151
  chat,
160
152
  message,
153
+ files: options.file,
161
154
  reply,
162
155
  linkPreview: options.preview,
163
156
  }));
@@ -198,12 +191,14 @@ export function registerTelegramCommands(app) {
198
191
  .option('--retry-seconds <seconds>', 'Reconnect delay', '5')
199
192
  .option('--send-to <chat>', 'Set default outgoing chat for interactive mode')
200
193
  .option('--no-media', 'Hide attachment summary for incoming messages')
194
+ .option('--auto-download', 'Download incoming attachments automatically')
201
195
  .option('--no-interactive', 'Use plain text listen output')
202
196
  .action(async (chats, options) => {
203
197
  const persist = Boolean(options.persist);
204
198
  const retrySeconds = Number.parseFloat(options.retrySeconds ?? '5');
205
199
  const parsedChats = parseChats(chats)?.map(parseChat);
206
200
  const showMedia = options.media !== false;
201
+ const autoDownload = Boolean(options.autoDownload);
207
202
  const showChatName = parsedChats == null;
208
203
  const useInteractive = options.interactive !== false && process.stdin.isTTY === true && process.stdout.isTTY === true;
209
204
  const sendTo = options.sendTo == null ? resolveSingleSendTarget(parsedChats) : parseChat(options.sendTo);
@@ -211,14 +206,9 @@ export function registerTelegramCommands(app) {
211
206
  const seenMessageOrder = [];
212
207
  const controller = new AbortController();
213
208
  const stopListening = () => controller.abort();
214
- const restoreUpdateWarnings = hideBenignUpdateWarnings(process.stdout.write.bind(process.stdout), process.stdout);
215
- const restoreUpdateErrors = hideBenignUpdateWarnings(process.stderr.write.bind(process.stderr), process.stderr);
216
- const albumAggregator = new ListenAlbumAggregator({
217
- emit: (messages) => process.stdout.write(formatListenLine(messages, {
218
- showMedia,
219
- showChatName,
220
- })),
221
- });
209
+ const restoreUpdateWarnings = hideBenignUpdateWarnings(process.stdout);
210
+ const restoreUpdateErrors = hideBenignUpdateWarnings(process.stderr);
211
+ let autoDownloader;
222
212
  process.on('SIGINT', stopListening);
223
213
  process.on('SIGTERM', stopListening);
224
214
  try {
@@ -226,11 +216,13 @@ export function registerTelegramCommands(app) {
226
216
  const createClient = () => createTelegramClient(context.sessionPath);
227
217
  if (useInteractive) {
228
218
  await renderInteractiveListen({
219
+ dbPath: context.dbPath,
229
220
  chats: parsedChats,
230
221
  persist,
231
222
  retrySeconds,
232
223
  sendTo,
233
224
  showMedia,
225
+ autoDownload,
234
226
  showChatName,
235
227
  createClient,
236
228
  stopSignal: controller.signal,
@@ -238,47 +230,100 @@ export function registerTelegramCommands(app) {
238
230
  });
239
231
  return;
240
232
  }
241
- while (true) {
242
- const client = createClient();
243
- let retry = false;
244
- try {
245
- const result = await client.listen({
246
- chats: parsedChats,
247
- signal: controller.signal,
248
- onMessage: (message) => {
249
- const key = `${message.chat_id}:${message.msg_id}`;
250
- if (seenMessages.has(key))
251
- return;
252
- seenMessages.add(key);
253
- seenMessageOrder.push(key);
254
- if (seenMessages.size > 5000) {
255
- const oldest = seenMessageOrder.shift();
256
- if (oldest != null)
257
- seenMessages.delete(oldest);
258
- }
259
- albumAggregator.add(message);
260
- },
233
+ const replyResolver = createListenReplyResolver(context.dbPath);
234
+ let listenOutputError;
235
+ const albumAggregator = new ListenAlbumAggregator({
236
+ emit: (messages) => {
237
+ const replyContext = replyResolver.resolve(messages);
238
+ process.stdout.write(formatListenLine(messages, {
239
+ showMedia,
240
+ showChatName,
241
+ replyContext,
242
+ }));
243
+ replyResolver.remember(messages);
244
+ },
245
+ onError: (error) => {
246
+ listenOutputError ??= error;
247
+ controller.abort();
248
+ },
249
+ });
250
+ try {
251
+ if (autoDownload) {
252
+ autoDownloader = new AutoDownloadCoordinator({
253
+ onEvent: printAutoDownloadEvent,
261
254
  });
262
- if (!persist || result === 'stopped')
263
- break;
264
- if (result === 'disconnected') {
255
+ }
256
+ while (true) {
257
+ const client = createClient();
258
+ let retry = false;
259
+ let clientClosed = false;
260
+ const closeClient = async () => {
261
+ if (clientClosed)
262
+ return;
263
+ clientClosed = true;
264
+ await client.close().catch(() => undefined);
265
+ };
266
+ autoDownloader?.setClient(client);
267
+ try {
268
+ const result = await client.listen({
269
+ chats: parsedChats,
270
+ signal: controller.signal,
271
+ onMessage: (message) => {
272
+ const key = `${message.chat_id}:${message.msg_id}`;
273
+ if (seenMessages.has(key))
274
+ return;
275
+ seenMessages.add(key);
276
+ seenMessageOrder.push(key);
277
+ if (seenMessages.size > 5000) {
278
+ const oldest = seenMessageOrder.shift();
279
+ if (oldest != null)
280
+ seenMessages.delete(oldest);
281
+ }
282
+ autoDownloader?.enqueue(message);
283
+ albumAggregator.add(message);
284
+ },
285
+ });
286
+ if (!persist || result === 'stopped')
287
+ break;
288
+ if (result === 'disconnected')
289
+ retry = true;
290
+ }
291
+ catch (error) {
292
+ if (!persist)
293
+ throw error;
265
294
  retry = true;
266
295
  }
296
+ finally {
297
+ albumAggregator.flush();
298
+ if (autoDownloader != null) {
299
+ if (controller.signal.aborted) {
300
+ autoDownloader.stop();
301
+ await closeClient();
302
+ await autoDownloader.waitForActive();
303
+ }
304
+ else if (retry) {
305
+ autoDownloader.setClient(null);
306
+ await autoDownloader.waitForActive();
307
+ }
308
+ else {
309
+ await autoDownloader.waitForIdle();
310
+ autoDownloader.setClient(null);
311
+ }
312
+ }
313
+ await closeClient();
314
+ }
315
+ if (retry) {
316
+ await sleep(retrySeconds);
317
+ continue;
318
+ }
319
+ break;
267
320
  }
268
- catch (error) {
269
- if (!persist)
270
- throw error;
271
- retry = true;
272
- }
273
- finally {
274
- albumAggregator.flush();
275
- await client.close().catch(() => undefined);
276
- }
277
- if (retry) {
278
- await sleep(retrySeconds);
279
- continue;
280
- }
281
- break;
321
+ if (listenOutputError != null)
322
+ throw listenOutputError;
323
+ }
324
+ finally {
325
+ albumAggregator.dispose();
326
+ replyResolver.close();
282
327
  }
283
328
  });
284
329
  }
@@ -287,11 +332,22 @@ export function registerTelegramCommands(app) {
287
332
  process.off('SIGTERM', stopListening);
288
333
  restoreUpdateWarnings();
289
334
  restoreUpdateErrors();
290
- albumAggregator.dispose();
335
+ autoDownloader?.stop();
291
336
  }
292
337
  process.stdout.write('listening completed\n');
293
338
  });
294
339
  }
340
+ function collectOption(value, previous) {
341
+ return [...previous, value];
342
+ }
343
+ function printAutoDownloadEvent(event) {
344
+ if (event.status === 'completed') {
345
+ process.stdout.write(`downloaded: ${event.path}\n`);
346
+ }
347
+ else if (event.status === 'failed') {
348
+ process.stdout.write(`download failed: ${event.key.split(':').slice(0, -1).join(':')}: ${event.error}\n`);
349
+ }
350
+ }
295
351
  function parseChats(values) {
296
352
  if (!values || values.length === 0)
297
353
  return undefined;
@@ -300,12 +356,16 @@ function parseChats(values) {
300
356
  function resolveSingleSendTarget(chats) {
301
357
  return chats?.length === 1 ? chats[0] : undefined;
302
358
  }
359
+ function parsePageDelay(value) {
360
+ const raw = value ?? '0';
361
+ return raw.trim() === '' ? Number.NaN : Number(raw);
362
+ }
303
363
  function parseChat(chat) {
304
364
  const parsed = Number.parseInt(chat, 10);
305
365
  return Number.isNaN(parsed) || String(parsed) !== chat.trim() ? chat : parsed;
306
366
  }
307
367
  async function renderSyncResult(options, handler) {
308
- await renderTelegramResult(options, async (client, context) => {
368
+ await runTelegramCommand(options, async (client, context) => {
309
369
  const result = await runWithSync(client, context.dbPath, handler);
310
370
  return result.ok && result.human == null
311
371
  ? { ...result, human: syncSummary(result.data) }
@@ -321,30 +381,8 @@ async function runWithSync(client, dbPath, handler) {
321
381
  service.close();
322
382
  }
323
383
  }
324
- const BENIGN_UPDATE_WARNINGS = [
325
- 'pts_before does not match local_pts',
326
- 'local pts not available for postponed updateNewChannelMessage',
327
- 'error fetching common difference',
328
- 'error fetching difference for',
329
- 'Session is reset',
330
- 'MtprotoSession.resetState',
331
- ];
332
- function hideBenignUpdateWarnings(write, stream) {
333
- stream.write = ((chunk, encoding, cb) => {
334
- const rendered = typeof chunk === 'string' ? chunk : Buffer.from(chunk).toString();
335
- const isBenignUpdateWarning = BENIGN_UPDATE_WARNINGS.some((warning) => rendered.includes(warning))
336
- || (rendered.includes('error fetching difference for') && rendered.includes('400 CHANNEL_INVALID'));
337
- if (isBenignUpdateWarning) {
338
- return true;
339
- }
340
- return write.call(stream, chunk, encoding, cb);
341
- });
342
- return () => {
343
- stream.write = write;
344
- };
345
- }
346
384
  async function renderMessageResult(options, title, handler) {
347
- await renderTelegramResult(options, async (client) => {
385
+ await runTelegramCommand(options, async (client) => {
348
386
  const service = new MessageService(client);
349
387
  const result = await handler(service);
350
388
  return result.ok && result.human == null
@@ -352,59 +390,6 @@ async function renderMessageResult(options, title, handler) {
352
390
  : result;
353
391
  });
354
392
  }
355
- async function renderTelegramResult(options, handler) {
356
- await runWithAccountContext(options, async (context) => {
357
- const restoreStdoutWarnings = hideBenignUpdateWarnings(process.stdout.write.bind(process.stdout), process.stdout);
358
- const restoreStderrWarnings = hideBenignUpdateWarnings(process.stderr.write.bind(process.stderr), process.stderr);
359
- let client;
360
- try {
361
- client = createTelegramClient(context.sessionPath);
362
- }
363
- catch (error) {
364
- restoreStdoutWarnings();
365
- restoreStderrWarnings();
366
- return commandFailure('config_error', error);
367
- }
368
- try {
369
- return await handler(client, context);
370
- }
371
- catch (error) {
372
- const authError = toAuthSessionError(error, context.account.name);
373
- return authError ?? commandFailure('telegram_error', error);
374
- }
375
- finally {
376
- restoreStdoutWarnings();
377
- restoreStderrWarnings();
378
- await client.close().catch(() => undefined);
379
- }
380
- });
381
- }
382
- function toAuthSessionError(error, accountName) {
383
- if (isAuthKeyUnregistered(error)) {
384
- return {
385
- ok: false,
386
- error: {
387
- code: 'telegram_account_session_expired',
388
- message: `Session for account "${accountName}" is no longer valid. Re-add the account: tg account remove ${accountName} --force && tg account add.`,
389
- },
390
- };
391
- }
392
- return null;
393
- }
394
- function isAuthKeyUnregistered(error) {
395
- const candidate = error;
396
- const text = typeof candidate.text === 'string'
397
- ? candidate.text
398
- : undefined;
399
- if (text === 'AUTH_KEY_UNREGISTERED')
400
- return true;
401
- const code = typeof candidate.code === 'number' ? candidate.code : undefined;
402
- const message = typeof candidate.message === 'string' ? candidate.message : '';
403
- return message.includes('AUTH_KEY_UNREGISTERED') && code === 401;
404
- }
405
- function commandFailure(code, error) {
406
- return { ok: false, error: { code, message: errorMessage(error) } };
407
- }
408
393
  function normalizeTelegramUser(user) {
409
394
  const name = [user.first_name, user.last_name].filter(Boolean).join(' ');
410
395
  return {
@@ -416,9 +401,6 @@ function normalizeTelegramUser(user) {
416
401
  phone: user.phone,
417
402
  };
418
403
  }
419
- function errorMessage(error) {
420
- return error instanceof Error ? error.message : String(error);
421
- }
422
404
  function sleep(seconds) {
423
405
  const delay = Number.isFinite(seconds) && seconds > 0 ? seconds * 1000 : 0;
424
406
  return new Promise((resolve) => {
@@ -1 +1 @@
1
- {"version":3,"file":"telegram.js","sourceRoot":"","sources":["../../src/commands/telegram.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"telegram.js","sourceRoot":"","sources":["../../src/commands/telegram.ts"],"names":[],"mappings":"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"}