@zhin.js/adapter-telegram 1.1.11 → 1.1.14
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 +39 -0
- package/lib/platform-permit.d.ts +3 -0
- package/lib/platform-permit.js +7 -7
- package/lib/protocol.js +1 -1
- package/package.json +15 -15
- package/src/platform-permit.ts +10 -7
- package/src/protocol.ts +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,44 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 1.1.14
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- Updated dependencies [974fa85]
|
|
8
|
+
- Updated dependencies [1e9b3d6]
|
|
9
|
+
- @zhin.js/core@1.1.49
|
|
10
|
+
|
|
11
|
+
## 1.1.13
|
|
12
|
+
|
|
13
|
+
### Patch Changes
|
|
14
|
+
|
|
15
|
+
- Updated dependencies [db06de8]
|
|
16
|
+
- @zhin.js/core@1.1.48
|
|
17
|
+
|
|
18
|
+
## 1.1.12
|
|
19
|
+
|
|
20
|
+
### Patch Changes
|
|
21
|
+
|
|
22
|
+
- e40899f: Adapters now project group owners and admins onto the canonical `sender.roles` names `owner` / `admin` (Telegram creator/administrator, KOOK guild owner and admin-permission roles, Lark chat owner/managers, QQ official guild owner/admin identities). KOOK numeric role ids moved from `roles` to `permissions` (`role:<id>`). `@zhin.js/command` exports `canManageConversation` ("private chat or owner/admin/master"), now shared by the Bilibili and earthquake subscription commands; Roulette lets owners and admins toggle the mute penalty and cancel a game.
|
|
23
|
+
- fbfefb7: Share segments accept `data.platform` (the song's music service: qq, netease, kugou, kuwo, migu). icqq maps it to the matching music app id when `config.appid` is absent and offers it to the Agent; adapters that cannot render share app metadata reject it like `audio` and `config`.
|
|
24
|
+
- Updated dependencies [1a11207]
|
|
25
|
+
- Updated dependencies [9943df6]
|
|
26
|
+
- Updated dependencies [5be09ae]
|
|
27
|
+
- Updated dependencies [a3ab153]
|
|
28
|
+
- Updated dependencies [e8f7309]
|
|
29
|
+
- Updated dependencies [5afc18f]
|
|
30
|
+
- Updated dependencies [d3563d9]
|
|
31
|
+
- Updated dependencies [c618eb7]
|
|
32
|
+
- Updated dependencies [fbfefb7]
|
|
33
|
+
- @zhin.js/tool@1.1.8
|
|
34
|
+
- @zhin.js/core@1.1.47
|
|
35
|
+
- @zhin.js/adapter@1.1.21
|
|
36
|
+
- @zhin.js/feature-kit@1.1.7
|
|
37
|
+
- @zhin.js/im-contract@1.1.5
|
|
38
|
+
- @zhin.js/agent-feature@1.1.8
|
|
39
|
+
- @zhin.js/skill@1.1.8
|
|
40
|
+
- @zhin.js/host-http@1.1.8
|
|
41
|
+
|
|
3
42
|
## 1.1.11
|
|
4
43
|
|
|
5
44
|
### Patch Changes
|
package/lib/platform-permit.d.ts
CHANGED
|
@@ -1,5 +1,8 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Telegram platform permit — ChatMember 状态 + 细粒度权限
|
|
3
|
+
*
|
|
4
|
+
* `role` 使用跨平台规范名 owner / admin(原生 creator / administrator 仅作兼容输入);
|
|
5
|
+
* 细粒度能力放在 `permissions`。
|
|
3
6
|
*/
|
|
4
7
|
import type { PermissionSubject } from '@zhin.js/permission';
|
|
5
8
|
export declare function platformPermit(perm: string): string;
|
package/lib/platform-permit.js
CHANGED
|
@@ -14,7 +14,7 @@ export function normalizeTelegramChatMember(member) {
|
|
|
14
14
|
const status = member.status;
|
|
15
15
|
if (status === 'creator') {
|
|
16
16
|
permissions.push('chat_creator', 'chat_administrator', 'restrict_members', 'pin_messages');
|
|
17
|
-
return { role: '
|
|
17
|
+
return { role: 'owner', permissions };
|
|
18
18
|
}
|
|
19
19
|
if (status === 'administrator') {
|
|
20
20
|
permissions.push('chat_administrator');
|
|
@@ -26,7 +26,7 @@ export function normalizeTelegramChatMember(member) {
|
|
|
26
26
|
permissions.push('delete_messages');
|
|
27
27
|
if (member.can_manage_chat)
|
|
28
28
|
permissions.push('manage_chat');
|
|
29
|
-
return { role: '
|
|
29
|
+
return { role: 'admin', permissions };
|
|
30
30
|
}
|
|
31
31
|
return { role: 'member', permissions };
|
|
32
32
|
}
|
|
@@ -36,15 +36,15 @@ export function checkTelegramPlatformPermit(perm, subject) {
|
|
|
36
36
|
const has = (t) => permissions.includes(t);
|
|
37
37
|
switch (perm) {
|
|
38
38
|
case 'chat_creator':
|
|
39
|
-
return role === 'creator' || has('chat_creator');
|
|
39
|
+
return role === 'owner' || role === 'creator' || has('chat_creator');
|
|
40
40
|
case 'chat_administrator':
|
|
41
|
-
return role === 'creator' || role === 'administrator' || has('chat_administrator');
|
|
41
|
+
return role === 'owner' || role === 'admin' || role === 'creator' || role === 'administrator' || has('chat_administrator');
|
|
42
42
|
case 'restrict_members':
|
|
43
|
-
return has('restrict_members') || role === 'creator';
|
|
43
|
+
return has('restrict_members') || role === 'owner' || role === 'creator';
|
|
44
44
|
case 'pin_messages':
|
|
45
|
-
return has('pin_messages') || role === 'creator';
|
|
45
|
+
return has('pin_messages') || role === 'owner' || role === 'creator';
|
|
46
46
|
case 'manage_chat':
|
|
47
|
-
return has('manage_chat') || role === 'creator';
|
|
47
|
+
return has('manage_chat') || role === 'owner' || role === 'creator';
|
|
48
48
|
default:
|
|
49
49
|
return false;
|
|
50
50
|
}
|
package/lib/protocol.js
CHANGED
|
@@ -305,7 +305,7 @@ function buildOutboundActions(target, payload, uploads) {
|
|
|
305
305
|
}
|
|
306
306
|
if (!['http:', 'https:'].includes(url.protocol) || typeof data.title !== 'string' || !data.title.trim())
|
|
307
307
|
throw new EndpointDeliveryError('invalid_payload', 'Telegram share requires an HTTP(S) URL and title', 'not_sent');
|
|
308
|
-
if (['image', 'audio', 'artist', 'duration', 'config'].some(key => data[key] !== undefined))
|
|
308
|
+
if (['image', 'audio', 'artist', 'duration', 'platform', 'config'].some(key => data[key] !== undefined))
|
|
309
309
|
throw new EndpointDeliveryError('unsupported_operation', 'Telegram share media and app metadata are not implemented', 'not_sent');
|
|
310
310
|
textContent += `<a href="${escapeTelegramHtml(url.href)}">${escapeTelegramHtml(data.title)}</a>`;
|
|
311
311
|
for (const value of [data.description, data.content])
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@zhin.js/adapter-telegram",
|
|
3
|
-
"version": "1.1.
|
|
3
|
+
"version": "1.1.14",
|
|
4
4
|
"description": "Zhin.js Telegram Bot API adapter for Plugin Runtime (long-poll getUpdates)",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./lib/index.js",
|
|
@@ -31,23 +31,23 @@
|
|
|
31
31
|
"directory": "plugins/adapters/telegram"
|
|
32
32
|
},
|
|
33
33
|
"dependencies": {
|
|
34
|
-
"@zhin.js/adapter": "1.1.
|
|
35
|
-
"@zhin.js/agent-feature": "1.1.
|
|
36
|
-
"@zhin.js/core": "1.1.
|
|
37
|
-
"@zhin.js/feature-kit": "1.1.
|
|
38
|
-
"@zhin.js/host-http": "1.1.
|
|
39
|
-
"@zhin.js/im-contract": "1.1.
|
|
34
|
+
"@zhin.js/adapter": "1.1.21",
|
|
35
|
+
"@zhin.js/agent-feature": "1.1.8",
|
|
36
|
+
"@zhin.js/core": "1.1.49",
|
|
37
|
+
"@zhin.js/feature-kit": "1.1.7",
|
|
38
|
+
"@zhin.js/host-http": "1.1.8",
|
|
39
|
+
"@zhin.js/im-contract": "1.1.5",
|
|
40
40
|
"@zhin.js/logger": "1.1.2",
|
|
41
|
-
"@zhin.js/skill": "1.1.
|
|
42
|
-
"@zhin.js/tool": "1.1.
|
|
41
|
+
"@zhin.js/skill": "1.1.8",
|
|
42
|
+
"@zhin.js/tool": "1.1.8"
|
|
43
43
|
},
|
|
44
44
|
"peerDependencies": {
|
|
45
45
|
"zod": "^4.0.0",
|
|
46
|
-
"@zhin.js/adapter": "^1.1.
|
|
47
|
-
"@zhin.js/command": "^1.1.
|
|
48
|
-
"@zhin.js/core": "^1.1.
|
|
46
|
+
"@zhin.js/adapter": "^1.1.21",
|
|
47
|
+
"@zhin.js/command": "^1.1.9",
|
|
48
|
+
"@zhin.js/core": "^1.1.49",
|
|
49
49
|
"@zhin.js/permission": "^1.1.7",
|
|
50
|
-
"zhin.js": "^1.1.
|
|
50
|
+
"zhin.js": "^1.1.14"
|
|
51
51
|
},
|
|
52
52
|
"peerDependenciesMeta": {
|
|
53
53
|
"@zhin.js/command": {
|
|
@@ -65,8 +65,8 @@
|
|
|
65
65
|
"typescript": "^6.0.3",
|
|
66
66
|
"vitest": "^4.1.10",
|
|
67
67
|
"zod": "^4.4.3",
|
|
68
|
-
"@zhin.js/host-http": "1.1.
|
|
69
|
-
"zhin.js": "1.1.
|
|
68
|
+
"@zhin.js/host-http": "1.1.8",
|
|
69
|
+
"zhin.js": "1.1.14"
|
|
70
70
|
},
|
|
71
71
|
"files": [
|
|
72
72
|
"adapters",
|
package/src/platform-permit.ts
CHANGED
|
@@ -1,5 +1,8 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Telegram platform permit — ChatMember 状态 + 细粒度权限
|
|
3
|
+
*
|
|
4
|
+
* `role` 使用跨平台规范名 owner / admin(原生 creator / administrator 仅作兼容输入);
|
|
5
|
+
* 细粒度能力放在 `permissions`。
|
|
3
6
|
*/
|
|
4
7
|
import type { PermissionSubject } from '@zhin.js/permission';
|
|
5
8
|
|
|
@@ -29,7 +32,7 @@ export function normalizeTelegramChatMember(member: {
|
|
|
29
32
|
const status = member.status;
|
|
30
33
|
if (status === 'creator') {
|
|
31
34
|
permissions.push('chat_creator', 'chat_administrator', 'restrict_members', 'pin_messages');
|
|
32
|
-
return { role: '
|
|
35
|
+
return { role: 'owner', permissions };
|
|
33
36
|
}
|
|
34
37
|
if (status === 'administrator') {
|
|
35
38
|
permissions.push('chat_administrator');
|
|
@@ -37,7 +40,7 @@ export function normalizeTelegramChatMember(member: {
|
|
|
37
40
|
if (member.can_pin_messages) permissions.push('pin_messages');
|
|
38
41
|
if (member.can_delete_messages) permissions.push('delete_messages');
|
|
39
42
|
if (member.can_manage_chat) permissions.push('manage_chat');
|
|
40
|
-
return { role: '
|
|
43
|
+
return { role: 'admin', permissions };
|
|
41
44
|
}
|
|
42
45
|
return { role: 'member', permissions };
|
|
43
46
|
}
|
|
@@ -49,15 +52,15 @@ export function checkTelegramPlatformPermit(perm: string, subject: PermissionSub
|
|
|
49
52
|
|
|
50
53
|
switch (perm) {
|
|
51
54
|
case 'chat_creator':
|
|
52
|
-
return role === 'creator' || has('chat_creator');
|
|
55
|
+
return role === 'owner' || role === 'creator' || has('chat_creator');
|
|
53
56
|
case 'chat_administrator':
|
|
54
|
-
return role === 'creator' || role === 'administrator' || has('chat_administrator');
|
|
57
|
+
return role === 'owner' || role === 'admin' || role === 'creator' || role === 'administrator' || has('chat_administrator');
|
|
55
58
|
case 'restrict_members':
|
|
56
|
-
return has('restrict_members') || role === 'creator';
|
|
59
|
+
return has('restrict_members') || role === 'owner' || role === 'creator';
|
|
57
60
|
case 'pin_messages':
|
|
58
|
-
return has('pin_messages') || role === 'creator';
|
|
61
|
+
return has('pin_messages') || role === 'owner' || role === 'creator';
|
|
59
62
|
case 'manage_chat':
|
|
60
|
-
return has('manage_chat') || role === 'creator';
|
|
63
|
+
return has('manage_chat') || role === 'owner' || role === 'creator';
|
|
61
64
|
default:
|
|
62
65
|
return false;
|
|
63
66
|
}
|
package/src/protocol.ts
CHANGED
|
@@ -582,7 +582,7 @@ function buildOutboundActions(
|
|
|
582
582
|
let url: URL;
|
|
583
583
|
try { url = new URL(String(data.url ?? '')); } catch { throw new EndpointDeliveryError('invalid_payload', 'Telegram share requires an HTTP(S) URL', 'not_sent'); }
|
|
584
584
|
if (!['http:', 'https:'].includes(url.protocol) || typeof data.title !== 'string' || !data.title.trim()) throw new EndpointDeliveryError('invalid_payload', 'Telegram share requires an HTTP(S) URL and title', 'not_sent');
|
|
585
|
-
if (['image', 'audio', 'artist', 'duration', 'config'].some(key => data[key] !== undefined)) throw new EndpointDeliveryError('unsupported_operation', 'Telegram share media and app metadata are not implemented', 'not_sent');
|
|
585
|
+
if (['image', 'audio', 'artist', 'duration', 'platform', 'config'].some(key => data[key] !== undefined)) throw new EndpointDeliveryError('unsupported_operation', 'Telegram share media and app metadata are not implemented', 'not_sent');
|
|
586
586
|
textContent += `<a href="${escapeTelegramHtml(url.href)}">${escapeTelegramHtml(data.title)}</a>`;
|
|
587
587
|
for (const value of [data.description, data.content]) if (typeof value === 'string' && value) textContent += `\n${escapeTelegramHtml(value)}`;
|
|
588
588
|
break;
|