@pachca/cli 2026.7.0 → 2026.7.2

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 (88) hide show
  1. package/CHANGELOG.md +17 -0
  2. package/README.md +2 -1
  3. package/README.template.md +1 -1
  4. package/dist/base-command.js +2 -0
  5. package/dist/client.js +51 -17
  6. package/dist/commands/bots/create.js +17 -8
  7. package/dist/commands/bots/delete.js +1 -2
  8. package/dist/commands/bots/get.js +1 -5
  9. package/dist/commands/bots/list-events.js +2 -2
  10. package/dist/commands/bots/list.js +2 -4
  11. package/dist/commands/bots/recreate-token-self.js +2 -2
  12. package/dist/commands/bots/recreate-token.js +2 -2
  13. package/dist/commands/bots/remove-event.js +1 -1
  14. package/dist/commands/bots/update-webhook.js +2 -2
  15. package/dist/commands/bots/update.js +16 -7
  16. package/dist/commands/chats/archive.js +3 -3
  17. package/dist/commands/chats/create.js +11 -5
  18. package/dist/commands/chats/download-export.js +2 -2
  19. package/dist/commands/chats/get.js +1 -4
  20. package/dist/commands/chats/list.js +4 -4
  21. package/dist/commands/chats/request-export.js +2 -2
  22. package/dist/commands/chats/unarchive.js +2 -2
  23. package/dist/commands/chats/update.js +10 -3
  24. package/dist/commands/custom-properties/list.js +2 -2
  25. package/dist/commands/files/direct-url.js +12 -12
  26. package/dist/commands/files/uploads.js +2 -2
  27. package/dist/commands/group-tags/create.js +10 -4
  28. package/dist/commands/group-tags/get.js +1 -1
  29. package/dist/commands/group-tags/list-users.js +2 -2
  30. package/dist/commands/group-tags/list.js +2 -3
  31. package/dist/commands/group-tags/update.js +9 -2
  32. package/dist/commands/members/add-group-tags.js +1 -1
  33. package/dist/commands/members/add.js +4 -4
  34. package/dist/commands/members/leave.js +1 -1
  35. package/dist/commands/members/list.js +3 -4
  36. package/dist/commands/members/remove.js +1 -2
  37. package/dist/commands/members/update.js +2 -3
  38. package/dist/commands/messages/create.js +4 -4
  39. package/dist/commands/messages/delete.js +1 -3
  40. package/dist/commands/messages/get.js +4 -4
  41. package/dist/commands/messages/list.js +2 -4
  42. package/dist/commands/messages/pin.js +2 -3
  43. package/dist/commands/messages/unfurl.js +4 -4
  44. package/dist/commands/messages/unpin.js +1 -2
  45. package/dist/commands/messages/update.js +4 -4
  46. package/dist/commands/oauth/token-info.js +2 -2
  47. package/dist/commands/profile/delete-avatar.js +1 -2
  48. package/dist/commands/profile/delete-status.js +1 -2
  49. package/dist/commands/profile/get-status.js +1 -5
  50. package/dist/commands/profile/get.js +3 -3
  51. package/dist/commands/profile/update-avatar.js +2 -3
  52. package/dist/commands/profile/update-status.js +6 -4
  53. package/dist/commands/reactions/add.js +2 -3
  54. package/dist/commands/reactions/list.js +1 -5
  55. package/dist/commands/reactions/remove.js +1 -2
  56. package/dist/commands/read-member/list-readers.js +2 -2
  57. package/dist/commands/search/list-chats.js +3 -3
  58. package/dist/commands/search/list-messages.js +2 -2
  59. package/dist/commands/search/list-users.js +4 -4
  60. package/dist/commands/security/list.js +6 -6
  61. package/dist/commands/tasks/create.js +5 -5
  62. package/dist/commands/tasks/delete.js +1 -3
  63. package/dist/commands/tasks/get.js +2 -4
  64. package/dist/commands/tasks/list.js +2 -4
  65. package/dist/commands/tasks/update.js +4 -5
  66. package/dist/commands/threads/add.js +3 -3
  67. package/dist/commands/threads/create.js +23 -0
  68. package/dist/commands/threads/get.js +1 -1
  69. package/dist/commands/threads/list.js +3 -2
  70. package/dist/commands/users/create.js +32 -10
  71. package/dist/commands/users/delete.js +1 -3
  72. package/dist/commands/users/get-status.js +2 -4
  73. package/dist/commands/users/get.js +2 -4
  74. package/dist/commands/users/list.js +4 -4
  75. package/dist/commands/users/remove-avatar.js +1 -2
  76. package/dist/commands/users/remove-status.js +1 -3
  77. package/dist/commands/users/update-avatar.js +2 -3
  78. package/dist/commands/users/update-status.js +6 -5
  79. package/dist/commands/users/update.js +31 -10
  80. package/dist/commands/views/open.js +4 -4
  81. package/dist/data/alternatives.json +1 -0
  82. package/dist/data/changelog.json +67 -0
  83. package/dist/data/endpoints.json +1 -1
  84. package/dist/data/workflows.json +2 -2
  85. package/dist/output.js +10 -2
  86. package/dist/profiles.js +7 -3
  87. package/oclif.manifest.json +1 -1
  88. package/package.json +1 -1
