@happycastle/openclaw-channel-talk 0.2.0 β†’ 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.
package/README.md CHANGED
@@ -9,6 +9,8 @@
9
9
  - πŸ“¨ **Team Chat λ©”μ‹œμ§€ μˆ˜μ‹ ** β€” 웹훅을 톡해 채널톑 νŒ€μ±— λ©”μ‹œμ§€λ₯Ό μ‹€μ‹œκ°„μœΌλ‘œ μˆ˜μ‹ 
10
10
  - πŸ’¬ **λ©”μ‹œμ§€ λ°œμ†‘** β€” OpenClaw μ—μ΄μ „νŠΈκ°€ 채널톑 νŒ€μ±—μ— 직접 응닡
11
11
  - πŸ€– **μ»€μŠ€ν…€ 봇 이름** β€” `botName` μ„€μ •μœΌλ‘œ 봇 ν‘œμ‹œ 이름 λ³€κ²½ κ°€λŠ₯
12
+ - πŸ”’ **κ·Έλ£Ή ν—ˆμš© λͺ©λ‘** β€” `allowedGroups`둜 νŠΉμ • κ·Έλ£Ήλ°©μ—λ§Œ 응닡
13
+ - πŸ“’ **λ©˜μ…˜ μ „μš© λͺ¨λ“œ** β€” `mentionOnly`둜 봇이 λ©˜μ…˜λμ„ λ•Œλ§Œ 응닡
12
14
  - πŸ”„ **μžλ™ μž¬μ‹œλ„** β€” API 였λ₯˜(429, 5xx) μ‹œ μ§€μˆ˜ λ°±μ˜€ν”„ μž¬μ‹œλ„
13
15
  - πŸ“ **Markdown μ²­ν‚Ή** β€” κΈ΄ λ©”μ‹œμ§€λ₯Ό μžλ™μœΌλ‘œ λΆ„ν• ν•˜μ—¬ 전솑
14
16
  - πŸ”’ **쀑볡 λ©”μ‹œμ§€ 필터링** β€” 동일 λ©”μ‹œμ§€ 쀑볡 처리 λ°©μ§€
@@ -42,32 +44,39 @@ openclaw plugins install @happycastle/openclaw-channel-talk
42
44
  git clone https://github.com/happycastle114/openclaw-channel-talk.git
43
45
  cd openclaw-channel-talk
44
46
  npm install
45
- # OpenClaw μ„€μ •μ—μ„œ 둜컬 경둜λ₯Ό μ§€μ •ν•©λ‹ˆλ‹€
47
+ # OpenClaw extensions 디렉토리에 λ³΅μ‚¬ν•˜κ±°λ‚˜ 심볼릭 링크λ₯Ό μƒμ„±ν•©λ‹ˆλ‹€
46
48
  ```
47
49
 
48
- ### 3단계: OpenClaw μ„€μ •
50
+ ### 3단계: 채널 μΆ”κ°€ (CLI)
49
51
 
50
- OpenClaw μ„€μ • 파일(`config.yaml` λ˜λŠ” `config.json`)에 λ‹€μŒμ„ μΆ”κ°€ν•©λ‹ˆλ‹€:
52
+ OpenClaw CLIλ₯Ό μ‚¬μš©ν•˜μ—¬ 채널을 μΆ”κ°€ν•©λ‹ˆλ‹€:
51
53
 
52
- ```yaml
53
- channels:
54
- channel-talk:
55
- # Channel Talk API 인증 정보 (ν•„μˆ˜)
56
- accessKey: "your-access-key"
57
- accessSecret: "your-access-secret"
54
+ ```bash
55
+ openclaw channels add \
56
+ --channel channel-talk \
57
+ --token "YOUR_ACCESS_KEY" \
58
+ --bot-token "YOUR_ACCESS_SECRET"
59
+ ```
60
+
61
+ > πŸ’‘ `--token`에 Access Keyλ₯Ό, `--bot-token`에 Access Secret을 μž…λ ₯ν•˜μ„Έμš”.
58
62
 
