@pachca/cli 2026.4.1 → 2026.5.1
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.
- package/CHANGELOG.md +9 -0
- package/dist/commands/bots/list-events.js +9 -2
- package/dist/commands/chats/list.js +9 -2
- package/dist/commands/group-tags/list-users.js +9 -2
- package/dist/commands/group-tags/list.js +9 -2
- package/dist/commands/members/list.js +9 -2
- package/dist/commands/messages/list.js +9 -2
- package/dist/commands/reactions/list.js +9 -2
- package/dist/commands/read-member/list-readers.js +9 -2
- package/dist/commands/search/list-chats.js +9 -2
- package/dist/commands/search/list-messages.js +9 -2
- package/dist/commands/search/list-users.js +9 -2
- package/dist/commands/security/list.js +9 -2
- package/dist/commands/tasks/list.js +9 -2
- package/dist/commands/users/list.js +9 -2
- package/dist/data/changelog.json +26 -0
- package/oclif.manifest.json +1 -1
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,14 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 2026.5.1 (6 мая 2026)
|
|
4
|
+
|
|
5
|
+
- **Изменено**: Поддержка обновлённого формата курсорной пагинации в list-командах
|
|
6
|
+
|
|
7
|
+
## 2026.5.0 (4 мая 2026)
|
|
8
|
+
|
|
9
|
+
- **Изменено** (users list, users get, users create, users update, profile get): В вывод модели сотрудника добавлено поле inviter_id — кто пригласил сотрудника (null для самостоятельной регистрации или удалённого пригласившего)
|
|
10
|
+
- **Изменено** (users list, users get, users create, users update, profile get): Поля last_name, email, phone_number, department, title, time_zone, last_activity_at в модели сотрудника теперь корректно объявлены как nullable (email и phone_number возвращают null для ботов без права просмотра персональных данных)
|
|
11
|
+
|
|
3
12
|
## 2026.4.1 (8 апреля 2026)
|
|
4
13
|
|
|
5
14
|
- **Изменено** (messages create, messages update): Поддержка упоминаний по ID: `<@user_id>` в тексте сообщения автоматически преобразуется в `@nickname`
|
|
@@ -43,12 +43,19 @@ export default class BotsListEvents extends BaseCommand {
|
|
|
43
43
|
const items = body.data;
|
|
44
44
|
if (items)
|
|
45
45
|
allData.push(...items);
|
|
46
|
-
if (!items || items.length === 0)
|
|
47
|
-
break;
|
|
48
46
|
const meta = body.meta;
|
|
49
47
|
const paginate = meta?.paginate;
|
|
50
48
|
nextCursor = paginate?.next_page;
|
|
51
49
|
pages++;
|
|
50
|
+
// Условие конца: списочные методы — has_next === false; методы поиска и /users?query= (без has_next) — пустой data
|
|
51
|
+
const hasNext = paginate?.has_next;
|
|
52
|
+
if (typeof hasNext === 'boolean') {
|
|
53
|
+
if (!hasNext)
|
|
54
|
+
break;
|
|
55
|
+
}
|
|
56
|
+
else if (!items || items.length === 0) {
|
|
57
|
+
break;
|
|
58
|
+
}
|
|
52
59
|
if (process.stderr.isTTY) {
|
|
53
60
|
const total = paginate?.total;
|
|
54
61
|
const progress = total ? `${allData.length} / ${total}` : String(allData.length);
|
|
@@ -76,12 +76,19 @@ export default class ChatsList extends BaseCommand {
|
|
|
76
76
|
const items = body.data;
|
|
77
77
|
if (items)
|
|
78
78
|
allData.push(...items);
|
|
79
|
-
if (!items || items.length === 0)
|
|
80
|
-
break;
|
|
81
79
|
const meta = body.meta;
|
|
82
80
|
const paginate = meta?.paginate;
|
|
83
81
|
nextCursor = paginate?.next_page;
|
|
84
82
|
pages++;
|
|
83
|
+
// Условие конца: списочные методы — has_next === false; методы поиска и /users?query= (без has_next) — пустой data
|
|
84
|
+
const hasNext = paginate?.has_next;
|
|
85
|
+
if (typeof hasNext === 'boolean') {
|
|
86
|
+
if (!hasNext)
|
|
87
|
+
break;
|
|
88
|
+
}
|
|
89
|
+
else if (!items || items.length === 0) {
|
|
90
|
+
break;
|
|
91
|
+
}
|
|
85
92
|
if (process.stderr.isTTY) {
|
|
86
93
|
const total = paginate?.total;
|
|
87
94
|
const progress = total ? `${allData.length} / ${total}` : String(allData.length);
|
|
@@ -48,12 +48,19 @@ export default class GroupTagsListUsers extends BaseCommand {
|
|
|
48
48
|
const items = body.data;
|
|
49
49
|
if (items)
|
|
50
50
|
allData.push(...items);
|
|
51
|
-
if (!items || items.length === 0)
|
|
52
|
-
break;
|
|
53
51
|
const meta = body.meta;
|
|
54
52
|
const paginate = meta?.paginate;
|
|
55
53
|
nextCursor = paginate?.next_page;
|
|
56
54
|
pages++;
|
|
55
|
+
// Условие конца: списочные методы — has_next === false; методы поиска и /users?query= (без has_next) — пустой data
|
|
56
|
+
const hasNext = paginate?.has_next;
|
|
57
|
+
if (typeof hasNext === 'boolean') {
|
|
58
|
+
if (!hasNext)
|
|
59
|
+
break;
|
|
60
|
+
}
|
|
61
|
+
else if (!items || items.length === 0) {
|
|
62
|
+
break;
|
|
63
|
+
}
|
|
57
64
|
if (process.stderr.isTTY) {
|
|
58
65
|
const total = paginate?.total;
|
|
59
66
|
const progress = total ? `${allData.length} / ${total}` : String(allData.length);
|
|
@@ -48,12 +48,19 @@ export default class GroupTagsList extends BaseCommand {
|
|
|
48
48
|
const items = body.data;
|
|
49
49
|
if (items)
|
|
50
50
|
allData.push(...items);
|
|
51
|
-
if (!items || items.length === 0)
|
|
52
|
-
break;
|
|
53
51
|
const meta = body.meta;
|
|
54
52
|
const paginate = meta?.paginate;
|
|
55
53
|
nextCursor = paginate?.next_page;
|
|
56
54
|
pages++;
|
|
55
|
+
// Условие конца: списочные методы — has_next === false; методы поиска и /users?query= (без has_next) — пустой data
|
|
56
|
+
const hasNext = paginate?.has_next;
|
|
57
|
+
if (typeof hasNext === 'boolean') {
|
|
58
|
+
if (!hasNext)
|
|
59
|
+
break;
|
|
60
|
+
}
|
|
61
|
+
else if (!items || items.length === 0) {
|
|
62
|
+
break;
|
|
63
|
+
}
|
|
57
64
|
if (process.stderr.isTTY) {
|
|
58
65
|
const total = paginate?.total;
|
|
59
66
|
const progress = total ? `${allData.length} / ${total}` : String(allData.length);
|
|
@@ -56,12 +56,19 @@ export default class MembersList extends BaseCommand {
|
|
|
56
56
|
const items = body.data;
|
|
57
57
|
if (items)
|
|
58
58
|
allData.push(...items);
|
|
59
|
-
if (!items || items.length === 0)
|
|
60
|
-
break;
|
|
61
59
|
const meta = body.meta;
|
|
62
60
|
const paginate = meta?.paginate;
|
|
63
61
|
nextCursor = paginate?.next_page;
|
|
64
62
|
pages++;
|
|
63
|
+
// Условие конца: списочные методы — has_next === false; методы поиска и /users?query= (без has_next) — пустой data
|
|
64
|
+
const hasNext = paginate?.has_next;
|
|
65
|
+
if (typeof hasNext === 'boolean') {
|
|
66
|
+
if (!hasNext)
|
|
67
|
+
break;
|
|
68
|
+
}
|
|
69
|
+
else if (!items || items.length === 0) {
|
|
70
|
+
break;
|
|
71
|
+
}
|
|
65
72
|
if (process.stderr.isTTY) {
|
|
66
73
|
const total = paginate?.total;
|
|
67
74
|
const progress = total ? `${allData.length} / ${total}` : String(allData.length);
|
|
@@ -97,12 +97,19 @@ export default class MessagesList extends BaseCommand {
|
|
|
97
97
|
const items = body.data;
|
|
98
98
|
if (items)
|
|
99
99
|
allData.push(...items);
|
|
100
|
-
if (!items || items.length === 0)
|
|
101
|
-
break;
|
|
102
100
|
const meta = body.meta;
|
|
103
101
|
const paginate = meta?.paginate;
|
|
104
102
|
nextCursor = paginate?.next_page;
|
|
105
103
|
pages++;
|
|
104
|
+
// Условие конца: списочные методы — has_next === false; методы поиска и /users?query= (без has_next) — пустой data
|
|
105
|
+
const hasNext = paginate?.has_next;
|
|
106
|
+
if (typeof hasNext === 'boolean') {
|
|
107
|
+
if (!hasNext)
|
|
108
|
+
break;
|
|
109
|
+
}
|
|
110
|
+
else if (!items || items.length === 0) {
|
|
111
|
+
break;
|
|
112
|
+
}
|
|
106
113
|
if (process.stderr.isTTY) {
|
|
107
114
|
const total = paginate?.total;
|
|
108
115
|
const progress = total ? `${allData.length} / ${total}` : String(allData.length);
|
|
@@ -49,12 +49,19 @@ export default class ReactionsList extends BaseCommand {
|
|
|
49
49
|
const items = body.data;
|
|
50
50
|
if (items)
|
|
51
51
|
allData.push(...items);
|
|
52
|
-
if (!items || items.length === 0)
|
|
53
|
-
break;
|
|
54
52
|
const meta = body.meta;
|
|
55
53
|
const paginate = meta?.paginate;
|
|
56
54
|
nextCursor = paginate?.next_page;
|
|
57
55
|
pages++;
|
|
56
|
+
// Условие конца: списочные методы — has_next === false; методы поиска и /users?query= (без has_next) — пустой data
|
|
57
|
+
const hasNext = paginate?.has_next;
|
|
58
|
+
if (typeof hasNext === 'boolean') {
|
|
59
|
+
if (!hasNext)
|
|
60
|
+
break;
|
|
61
|
+
}
|
|
62
|
+
else if (!items || items.length === 0) {
|
|
63
|
+
break;
|
|
64
|
+
}
|
|
58
65
|
if (process.stderr.isTTY) {
|
|
59
66
|
const total = paginate?.total;
|
|
60
67
|
const progress = total ? `${allData.length} / ${total}` : String(allData.length);
|
|
@@ -47,12 +47,19 @@ export default class ReadMemberListReaders extends BaseCommand {
|
|
|
47
47
|
const items = body.data;
|
|
48
48
|
if (items)
|
|
49
49
|
allData.push(...items);
|
|
50
|
-
if (!items || items.length === 0)
|
|
51
|
-
break;
|
|
52
50
|
const meta = body.meta;
|
|
53
51
|
const paginate = meta?.paginate;
|
|
54
52
|
nextCursor = paginate?.next_page;
|
|
55
53
|
pages++;
|
|
54
|
+
// Условие конца: списочные методы — has_next === false; методы поиска и /users?query= (без has_next) — пустой data
|
|
55
|
+
const hasNext = paginate?.has_next;
|
|
56
|
+
if (typeof hasNext === 'boolean') {
|
|
57
|
+
if (!hasNext)
|
|
58
|
+
break;
|
|
59
|
+
}
|
|
60
|
+
else if (!items || items.length === 0) {
|
|
61
|
+
break;
|
|
62
|
+
}
|
|
56
63
|
if (process.stderr.isTTY) {
|
|
57
64
|
const total = paginate?.total;
|
|
58
65
|
const progress = total ? `${allData.length} / ${total}` : String(allData.length);
|
|
@@ -76,12 +76,19 @@ export default class SearchListChats extends BaseCommand {
|
|
|
76
76
|
const items = body.data;
|
|
77
77
|
if (items)
|
|
78
78
|
allData.push(...items);
|
|
79
|
-
if (!items || items.length === 0)
|
|
80
|
-
break;
|
|
81
79
|
const meta = body.meta;
|
|
82
80
|
const paginate = meta?.paginate;
|
|
83
81
|
nextCursor = paginate?.next_page;
|
|
84
82
|
pages++;
|
|
83
|
+
// Условие конца: списочные методы — has_next === false; методы поиска и /users?query= (без has_next) — пустой data
|
|
84
|
+
const hasNext = paginate?.has_next;
|
|
85
|
+
if (typeof hasNext === 'boolean') {
|
|
86
|
+
if (!hasNext)
|
|
87
|
+
break;
|
|
88
|
+
}
|
|
89
|
+
else if (!items || items.length === 0) {
|
|
90
|
+
break;
|
|
91
|
+
}
|
|
85
92
|
if (process.stderr.isTTY) {
|
|
86
93
|
const total = paginate?.total;
|
|
87
94
|
const progress = total ? `${allData.length} / ${total}` : String(allData.length);
|
|
@@ -73,12 +73,19 @@ export default class SearchListMessages extends BaseCommand {
|
|
|
73
73
|
const items = body.data;
|
|
74
74
|
if (items)
|
|
75
75
|
allData.push(...items);
|
|
76
|
-
if (!items || items.length === 0)
|
|
77
|
-
break;
|
|
78
76
|
const meta = body.meta;
|
|
79
77
|
const paginate = meta?.paginate;
|
|
80
78
|
nextCursor = paginate?.next_page;
|
|
81
79
|
pages++;
|
|
80
|
+
// Условие конца: списочные методы — has_next === false; методы поиска и /users?query= (без has_next) — пустой data
|
|
81
|
+
const hasNext = paginate?.has_next;
|
|
82
|
+
if (typeof hasNext === 'boolean') {
|
|
83
|
+
if (!hasNext)
|
|
84
|
+
break;
|
|
85
|
+
}
|
|
86
|
+
else if (!items || items.length === 0) {
|
|
87
|
+
break;
|
|
88
|
+
}
|
|
82
89
|
if (process.stderr.isTTY) {
|
|
83
90
|
const total = paginate?.total;
|
|
84
91
|
const progress = total ? `${allData.length} / ${total}` : String(allData.length);
|
|
@@ -71,12 +71,19 @@ export default class SearchListUsers extends BaseCommand {
|
|
|
71
71
|
const items = body.data;
|
|
72
72
|
if (items)
|
|
73
73
|
allData.push(...items);
|
|
74
|
-
if (!items || items.length === 0)
|
|
75
|
-
break;
|
|
76
74
|
const meta = body.meta;
|
|
77
75
|
const paginate = meta?.paginate;
|
|
78
76
|
nextCursor = paginate?.next_page;
|
|
79
77
|
pages++;
|
|
78
|
+
// Условие конца: списочные методы — has_next === false; методы поиска и /users?query= (без has_next) — пустой data
|
|
79
|
+
const hasNext = paginate?.has_next;
|
|
80
|
+
if (typeof hasNext === 'boolean') {
|
|
81
|
+
if (!hasNext)
|
|
82
|
+
break;
|
|
83
|
+
}
|
|
84
|
+
else if (!items || items.length === 0) {
|
|
85
|
+
break;
|
|
86
|
+
}
|
|
80
87
|
if (process.stderr.isTTY) {
|
|
81
88
|
const total = paginate?.total;
|
|
82
89
|
const progress = total ? `${allData.length} / ${total}` : String(allData.length);
|
|
@@ -75,12 +75,19 @@ export default class SecurityList extends BaseCommand {
|
|
|
75
75
|
const items = body.data;
|
|
76
76
|
if (items)
|
|
77
77
|
allData.push(...items);
|
|
78
|
-
if (!items || items.length === 0)
|
|
79
|
-
break;
|
|
80
78
|
const meta = body.meta;
|
|
81
79
|
const paginate = meta?.paginate;
|
|
82
80
|
nextCursor = paginate?.next_page;
|
|
83
81
|
pages++;
|
|
82
|
+
// Условие конца: списочные методы — has_next === false; методы поиска и /users?query= (без has_next) — пустой data
|
|
83
|
+
const hasNext = paginate?.has_next;
|
|
84
|
+
if (typeof hasNext === 'boolean') {
|
|
85
|
+
if (!hasNext)
|
|
86
|
+
break;
|
|
87
|
+
}
|
|
88
|
+
else if (!items || items.length === 0) {
|
|
89
|
+
break;
|
|
90
|
+
}
|
|
84
91
|
if (process.stderr.isTTY) {
|
|
85
92
|
const total = paginate?.total;
|
|
86
93
|
const progress = total ? `${allData.length} / ${total}` : String(allData.length);
|
|
@@ -45,12 +45,19 @@ export default class TasksList extends BaseCommand {
|
|
|
45
45
|
const items = body.data;
|
|
46
46
|
if (items)
|
|
47
47
|
allData.push(...items);
|
|
48
|
-
if (!items || items.length === 0)
|
|
49
|
-
break;
|
|
50
48
|
const meta = body.meta;
|
|
51
49
|
const paginate = meta?.paginate;
|
|
52
50
|
nextCursor = paginate?.next_page;
|
|
53
51
|
pages++;
|
|
52
|
+
// Условие конца: списочные методы — has_next === false; методы поиска и /users?query= (без has_next) — пустой data
|
|
53
|
+
const hasNext = paginate?.has_next;
|
|
54
|
+
if (typeof hasNext === 'boolean') {
|
|
55
|
+
if (!hasNext)
|
|
56
|
+
break;
|
|
57
|
+
}
|
|
58
|
+
else if (!items || items.length === 0) {
|
|
59
|
+
break;
|
|
60
|
+
}
|
|
54
61
|
if (process.stderr.isTTY) {
|
|
55
62
|
const total = paginate?.total;
|
|
56
63
|
const progress = total ? `${allData.length} / ${total}` : String(allData.length);
|
|
@@ -49,12 +49,19 @@ export default class UsersList extends BaseCommand {
|
|
|
49
49
|
const items = body.data;
|
|
50
50
|
if (items)
|
|
51
51
|
allData.push(...items);
|
|
52
|
-
if (!items || items.length === 0)
|
|
53
|
-
break;
|
|
54
52
|
const meta = body.meta;
|
|
55
53
|
const paginate = meta?.paginate;
|
|
56
54
|
nextCursor = paginate?.next_page;
|
|
57
55
|
pages++;
|
|
56
|
+
// Условие конца: списочные методы — has_next === false; методы поиска и /users?query= (без has_next) — пустой data
|
|
57
|
+
const hasNext = paginate?.has_next;
|
|
58
|
+
if (typeof hasNext === 'boolean') {
|
|
59
|
+
if (!hasNext)
|
|
60
|
+
break;
|
|
61
|
+
}
|
|
62
|
+
else if (!items || items.length === 0) {
|
|
63
|
+
break;
|
|
64
|
+
}
|
|
58
65
|
if (process.stderr.isTTY) {
|
|
59
66
|
const total = paginate?.total;
|
|
60
67
|
const progress = total ? `${allData.length} / ${total}` : String(allData.length);
|
package/dist/data/changelog.json
CHANGED
|
@@ -1,4 +1,30 @@
|
|
|
1
1
|
[
|
|
2
|
+
{
|
|
3
|
+
"version": "2026.5.1",
|
|
4
|
+
"date": "6 мая 2026",
|
|
5
|
+
"changes": [
|
|
6
|
+
{
|
|
7
|
+
"type": "~",
|
|
8
|
+
"description": "Поддержка обновлённого формата курсорной пагинации в list-командах"
|
|
9
|
+
}
|
|
10
|
+
]
|
|
11
|
+
},
|
|
12
|
+
{
|
|
13
|
+
"version": "2026.5.0",
|
|
14
|
+
"date": "4 мая 2026",
|
|
15
|
+
"changes": [
|
|
16
|
+
{
|
|
17
|
+
"type": "~",
|
|
18
|
+
"command": "users list, users get, users create, users update, profile get",
|
|
19
|
+
"description": "В вывод модели сотрудника добавлено поле inviter_id — кто пригласил сотрудника (null для самостоятельной регистрации или удалённого пригласившего)"
|
|
20
|
+
},
|
|
21
|
+
{
|
|
22
|
+
"type": "~",
|
|
23
|
+
"command": "users list, users get, users create, users update, profile get",
|
|
24
|
+
"description": "Поля last_name, email, phone_number, department, title, time_zone, last_activity_at в модели сотрудника теперь корректно объявлены как nullable (email и phone_number возвращают null для ботов без права просмотра персональных данных)"
|
|
25
|
+
}
|
|
26
|
+
]
|
|
27
|
+
},
|
|
2
28
|
{
|
|
3
29
|
"version": "2026.4.1",
|
|
4
30
|
"date": "8 апреля 2026",
|