@@ -4,7 +4,7 @@ import { BaseCommand } from '../../base-command.js';
4
4
  export default class ChatsUpdate extends BaseCommand {
5
5
  static description = "Редактирование чата";
6
6
  static examples = [
7
- "Переименовать или обновить чат:\n $ pachca chats update"
7
+ "Переименовать или обновить чат — Обнови чат:\n $ pachca chats update"
8
8
  ];
9
9
  static scope = "chats:update";
10
10
  static apiMethod = "PUT";
@@ -19,7 +19,7 @@ export default class ChatsUpdate extends BaseCommand {
19
19
  static flags = {
20
20
  ...BaseCommand.baseFlags,
21
21
  'name': Flags.string({
22
- description: "Название",
22
+ description: "Название (макс. 255 символов)",
23
23
  }),
24
24
  'public': Flags.boolean({
25
25
  description: "Открытый доступ",
@@ -29,6 +29,13 @@ export default class ChatsUpdate extends BaseCommand {
29
29
  async run() {
30
30
  const { args, flags } = await this.parse(ChatsUpdate);
31
31
  this.parsedFlags = flags;
32
+ const validationErrors = [];
33
+ if (flags['name'] && String(flags['name']).length > 255) {
34
+ validationErrors.push({ message: `--name: максимум 255 символов (передано: ${String(flags['name']).length})`, flag: 'name' });
35
+ }
36
+ if (validationErrors.length > 0) {
37
+ this.validationError(validationErrors);
38
+ }
32
39
  const body = { chat: {
33
40
  name: flags['name'],
34
41
  public: flags['public'],
@@ -47,7 +54,7 @@ export default class ChatsUpdate extends BaseCommand {
47
54
  path: `/chats/${args.id}`,
48
55
  body,
49
56
  });
50
- const responseBody = data;
57
+ const responseBody = (data ?? {});
51
58
  const result = responseBody.data ?? responseBody;
52
59
  this.output(result);
53
60
  }
@@ -5,7 +5,7 @@ import * as clack from '@clack/prompts';
5
5
  export default class CustomPropertiesList extends BaseCommand {
6
6
  static description = "Список дополнительных полей";
7
7
  static examples = [
8
- "Получить кастомные поля профиля:\n $ pachca custom-properties list"
8
+ "Получить кастомные поля профиля — Получи список дополнительных полей для сотрудников:\n $ pachca custom-properties list"
9
9
  ];
10
10
  static hiddenAliases = ["common:custom-properties"];
11
11
  static scope = "custom_properties:read";
@@ -57,7 +57,7 @@ export default class CustomPropertiesList extends BaseCommand {
57
57
  'entity_type': flags['entity-type'],
58
58
  },
59
59
  });
60
- const responseBody = data;
60
+ const responseBody = (data ?? {});
61
61
  const result = responseBody.data ?? responseBody;
62
62
  this.output(result);
63
63
  }
@@ -84,17 +84,6 @@ export default class FilesDirectUrl extends BaseCommand {
84
84
  let formData;
85
85
  if (flags.file) {
86
86
  formData = new FormData();
87
- if (flags.file === '-') {
88
- const chunks = [];
89
- for await (const chunk of process.stdin)
90
- chunks.push(chunk);
91
- const blob = new Blob([Buffer.concat(chunks)]);
92
- formData.append('file', blob, 'stdin');
93
- }
94
- else {
95
- const blob = new Blob([fs.readFileSync(flags.file)]);
96
- formData.append('file', blob, path.basename(flags.file));
97
- }
98
87
  if (flags['content-disposition'])
99
88
  formData.append('Content-Disposition', String(flags['content-disposition']));
100
89
  if (flags['acl'])
@@ -111,6 +100,17 @@ export default class FilesDirectUrl extends BaseCommand {
111
100
  formData.append('x-amz-signature', String(flags['x-amz-signature']));
112
101
  if (flags['key'])
113
102
  formData.append('key', String(flags['key']));
103
+ if (flags.file === '-') {
104
+ const chunks = [];
105
+ for await (const chunk of process.stdin)
106
+ chunks.push(chunk);
107
+ const blob = new Blob([Buffer.concat(chunks)]);
108
+ formData.append('file', blob, 'stdin');
109
+ }
110
+ else {
111
+ const blob = new Blob([fs.readFileSync(flags.file)]);
112
+ formData.append('file', blob, path.basename(flags.file));
113
+ }
114
114
  }
115
115
  const { data } = await this.apiRequest({
116
116
  method: 'POST',
@@ -118,7 +118,7 @@ export default class FilesDirectUrl extends BaseCommand {
118
118
  formData,
119
119
  noAuth: true,
120
120
  });
121
- const responseBody = data;
121
+ const responseBody = (data ?? {});
122
122
  const result = responseBody.data ?? responseBody;
123
123
  this.output(result);
124
124
  }
@@ -2,7 +2,7 @@ import { BaseCommand } from '../../base-command.js';
2
2
  export default class FilesUploads extends BaseCommand {
3
3
  static description = "Получение подписи, ключа и других параметров";
4
4
  static examples = [
5
- "Изменить вложения сообщения:\n $ pachca files uploads"
5
+ "Изменить вложения сообщения — Если нужно добавить новый файл — загрузи его:\n $ pachca files uploads"
6
6
  ];
7
7
  static hiddenAliases = ["common:uploads"];
8
8
  static scope = "uploads:write";
@@ -20,7 +20,7 @@ export default class FilesUploads extends BaseCommand {
20
20
  method: 'POST',
21
21
  path: '/uploads',
22
22
  });
23
- const responseBody = data;
23
+ const responseBody = (data ?? {});
24
24
  const result = responseBody.data ?? responseBody;
25
25
  this.output(result);
26
26
  }
@@ -5,8 +5,7 @@ import * as clack from '@clack/prompts';
5
5
  export default class GroupTagsCreate extends BaseCommand {
6
6
  static description = "Новый тег";
7
7
  static examples = [
8
- "Массовое создание сотрудников с тегами:\n $ pachca group-tags create",
9
- "Получить всех сотрудников тега/департамента:\n $ pachca group-tags list"
8
+ "Массовое создание сотрудников с тегами — Создай тег (если нужен):\n $ pachca group-tags create"
10
9
  ];
11
10
  static scope = "group_tags:write";
12
11
  static apiMethod = "POST";
@@ -17,7 +16,7 @@ export default class GroupTagsCreate extends BaseCommand {
17
16
  static flags = {
18
17
  ...BaseCommand.baseFlags,
19
18
  'name': Flags.string({
20
- description: "Название тега",
19
+ description: "Название тега (макс. 255 символов)",
21
20
  }),
22
21
  };
23
22
  async run() {
@@ -49,6 +48,13 @@ export default class GroupTagsCreate extends BaseCommand {
49
48
  this.validationError(missingRequired.map((f) => ({ message: `Обязательный флаг --${f.flag} не передан`, flag: f.flag })), { hint: "Обязательные: --name <string>. pachca introspect group-tags create" });
50
49
  }
51
50
  }
51
+ const validationErrors = [];
52
+ if (flags['name'] && String(flags['name']).length > 255) {
53
+ validationErrors.push({ message: `--name: максимум 255 символов (передано: ${String(flags['name']).length})`, flag: 'name' });
54
+ }
55
+ if (validationErrors.length > 0) {
56
+ this.validationError(validationErrors);
57
+ }
52
58
  const body = { group_tag: {
53
59
  name: flags['name'],
54
60
  } };
@@ -63,7 +69,7 @@ export default class GroupTagsCreate extends BaseCommand {
63
69
  path: '/group_tags',
64
70
  body,
65
71
  });
66
- const responseBody = data;
72
+ const responseBody = (data ?? {});
67
73
  const result = responseBody.data ?? responseBody;
68
74
  this.output(result);
69
75
  }
@@ -23,7 +23,7 @@ export default class GroupTagsGet extends BaseCommand {
23
23
  method: 'GET',
24
24
  path: `/group_tags/${args.id}`,
25
25
  });
26
- const responseBody = data;
26
+ const responseBody = (data ?? {});
27
27
  const result = responseBody.data ?? responseBody;
28
28
  this.output(result);
29
29
  }
@@ -4,7 +4,7 @@ import { BaseCommand } from '../../base-command.js';
4
4
  export default class GroupTagsListUsers extends BaseCommand {
5
5
  static description = "Список сотрудников тега";
6
6
  static examples = [
7
- "Получить всех сотрудников тега/департамента:\n $ pachca group-tags list-users"
7
+ "Получить всех сотрудников тега/департамента — Получи всех участников тега:\n $ pachca group-tags list-users"
8
8
  ];
9
9
  static scope = "group_tags:read";
10
10
  static apiMethod = "GET";
@@ -90,7 +90,7 @@ export default class GroupTagsListUsers extends BaseCommand {
90
90
  cursor: flags.cursor,
91
91
  },
92
92
  });
93
- const responseBody = data;
93
+ const responseBody = (data ?? {});
94
94
  const items = responseBody.data ?? responseBody;
95
95
  this.output(items);
96
96
  }
@@ -4,8 +4,7 @@ import { BaseCommand } from '../../base-command.js';
4
4
  export default class GroupTagsList extends BaseCommand {
5
5
  static description = "Список тегов сотрудников";
6
6
  static examples = [
7
- "Массовое создание сотрудников с тегами:\n $ pachca group-tags create",
8
- "Получить всех сотрудников тега/департамента:\n $ pachca group-tags list"
7
+ "Получить всех сотрудников тега/департамента — Найди тег по названию, возьми `id`:\n $ pachca group-tags list"
9
8
  ];
10
9
  static scope = "group_tags:read";
11
10
  static apiMethod = "GET";
@@ -91,7 +90,7 @@ export default class GroupTagsList extends BaseCommand {
91
90
  cursor: flags.cursor,
92
91
  },
93
92
  });
94
- const responseBody = data;
93
+ const responseBody = (data ?? {});
95
94
  const items = responseBody.data ?? responseBody;
96
95
  this.output(items);
97
96
  }