59
- # 봇 ν‘œμ‹œ 이름 (선택, κΈ°λ³Έκ°’: API κΈ°λ³Έ 봇 이름)
60
- botName: "MyBot"
63
+ 이 λͺ…령은 μžλ™μœΌλ‘œ OpenClaw μ„€μ • νŒŒμΌμ— 인증 정보λ₯Ό μ €μž₯ν•©λ‹ˆλ‹€.
61
64
 
62
- # νŒ€μ±— κ·Έλ£Ή μ •μ±… (선택, κΈ°λ³Έκ°’: "open")
63
- # "open" = λͺ¨λ“  νŒ€μ±— λ©”μ‹œμ§€ 처리
64
- # "closed" = νŒ€μ±— λ©”μ‹œμ§€ 처리 μ•ˆ 함
65
- groupPolicy: "open"
65
+ ### 3단계 (λŒ€μ•ˆ): μˆ˜λ™ μ„€μ •
66
66
 
67
- # μ›Ήν›… μ„œλ²„ μ„€μ • (선택)
68
- webhook:
69
- port: 3979 # κΈ°λ³Έκ°’: 3979
70
- path: "/api/channel-talk" # κΈ°λ³Έκ°’: /api/channel-talk
67
+ 직접 μ„€μ • 파일(`openclaw.json`)을 νŽΈμ§‘ν•  μˆ˜λ„ μžˆμŠ΅λ‹ˆλ‹€:
68
+
69
+ ```json
70
+ {
71
+ "channels": {
72
+ "channel-talk": {
73
+ "accessKey": "your-access-key",
74
+ "accessSecret": "your-access-secret",
75
+ "botName": "MyBot",
76
+ "enabled": true
77
+ }
78
+ }
79
+ }
71
80
  ```
72
81
 
73
82
  ### 4단계: μ›Ήν›… μ—”λ“œν¬μΈνŠΈ 곡개
@@ -132,9 +141,32 @@ openclaw gateway start
132
141
  | `enabled` | `boolean` | ❌ | `true` | ν”ŒλŸ¬κ·ΈμΈ ν™œμ„±ν™”/λΉ„ν™œμ„±ν™” |
133
142
  | `botName` | `string` | ❌ | β€” | 봇 λ©”μ‹œμ§€ ν‘œμ‹œ 이름 |
134
143
  | `groupPolicy` | `"open" \| "closed"` | ❌ | `"open"` | νŒ€μ±— κ·Έλ£Ή λ©”μ‹œμ§€ 처리 μ •μ±… |
144
+ | `allowedGroups` | `string[]` | ❌ | β€” | 응닡할 κ·Έλ£Ή chatId λͺ©λ‘. λΉ„μ–΄μžˆμœΌλ©΄ λͺ¨λ“  κ·Έλ£Ή ν—ˆμš© |
145
+ | `mentionOnly` | `boolean` | ❌ | `false` | 봇이 λ©˜μ…˜λμ„ λ•Œλ§Œ 응닡 (Discord λ©˜μ…˜ λͺ¨λ“œμ™€ μœ μ‚¬) |
135
146
  | `webhook.port` | `number` | ❌ | `3979` | μ›Ήν›… μ„œλ²„ 포트 |
136
147
  | `webhook.path` | `string` | ❌ | `"/api/channel-talk"` | μ›Ήν›… μ—”λ“œν¬μΈνŠΈ 경둜 |
137
148
 