@@ -18,7 +18,7 @@ export default class GroupTagsUpdate extends BaseCommand {
18
18
  static flags = {
19
19
  ...BaseCommand.baseFlags,
20
20
  'name': Flags.string({
21
- description: "Название тега",
21
+ description: "Название тега (макс. 255 символов)",
22
22
  }),
23
23
  };
24
24
  async run() {
@@ -50,6 +50,13 @@ export default class GroupTagsUpdate extends BaseCommand {
50
50
  this.validationError(missingRequired.map((f) => ({ message: `Обязательный флаг --${f.flag} не передан`, flag: f.flag })), { hint: "Обязательные: --name <string>. pachca introspect group-tags update" });
51
51
  }
52
52
  }
53
+ const validationErrors = [];
54
+ if (flags['name'] && String(flags['name']).length > 255) {
55
+ validationErrors.push({ message: `--name: максимум 255 символов (передано: ${String(flags['name']).length})`, flag: 'name' });
56
+ }
57
+ if (validationErrors.length > 0) {
58
+ this.validationError(validationErrors);
59
+ }
53
60
  const body = { group_tag: {
54
61
  name: flags['name'],
55
62
  } };
@@ -67,7 +74,7 @@ export default class GroupTagsUpdate extends BaseCommand {
67
74
  path: `/group_tags/${args.id}`,
68
75
  body,
69
76
  });
70
- const responseBody = data;
77
+ const responseBody = (data ?? {});
71
78
  const result = responseBody.data ?? responseBody;
72
79
  this.output(result);
73
80
  }
@@ -62,7 +62,7 @@ export default class MembersAddGroupTags extends BaseCommand {
62
62
  path: `/chats/${args.id}/group_tags`,
63
63
  body,
64
64
  });
65
- const responseBody = data;
65
+ const responseBody = (data ?? {});
66
66
  const result = responseBody.data ?? responseBody;
67
67
  this.output(result);
68
68
  }
@@ -5,9 +5,9 @@ import * as clack from '@clack/prompts';
5
5
  export default class MembersAdd extends BaseCommand {
6
6
  static description = "Добавление пользователей";
7
7
  static examples = [
8
- "Подписаться на тред сообщения:\n $ pachca members add",
9
- "Упомянуть пользователя:\n $ pachca members list",
10
- "Создать канал и пригласить участников:\n $ pachca members add"
8
+ "Подписаться на тред сообщения — Добавь бота в участники чата треда:\n $ pachca members add",
9
+ "Создать канал и пригласить участников — Или добавь участников позже:\n $ pachca members add",
10
+ "Онбординг нового сотрудника — Добавь в нужные каналы:\n $ pachca members add"
11
11
  ];
12
12
  static scope = "chat_members:write";
13
13
  static apiMethod = "POST";
@@ -72,7 +72,7 @@ export default class MembersAdd extends BaseCommand {
72
72
  path: `/chats/${args.id}/members`,
73
73
  body,
74
74
  });