149
+ ### 필터링 μ„€μ • μ˜ˆμ‹œ
150
+
151
+ ```json
152
+ {
153
+ "channels": {
154
+ "channel-talk": {
155
+ "accessKey": "...",
156
+ "accessSecret": "...",
157
+ "botName": "OpenClaw",
158
+
159
+ "allowedGroups": ["452539", "123456"],
160
+
161
+ "mentionOnly": true
162
+ }
163
+ }
164
+ }
165
+ ```
166
+
167
+ - **`allowedGroups`** β€” λͺ©λ‘μ— μžˆλŠ” 그룹방의 λ©”μ‹œμ§€λ§Œ μ²˜λ¦¬ν•©λ‹ˆλ‹€. λΉ„μ–΄μžˆκ±°λ‚˜ μƒλž΅ν•˜λ©΄ λͺ¨λ“  그룹에 μ‘λ‹΅ν•©λ‹ˆλ‹€.
168
+ - **`mentionOnly`** β€” `true`둜 μ„€μ •ν•˜λ©΄ λ©”μ‹œμ§€μ— 봇 이름(`botName`)이 ν¬ν•¨λœ κ²½μš°μ—λ§Œ μ‘λ‹΅ν•©λ‹ˆλ‹€. `@BotName` λ˜λŠ” `BotNameμ•„` 같은 νŒ¨ν„΄μ„ μΈμ‹ν•©λ‹ˆλ‹€. Discord의 λ©˜μ…˜ μ „μš© λͺ¨λ“œμ™€ μœ μ‚¬ν•©λ‹ˆλ‹€.
169
+
138
170
  ## πŸ—οΈ Architecture
139
171
 
140
172
  ```
@@ -195,6 +227,21 @@ openclaw gateway start
195
227
  - ν”ŒλŸ¬κ·ΈμΈμ€ `personType: "bot"` λ©”μ‹œμ§€λ₯Ό μžλ™μœΌλ‘œ λ¬΄μ‹œν•©λ‹ˆλ‹€
196
228
  - 이 λ¬Έμ œκ°€ λ°œμƒν•˜λ©΄ 둜그λ₯Ό 확인해 μ£Όμ„Έμš”
197
229
 
230
+ ### plugin id mismatch κ²½κ³ 
231
+
232
+ 이 ν”ŒλŸ¬κ·ΈμΈμ˜ plugin idλŠ” `openclaw-channel-talk`μž…λ‹ˆλ‹€.
233
+ μ„€μ •μ˜ `plugins.entries`μ—μ„œ `openclaw-channel-talk`을 ν‚€λ‘œ μ‚¬μš©ν•΄μ•Ό ν•©λ‹ˆλ‹€:
234
+
235
+ ```json
236
+ {
237
+ "plugins": {
238
+ "entries": {
239
+ "openclaw-channel-talk": { "enabled": true }
240
+ }
241
+ }
242
+ }
243
+ ```
244
+
198
245
  ## πŸ“„ License
199
246
 
200
247
  MIT
@@ -1,5 +1,5 @@
1
1
  {
2
- "id": "channel-talk",
2
+ "id": "openclaw-channel-talk",
3
3
  "channels": [
4
4
  "channel-talk"
5
5
  ],
@@ -41,13 +41,18 @@
41
41
  },
42
42
  "groupPolicy": {
43
43
  "type": "string",
44
- "enum": ["open", "closed"],
44
+ "enum": [
45
+ "open",
46
+ "closed"
47
+ ],
45
48
  "default": "open",
46
49
  "description": "Group chat policy"
47
50
  },
48
51
  "allowedGroups": {
49
52
  "type": "array",
50
- "items": { "type": "string" },
53
+ "items": {
54
+ "type": "string"
55
+ },
51
56
  "description": "List of group chatIds to respond to"
52
57
  },
53
58
  "mentionOnly": {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@happycastle/openclaw-channel-talk",
3
- "version": "0.2.0",
3
+ "version": "0.3.0",
4
4
  "description": "OpenClaw Channel Talk (채널톑) Team Chat channel plugin",
5
5
  "type": "module",
6
6
  "license": "MIT",
@@ -51,6 +51,7 @@
51
51
  "npmSpec": "@happycastle/openclaw-channel-talk",
52
52
  "localPath": "extensions/channel-talk",
53
53
  "defaultChoice": false
54
- }
54
+ },
55
+ "pluginId": "channel-talk"
55
56
  }
56
57
  }
package/src/channel.ts CHANGED
@@ -43,7 +43,7 @@ const meta = {
43
43
  } as const;
44
44
 
45
45
  export const channelTalkPlugin: ChannelPlugin<ResolvedChannelTalkAccount> = {
46
- id: 'channel-talk',
46
+ id: 'openclaw-channel-talk',
47
47
 
48
48
  meta: { ...meta },
49
49