75
- const responseBody = data;
75
+ const responseBody = (data ?? {});
76
76
  const result = responseBody.data ?? responseBody;
77
77
  this.output(result);
78
78
  }
@@ -5,7 +5,7 @@ import * as clack from '@clack/prompts';
5
5
  export default class MembersLeave extends BaseCommand {
6
6
  static description = "Выход из беседы или канала";
7
7
  static examples = [
8
- "Архивация и управление чатом:\n $ pachca members leave"
8
+ "Архивация и управление чатом — Покинуть чат:\n $ pachca members leave"
9
9
  ];
10
10
  static scope = "chats:leave";
11
11
  static apiMethod = "DELETE";
@@ -4,9 +4,8 @@ import { BaseCommand } from '../../base-command.js';
4
4
  export default class MembersList extends BaseCommand {
5
5
  static description = "Список участников чата";
6
6
  static examples = [
7
- "Подписаться на тред сообщения:\n $ pachca members add",
8
- "Упомянуть пользователя:\n $ pachca members list",
9
- "Создать канал и пригласить участников:\n $ pachca members add"
7
+ "Упомянуть пользователя — Ищи среди участников целевого чата:\n $ pachca members list",
8
+ "Упомянуть пользователя — Если пишешь в тред: также проверь участников родительского чата:\n $ pachca members list"
10
9
  ];
11
10
  static scope = "chat_members:read";
12
11
  static apiMethod = "GET";
@@ -99,7 +98,7 @@ export default class MembersList extends BaseCommand {
99
98
  cursor: flags.cursor,
100
99
  },
101
100
  });
102
- const responseBody = data;
101
+ const responseBody = (data ?? {});
103
102
  const items = responseBody.data ?? responseBody;
104
103
  this.output(items);
105
104
  }
@@ -5,8 +5,7 @@ import * as clack from '@clack/prompts';
5
5
  export default class MembersRemove extends BaseCommand {
6
6
  static description = "Исключение пользователя";
7
7
  static examples = [
8
- "Архивация и управление чатом:\n $ pachca members update",
9
- "Архивация и управление чатом:\n $ pachca members remove"
8
+ "Архивация и управление чатом — Удалить участника:\n $ pachca members remove"
10
9
  ];
11
10
  static scope = "chat_members:write";
12
11
  static apiMethod = "DELETE";
@@ -5,8 +5,7 @@ import * as clack from '@clack/prompts';
5
5
  export default class MembersUpdate extends BaseCommand {
6
6
  static description = "Редактирование роли";
7
7
  static examples = [
8
- "Архивация и управление чатом:\n $ pachca members update",
9
- "Архивация и управление чатом:\n $ pachca members remove"
8
+ "Архивация и управление чатом — Изменить роль участника:\n $ pachca members update"
10
9
  ];
11
10
  static scope = "chat_members:write";
12
11
  static apiMethod = "PUT";
@@ -73,7 +72,7 @@ export default class MembersUpdate extends BaseCommand {
73
72
  path: `/chats/${args.id}/members/${args.user_id}`,
74
73
  body,
75
74
  });
76
- const responseBody = data;
75
+ const responseBody = (data ?? {});
77
76
  const result = responseBody.data ?? responseBody;
78
77
  this.output(result);
79
78
  }
@@ -5,9 +5,9 @@ import * as clack from '@clack/prompts';
5
5
  export default class MessagesCreate extends BaseCommand {
6
6
  static description = "Новое сообщение";
7
7
  static examples = [
8
- "Найти чат по имени и отправить сообщение:\n $ pachca messages create",
9
- "Отправить сообщение в канал или беседу (если chat_id известен):\n $ pachca messages create",
10
- "Отправить личное сообщение пользователю:\n $ pachca messages create"
8
+ "Найти чат по имени и отправить сообщение — Отправь сообщение в найденный чат:\n $ pachca messages create",
9
+ "Отправить сообщение в канал или беседу (если chat_id известен) — Отправь сообщение в чат:\n $ pachca messages create",
10
+ "Отправить личное сообщение пользователю — Отправь личное сообщение:\n $ pachca messages create"
11
11
  ];
12
12
  static scope = "messages:create";
13
13
  static apiMethod = "POST";
@@ -127,7 +127,7 @@ export default class MessagesCreate extends BaseCommand {
127
127
  path: '/messages',
128
128
  body,
129
129
  });
130
- const responseBody = data;
130
+ const responseBody = (data ?? {});
131
131
  const result = responseBody.data ?? responseBody;
132
132
  this.output(result);
133
133
  }
@@ -5,9 +5,7 @@ import * as clack from '@clack/prompts';
5
5
  export default class MessagesDelete extends BaseCommand {
6
6
  static description = "Удаление сообщения";
7
7
  static examples = [
8
- "Получить вложения из сообщения:\n $ pachca messages get",
9
- "Отредактировать сообщение:\n $ pachca messages update",
10
- "Изменить вложения сообщения:\n $ pachca messages get"
8
+ "Удалить сообщение — Удали сообщение:\n $ pachca messages delete"
11
9
  ];
12
10
  static scope = "messages:delete";
13
11
  static apiMethod = "DELETE";
@@ -4,9 +4,9 @@ import { BaseCommand } from '../../base-command.js';
4
4
  export default class MessagesGet extends BaseCommand {
5
5
  static description = "Информация о сообщении";
6
6
  static examples = [
7
- "Получить вложения из сообщения:\n $ pachca messages get",
8
- "Отредактировать сообщение:\n $ pachca messages update",
9
- "Изменить вложения сообщения:\n $ pachca messages get"
7
+ "Получить вложения из сообщения — Получи сообщение — в `files[]` каждый объект содержит `url`, `name`, `file_type`, `size`:\n $ pachca messages get",
8
+ "Изменить вложения сообщения — Получи текущие вложения из `files[]`:\n $ pachca messages get",
9
+ "Обработать входящий вебхук-событие — Для полной информации запроси сообщение — особенно для вложений (`files[]`):\n $ pachca messages get"
10
10
  ];
11
11
  static scope = "messages:read";
12
12
  static apiMethod = "GET";
@@ -28,7 +28,7 @@ export default class MessagesGet extends BaseCommand {
28
28
  method: 'GET',
29
29
  path: `/messages/${args.id}`,
30
30
  });
31
- const responseBody = data;
31
+ const responseBody = (data ?? {});
32
32
  const result = responseBody.data ?? responseBody;
33
33
  this.output(result);
34
34
  }
@@ -5,9 +5,7 @@ import * as clack from '@clack/prompts';
5
5
  export default class MessagesList extends BaseCommand {
6
6
  static description = "Список сообщений чата";
7
7
  static examples = [
8
- "Найти чат по имени и отправить сообщение:\n $ pachca messages create",
9
- "Отправить сообщение в канал или беседу (если chat_id известен):\n $ pachca messages create",
10
- "Отправить личное сообщение пользователю:\n $ pachca messages create"
8
+ "Получить историю сообщений чата — Получи сообщения чата с пагинацией:\n $ pachca messages list"
11
9
  ];
12
10
  static scope = "messages:read";
13
11
  static apiMethod = "GET";
@@ -142,7 +140,7 @@ export default class MessagesList extends BaseCommand {
142
140
  cursor: flags.cursor,
143
141
  },
144
142
  });
145
- const responseBody = data;
143
+ const responseBody = (data ?? {});
146
144
  const items = responseBody.data ?? responseBody;
147
145
  this.output(items);
148
146
  }
@@ -4,8 +4,7 @@ import { BaseCommand } from '../../base-command.js';
4
4
  export default class MessagesPin extends BaseCommand {
5
5
  static description = "Закрепление сообщения";
6
6
  static examples = [
7
- "Закрепить/открепить сообщение:\n $ pachca messages pin",
8
- "Закрепить/открепить сообщение:\n $ pachca messages unpin"
7
+ "Закрепить/открепить сообщение — Закрепить сообщение:\n $ pachca messages pin"
9
8
  ];
10
9
  static scope = "pins:write";
11
10
  static apiMethod = "POST";
@@ -26,7 +25,7 @@ export default class MessagesPin extends BaseCommand {
26
25
  method: 'POST',
27
26
  path: `/messages/${args.id}/pin`,
28
27
  });
29
- const responseBody = data;
28
+ const responseBody = (data ?? {});
30
29
  const result = responseBody.data ?? responseBody;
31
30
  this.output(result);
32
31
  }
@@ -5,7 +5,7 @@ import * as clack from '@clack/prompts';
5
5
  export default class MessagesUnfurl extends BaseCommand {
6
6
  static description = "Unfurl (разворачивание ссылок)";
7
7
  static examples = [
8
- "Разворачивание ссылок (unfurling):\n $ pachca messages unfurl"
8
+ "Разворачивание ссылок (unfurling) — Отправь превью-данные:\n $ pachca messages unfurl"
9
9
  ];
10
10
  static hiddenAliases = ["link-previews:add"];
11
11
  static scope = "link_previews:write";
@@ -21,14 +21,14 @@ export default class MessagesUnfurl extends BaseCommand {
21
21
  static flags = {
22
22
  ...BaseCommand.baseFlags,
23
23
  'link-previews': Flags.string({
24
- description: "`JSON` карта предпросмотров ссылок, где каждый ключ — `URL`, который был получен в исходящем вебхуке о новом сообщении.",
24
+ description: "`JSON` карта предпросмотров ссылок, где каждый ключ — `URL`, который был получен в исходящем вебхуке о новом сообщении",
25
25
  }),
26
26
  };
27
27
  async run() {
28
28
  const { args, flags } = await this.parse(MessagesUnfurl);
29
29
  this.parsedFlags = flags;
30
30
  const missingRequired = [
31
- { flag: 'link-previews', label: "`JSON` карта предпросмотров ссылок, где каждый ключ — `URL`, который был получен в исходящем вебхуке о новом сообщении.", type: 'string' },
31
+ { flag: 'link-previews', label: "`JSON` карта предпросмотров ссылок, где каждый ключ — `URL`, который был получен в исходящем вебхуке о новом сообщении", type: 'string' },
32
32
  ].filter((f) => flags[f.flag] === undefined || flags[f.flag] === null);
33
33
  if (missingRequired.length > 0) {
34
34
  if (this.isInteractive()) {
@@ -66,7 +66,7 @@ export default class MessagesUnfurl extends BaseCommand {
66
66
  path: `/messages/${args.id}/link_previews`,
67
67
  body,
68
68
  });
69
- const responseBody = data;
69
+ const responseBody = (data ?? {});
70
70
  const result = responseBody.data ?? responseBody;
71
71
  this.output(result);
72
72
  }
@@ -5,8 +5,7 @@ import * as clack from '@clack/prompts';
5
5
  export default class MessagesUnpin extends BaseCommand {
6
6
  static description = "Открепление сообщения";
7
7
  static examples = [
8
- "Закрепить/открепить сообщение:\n $ pachca messages pin",
9
- "Закрепить/открепить сообщение:\n $ pachca messages unpin"
8
+ "Закрепить/открепить сообщение — Открепить сообщение:\n $ pachca messages unpin"
10
9
  ];
11
10
  static scope = "pins:write";
12
11
  static apiMethod = "DELETE";
@@ -4,9 +4,9 @@ import { BaseCommand } from '../../base-command.js';
4
4
  export default class MessagesUpdate extends BaseCommand {
5
5
  static description = "Редактирование сообщения";
6
6
  static examples = [
7
- "Получить вложения из сообщения:\n $ pachca messages get",
8
- "Отредактировать сообщение:\n $ pachca messages update",
9
- "Изменить вложения сообщения:\n $ pachca messages get"
7
+ "Отредактировать сообщение — Обнови сообщение:\n $ pachca messages update",
8
+ "Изменить вложения сообщения — Обнови сообщение с новым массивом `files`:\n $ pachca messages update",
9
+ "Обработать нажатие кнопки (callback) — Опционально: обнови исходное сообщение:\n $ pachca messages update"
10
10
  ];
11
11
  static scope = "messages:update";
12
12
  static apiMethod = "PUT";
@@ -68,7 +68,7 @@ export default class MessagesUpdate extends BaseCommand {
68
68
  path: `/messages/${args.id}`,
69
69
  body,
70
70
  });
71
- const responseBody = data;
71
+ const responseBody = (data ?? {});
72
72
  const result = responseBody.data ?? responseBody;
73
73
  this.output(result);
74
74
  }
@@ -2,7 +2,7 @@ import { BaseCommand } from '../../base-command.js';
2
2
  export default class OauthTokenInfo extends BaseCommand {
3
3
  static description = "Информация о токене";
4
4
  static examples = [
5
- "Проверить свой токен:\n $ pachca oauth token-info"
5
+ "Проверить свой токен — Получи информацию о токене: скоупы, дату создания, срок жизни:\n $ pachca oauth token-info"
6
6
  ];
7
7
  static hiddenAliases = ["profile:get-info"];
8
8
  static apiMethod = "GET";
@@ -19,7 +19,7 @@ export default class OauthTokenInfo extends BaseCommand {
19
19
  method: 'GET',
20
20
  path: '/oauth/token/info',
21
21
  });
22
- const responseBody = data;
22
+ const responseBody = (data ?? {});
23
23
  const result = responseBody.data ?? responseBody;
24
24
  this.output(result);
25
25
  }
@@ -5,8 +5,7 @@ import * as clack from '@clack/prompts';
5
5
  export default class ProfileDeleteAvatar extends BaseCommand {
6
6
  static description = "Удаление своего аватара";
7
7
  static examples = [
8
- "Загрузить аватар профиля:\n $ pachca profile update-avatar",
9
- "Удалить аватар профиля:\n $ pachca profile delete-avatar"
8
+ "Удалить аватар профиля — Удали аватар:\n $ pachca profile delete-avatar"
10
9
  ];
11
10
  static scope = "profile_avatar:write";
12
11
  static apiMethod = "DELETE";
@@ -5,8 +5,7 @@ import * as clack from '@clack/prompts';
5
5
  export default class ProfileDeleteStatus extends BaseCommand {
6
6
  static description = "Удаление своего статуса";
7
7
  static examples = [
8
- "Установить статус:\n $ pachca profile update-status",
9
- "Сбросить статус:\n $ pachca profile delete-status"
8
+ "Сбросить статус — Удали статус:\n $ pachca profile delete-status"
10
9
  ];
11
10
  static scope = "profile_status:write";
12
11
  static apiMethod = "DELETE";
@@ -1,10 +1,6 @@
1
1
  import { BaseCommand } from '../../base-command.js';
2
2
  export default class ProfileGetStatus extends BaseCommand {
3
3
  static description = "Свой статус";
4
- static examples = [
5
- "Установить статус:\n $ pachca profile update-status",
6
- "Сбросить статус:\n $ pachca profile delete-status"
7
- ];
8
4
  static scope = "profile_status:read";
9
5
  static apiMethod = "GET";
10
6
  static apiPath = "/profile/status";
@@ -20,7 +16,7 @@ export default class ProfileGetStatus extends BaseCommand {
20
16
  method: 'GET',
21
17
  path: '/profile/status',
22
18
  });
23
- const responseBody = data;
19
+ const responseBody = (data ?? {});
24
20
  const result = responseBody.data ?? responseBody;
25
21
  this.output(result);
26
22
  }
@@ -2,8 +2,8 @@ import { BaseCommand } from '../../base-command.js';
2
2
  export default class ProfileGet extends BaseCommand {
3
3
  static description = "Свой профиль";
4
4
  static examples = [
5
- "Получить свой профиль:\n $ pachca profile get",
6
- "Получить кастомные поля профиля:\n $ pachca profile get"
5
+ "Получить свой профиль — Получи информацию о текущем пользователе:\n $ pachca profile get",
6
+ "Получить кастомные поля профиля — Получи профиль — в `custom_properties` содержатся значения полей:\n $ pachca profile get"
7
7
  ];
8
8
  static scope = "profile:read";
9
9
  static apiMethod = "GET";
@@ -20,7 +20,7 @@ export default class ProfileGet extends BaseCommand {
20
20
  method: 'GET',
21
21
  path: '/profile',
22
22
  });
23
- const responseBody = data;
23
+ const responseBody = (data ?? {});
24
24
  const result = responseBody.data ?? responseBody;
25
25
  this.output(result);
26
26
  }
@@ -6,8 +6,7 @@ import * as path from 'node:path';
6
6
  export default class ProfileUpdateAvatar extends BaseCommand {
7
7
  static description = "Загрузка своего аватара";
8
8
  static examples = [
9
- "Загрузить аватар профиля:\n $ pachca profile update-avatar",
10
- "Удалить аватар профиля:\n $ pachca profile delete-avatar"
9
+ "Загрузить аватар профиля — Загрузи аватар из файла:\n $ pachca profile update-avatar"
11
10
  ];
12
11
  static scope = "profile_avatar:write";
13
12
  static apiMethod = "PUT";
@@ -43,7 +42,7 @@ export default class ProfileUpdateAvatar extends BaseCommand {
43
42
  path: '/profile/avatar',
44
43
  formData,
45
44
  });
46
- const responseBody = data;
45
+ const responseBody = (data ?? {});
47
46
  const result = responseBody.data ?? responseBody;
48
47
  this.output(result);
49
48
  }