@zhin.js/adapter-telegram 1.0.2 → 1.0.3
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 +24 -6
- package/README.md +70 -290
- package/lib/index.d.ts +36 -70
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +405 -644
- package/lib/index.js.map +1 -1
- package/package.json +22 -16
- package/src/index.ts +0 -929
- package/tsconfig.json +0 -24
package/CHANGELOG.md
CHANGED
|
@@ -1,16 +1,34 @@
|
|
|
1
|
-
#
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
## 1.0.3
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- d16a69c: fix: test trust publish
|
|
8
|
+
- Updated dependencies [d16a69c]
|
|
9
|
+
- @zhin.js/logger@0.1.2
|
|
10
|
+
- zhin.js@1.0.18
|
|
2
11
|
|
|
3
12
|
## 1.0.2
|
|
4
13
|
|
|
5
14
|
### Patch Changes
|
|
6
15
|
|
|
7
|
-
-
|
|
8
|
-
- zhin.js@1.0.2
|
|
16
|
+
- zhin.js@1.0.17
|
|
9
17
|
|
|
10
18
|
## 1.0.1
|
|
11
19
|
|
|
12
20
|
### Patch Changes
|
|
13
21
|
|
|
14
|
-
-
|
|
15
|
-
|
|
16
|
-
|
|
22
|
+
- cda76be: fix: add adapters
|
|
23
|
+
|
|
24
|
+
## 1.0.0 (2025-01-19)
|
|
25
|
+
|
|
26
|
+
### Features
|
|
27
|
+
|
|
28
|
+
- Initial release of Telegram adapter
|
|
29
|
+
- Support for text messages with formatting
|
|
30
|
+
- Rich media support (images, videos, audio, documents, stickers)
|
|
31
|
+
- Long polling and webhook modes
|
|
32
|
+
- Reply and quote functionality
|
|
33
|
+
- Callback query handling
|
|
34
|
+
- Private and group chat support
|
package/README.md
CHANGED
|
@@ -1,326 +1,106 @@
|
|
|
1
1
|
# @zhin.js/adapter-telegram
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
Telegram adapter for zhin.js framework.
|
|
4
4
|
|
|
5
|
-
##
|
|
5
|
+
## Installation
|
|
6
6
|
|
|
7
7
|
```bash
|
|
8
8
|
pnpm add @zhin.js/adapter-telegram
|
|
9
9
|
```
|
|
10
10
|
|
|
11
|
-
##
|
|
12
|
-
|
|
13
|
-
### Polling 模式配置(推荐开发使用)
|
|
14
|
-
|
|
15
|
-
```typescript
|
|
16
|
-
import { TelegramBotConfig } from '@zhin.js/adapter-telegram';
|
|
17
|
-
|
|
18
|
-
const config: TelegramBotConfig = {
|
|
19
|
-
context: 'telegram',
|
|
20
|
-
name: 'my-telegram-bot',
|
|
21
|
-
token: 'YOUR_BOT_TOKEN', // 从 @BotFather 获取的 Bot Token
|
|
22
|
-
mode: 'polling' // 可选,默认就是 polling
|
|
23
|
-
}
|
|
24
|
-
```
|
|
25
|
-
|
|
26
|
-
### Webhook 模式配置(推荐生产使用)
|
|
11
|
+
## Configuration
|
|
27
12
|
|
|
28
13
|
```typescript
|
|
29
|
-
import {
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
14
|
+
import { defineConfig } from 'zhin.js'
|
|
15
|
+
|
|
16
|
+
export default defineConfig({
|
|
17
|
+
bots: [
|
|
18
|
+
{
|
|
19
|
+
name: 'my-telegram-bot',
|
|
20
|
+
context: 'telegram',
|
|
21
|
+
token: 'YOUR_BOT_TOKEN', // Get from @BotFather
|
|
22
|
+
polling: true, // Use long polling (default)
|
|
23
|
+
// OR use webhooks:
|
|
24
|
+
// polling: false,
|
|
25
|
+
// webhook: {
|
|
26
|
+
// domain: 'https://yourdomain.com',
|
|
27
|
+
// path: '/telegram-webhook',
|
|
28
|
+
// port: 8443
|
|
29
|
+
// }
|
|
30
|
+
}
|
|
31
|
+
]
|
|
32
|
+
})
|
|
40
33
|
```
|
|
41
34
|
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
- `token` (必需): Telegram Bot Token,从 [@BotFather](https://t.me/BotFather) 获取
|
|
45
|
-
- `name`: 机器人名称
|
|
46
|
-
- `proxy`: 代理配置(可选)
|
|
47
|
-
- `host`: 代理服务器地址
|
|
48
|
-
- `port`: 代理服务器端口
|
|
49
|
-
- `username`: 代理用户名(可选)
|
|
50
|
-
- `password`: 代理密码(可选)
|
|
51
|
-
- `fileDownload`: 文件下载配置(可选)
|
|
52
|
-
- `enabled`: 是否启用自动文件下载(默认: false)
|
|
53
|
-
- `downloadPath`: 文件下载路径(默认: './downloads')
|
|
54
|
-
- `maxFileSize`: 最大文件大小,单位字节(默认: 20MB)
|
|
55
|
-
|
|
56
|
-
### 代理和文件下载配置示例
|
|
35
|
+
## Features
|
|
57
36
|
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
password: 'pass'
|
|
68
|
-
},
|
|
69
|
-
fileDownload: {
|
|
70
|
-
enabled: true,
|
|
71
|
-
downloadPath: './telegram_files',
|
|
72
|
-
maxFileSize: 50 * 1024 * 1024 // 50MB
|
|
73
|
-
}
|
|
74
|
-
}
|
|
75
|
-
```
|
|
37
|
+
- ✅ Send and receive text messages
|
|
38
|
+
- ✅ Support for rich media (images, videos, audio, documents)
|
|
39
|
+
- ✅ Message formatting (bold, italic, code, links)
|
|
40
|
+
- ✅ Reply to messages
|
|
41
|
+
- ✅ Mentions (@username)
|
|
42
|
+
- ✅ Stickers and locations
|
|
43
|
+
- ✅ Callback queries (inline buttons)
|
|
44
|
+
- ✅ Long polling and webhook modes
|
|
45
|
+
- ✅ Private and group chats
|
|
76
46
|
|
|
77
|
-
##
|
|
47
|
+
## Getting Your Bot Token
|
|
78
48
|
|
|
79
|
-
1.
|
|
80
|
-
2.
|
|
81
|
-
3.
|
|
82
|
-
4.
|
|
49
|
+
1. Talk to [@BotFather](https://t.me/botfather) on Telegram
|
|
50
|
+
2. Send `/newbot` and follow the instructions
|
|
51
|
+
3. Copy the bot token provided
|
|
52
|
+
4. Add the token to your configuration
|
|
83
53
|
|
|
84
|
-
##
|
|
54
|
+
## Usage Examples
|
|
85
55
|
|
|
86
|
-
###
|
|
56
|
+
### Basic Message Handling
|
|
87
57
|
|
|
88
58
|
```typescript
|
|
89
|
-
import {
|
|
90
|
-
import '@zhin.js/adapter-telegram';
|
|
91
|
-
|
|
92
|
-
const app = createApp();
|
|
59
|
+
import { addCommand, MessageCommand } from 'zhin.js'
|
|
93
60
|
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
app.middleware((session, next) => {
|
|
101
|
-
|
|
102
|
-
return next();
|
|
103
|
-
});
|
|
104
|
-
|
|
105
|
-
app.command('ping').action((session) => {
|
|
106
|
-
session.send('pong!');
|
|
107
|
-
});
|
|
108
|
-
|
|
109
|
-
app.start();
|
|
61
|
+
addCommand(new MessageCommand('hello')
|
|
62
|
+
.action(async (message) => {
|
|
63
|
+
return 'Hello from Telegram!'
|
|
64
|
+
})
|
|
65
|
+
)
|
|
110
66
|
```
|
|
111
67
|
|
|
112
|
-
###
|
|
68
|
+
### Send Rich Media
|
|
113
69
|
|
|
114
70
|
```typescript
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
// 配置 Telegram Webhook
|
|
125
|
-
app.adapter('telegram-webhook', {
|
|
126
|
-
context: 'telegram-webhook',
|
|
127
|
-
name: 'webhook-bot',
|
|
128
|
-
token: 'YOUR_BOT_TOKEN',
|
|
129
|
-
mode: 'webhook',
|
|
130
|
-
webhookPath: '/telegram/webhook',
|
|
131
|
-
webhookUrl: 'https://your-domain.com/telegram/webhook',
|
|
132
|
-
secretToken: 'your-secret-token'
|
|
133
|
-
});
|
|
134
|
-
|
|
135
|
-
app.command('start').action((session) => {
|
|
136
|
-
session.send('欢迎使用 Telegram Bot(Webhook 模式)!');
|
|
137
|
-
});
|
|
138
|
-
|
|
139
|
-
app.start();
|
|
71
|
+
addCommand(new MessageCommand('photo')
|
|
72
|
+
.action(async (message) => {
|
|
73
|
+
return [
|
|
74
|
+
{ type: 'image', data: { url: 'https://example.com/photo.jpg' } },
|
|
75
|
+
{ type: 'text', data: { text: 'Check out this photo!' } }
|
|
76
|
+
]
|
|
77
|
+
})
|
|
78
|
+
)
|
|
140
79
|
```
|
|
141
80
|
|
|
142
|
-
###
|
|
81
|
+
### Reply to Messages
|
|
143
82
|
|
|
144
83
|
```typescript
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
app.adapter('telegram', {
|
|
151
|
-
context: 'telegram',
|
|
152
|
-
name: 'advanced-bot',
|
|
153
|
-
token: 'YOUR_BOT_TOKEN',
|
|
154
|
-
fileDownload: {
|
|
155
|
-
enabled: true,
|
|
156
|
-
downloadPath: './downloads'
|
|
157
|
-
}
|
|
158
|
-
});
|
|
159
|
-
|
|
160
|
-
// 处理图片消息
|
|
161
|
-
app.middleware((session, next) => {
|
|
162
|
-
const imageSegments = session.content.filter(seg => seg.type === 'image');
|
|
163
|
-
if (imageSegments.length > 0) {
|
|
164
|
-
console.log('收到图片消息:', imageSegments.map(seg => seg.data.file_id));
|
|
165
|
-
}
|
|
166
|
-
return next();
|
|
167
|
-
});
|
|
168
|
-
|
|
169
|
-
// 发送多媒体消息
|
|
170
|
-
app.command('send-image').action(async (session) => {
|
|
171
|
-
await session.send([
|
|
172
|
-
{ type: 'image', data: { url: 'https://example.com/image.jpg' } },
|
|
173
|
-
{ type: 'text', data: { text: '这是一张图片' } }
|
|
174
|
-
]);
|
|
175
|
-
});
|
|
176
|
-
|
|
177
|
-
// 回复消息
|
|
178
|
-
app.command('echo').action(async (session) => {
|
|
179
|
-
await session.$reply('你说: ' + session.content.find(s => s.type === 'text')?.data.text);
|
|
180
|
-
});
|
|
181
|
-
|
|
182
|
-
app.start();
|
|
84
|
+
addCommand(new MessageCommand('quote <text:text>')
|
|
85
|
+
.action(async (message, result) => {
|
|
86
|
+
await message.$reply(`You said: ${result.params.text}`, true) // true = quote original message
|
|
87
|
+
})
|
|
88
|
+
)
|
|
183
89
|
```
|
|
184
90
|
|
|
185
|
-
##
|
|
186
|
-
|
|
187
|
-
| 特性 | Polling 模式 | Webhook 模式 |
|
|
188
|
-
|------|-------------|-------------|
|
|
189
|
-
| **网络要求** | 机器人主动拉取 | 需要公网 HTTPS |
|
|
190
|
-
| **实时性** | 较低(轮询间隔) | 高(实时推送) |
|
|
191
|
-
| **服务器要求** | 低(无需公网IP) | 高(需要域名+SSL) |
|
|
192
|
-
| **适用场景** | 开发、测试、小规模 | 生产、大规模 |
|
|
193
|
-
| **资源消耗** | 中等(持续轮询) | 低(按需处理) |
|
|
194
|
-
| **配置复杂度** | 简单 | 中等 |
|
|
195
|
-
|
|
196
|
-
### 选择建议
|
|
197
|
-
|
|
198
|
-
- **开发阶段**: 使用 `telegram` (Polling 模式)
|
|
199
|
-
- **生产部署**: 使用 `telegram-webhook` (Webhook 模式)
|
|
200
|
-
|
|
201
|
-
## 支持的消息类型
|
|
202
|
-
|
|
203
|
-
### 接收消息
|
|
204
|
-
- **文本消息**: 支持文本格式化(粗体、斜体、代码等)
|
|
205
|
-
- **图片消息**: 支持所有格式的图片和图片说明
|
|
206
|
-
- **音频消息**: 支持音频文件,包含元数据(时长、表演者、标题等)
|
|
207
|
-
- **语音消息**: 支持语音消息,包含时长和编码信息
|
|
208
|
-
- **视频消息**: 支持视频文件和视频说明
|
|
209
|
-
- **视频笔记**: 支持圆形视频消息
|
|
210
|
-
- **文档消息**: 支持文档文件和文档说明
|
|
211
|
-
- **贴纸消息**: 支持静态和动态贴纸
|
|
212
|
-
- **位置消息**: 支持地理位置信息
|
|
213
|
-
- **联系人消息**: 支持联系人信息
|
|
214
|
-
- **回复消息**: 支持嵌套回复消息
|
|
215
|
-
- **提及消息**: 支持 @用户名 和用户ID提及
|
|
216
|
-
- **链接消息**: 自动解析URL和文本链接
|
|
217
|
-
- **标签消息**: 支持 #标签 识别
|
|
218
|
-
|
|
219
|
-
### 发送消息
|
|
220
|
-
- **文本消息**: 支持HTML格式化
|
|
221
|
-
- **图片消息**: 支持发送图片文件、URL或file_id
|
|
222
|
-
- **音频消息**: 支持发送音频文件,可设置元数据
|
|
223
|
-
- **语音消息**: 支持发送语音文件
|
|
224
|
-
- **视频消息**: 支持发送视频文件,可设置尺寸等属性
|
|
225
|
-
- **视频笔记**: 支持发送圆形视频
|
|
226
|
-
- **文档消息**: 支持发送任意格式的文件
|
|
227
|
-
- **贴纸消息**: 支持发送贴纸(仅限file_id)
|
|
228
|
-
- **位置消息**: 支持发送地理位置
|
|
229
|
-
- **联系人消息**: 支持发送联系人信息
|
|
230
|
-
- **回复消息**: 支持回复指定消息
|
|
231
|
-
|
|
232
|
-
## 聊天类型支持
|
|
233
|
-
|
|
234
|
-
- `private`: 私聊
|
|
235
|
-
- `group`: 群组
|
|
236
|
-
- `supergroup`: 超级群组
|
|
237
|
-
- `channel`: 频道
|
|
238
|
-
|
|
239
|
-
## 特性说明
|
|
240
|
-
|
|
241
|
-
### Webhook 模式安全性
|
|
242
|
-
- **签名验证**: 使用 `secretToken` 验证请求来源
|
|
243
|
-
- **HTTPS 要求**: Telegram 要求 Webhook URL 必须是 HTTPS
|
|
244
|
-
- **路径隔离**: 支持自定义路径,避免与其他服务冲突
|
|
245
|
-
|
|
246
|
-
### 文件下载
|
|
247
|
-
- 默认情况下,文件下载功能是关闭的,只提供文件的 `file_id`
|
|
248
|
-
- 启用文件下载后,适配器会自动在后台下载消息中的文件到本地
|
|
249
|
-
- 支持的文件类型:图片、音频、语音、视频、文档、贴纸等
|
|
250
|
-
- 下载操作是异步的,不会阻塞消息处理流程
|
|
251
|
-
|
|
252
|
-
### 消息格式化
|
|
253
|
-
- 支持 Telegram 的所有消息实体(粗体、斜体、代码、链接等)
|
|
254
|
-
- 自动解析 @提及 和 #标签
|
|
255
|
-
- 支持嵌套回复消息的完整解析
|
|
256
|
-
- 保留原始消息的所有元数据
|
|
257
|
-
|
|
258
|
-
### 消息发送
|
|
259
|
-
- 支持发送多种格式的多媒体内容
|
|
260
|
-
- 自动根据内容类型选择合适的 Telegram API
|
|
261
|
-
- 支持批量发送多个消息段
|
|
262
|
-
- 智能处理回复消息
|
|
263
|
-
|
|
264
|
-
## 注意事项
|
|
265
|
-
|
|
266
|
-
1. **网络连接**: 如果在中国大陆使用,可能需要配置代理才能正常连接到 Telegram API
|
|
267
|
-
2. **安全性**: Bot Token 需要保密,不要在代码中硬编码或提交到版本控制系统
|
|
268
|
-
3. **环境变量**: 建议使用环境变量存储敏感信息
|
|
269
|
-
4. **文件大小限制**: Telegram Bot API 对文件大小有限制,建议设置合理的 `maxFileSize`
|
|
270
|
-
5. **频率限制**: 注意 Telegram 的频率限制,避免发送消息过于频繁
|
|
271
|
-
6. **Webhook 要求**: Webhook 模式需要:
|
|
272
|
-
- 有效的 HTTPS 域名
|
|
273
|
-
- SSL 证书
|
|
274
|
-
- 能够接收 Telegram 服务器的 POST 请求
|
|
275
|
-
- zhin.js 的 `@zhin.js/http` 插件支持
|
|
276
|
-
|
|
277
|
-
## 故障排除
|
|
278
|
-
|
|
279
|
-
### Webhook 模式问题
|
|
280
|
-
|
|
281
|
-
1. **Webhook 设置失败**
|
|
282
|
-
```
|
|
283
|
-
Error: HTTPS URL must be provided for webhook
|
|
284
|
-
```
|
|
285
|
-
- 确保 `webhookUrl` 使用 HTTPS 协议
|
|
286
|
-
- 检查域名和 SSL 证书是否有效
|
|
287
|
-
|
|
288
|
-
2. **签名验证失败**
|
|
289
|
-
```
|
|
290
|
-
Invalid Discord signature
|
|
291
|
-
```
|
|
292
|
-
- 检查 `secretToken` 配置是否正确
|
|
293
|
-
- 确认 Telegram 发送的请求头包含正确的签名
|
|
294
|
-
|
|
295
|
-
3. **路径冲突**
|
|
296
|
-
```
|
|
297
|
-
路由已存在
|
|
298
|
-
```
|
|
299
|
-
- 确保 `webhookPath` 在应用中是唯一的
|
|
300
|
-
- 避免与其他插件或适配器的路径冲突
|
|
91
|
+
## Telegram-Specific Features
|
|
301
92
|
|
|
302
|
-
###
|
|
93
|
+
### Callback Queries
|
|
303
94
|
|
|
304
|
-
|
|
305
|
-
- 检查代理服务器配置
|
|
306
|
-
- 确认防火墙设置
|
|
307
|
-
- 尝试不同的代理协议(SOCKS5)
|
|
95
|
+
The adapter automatically handles callback queries (from inline keyboards) as special messages.
|
|
308
96
|
|
|
309
|
-
|
|
310
|
-
- 重新从 @BotFather 获取 Token
|
|
311
|
-
- 检查 Token 格式是否正确
|
|
97
|
+
### File Handling
|
|
312
98
|
|
|
313
|
-
|
|
99
|
+
You can send files using:
|
|
100
|
+
- `file_id` (from received messages)
|
|
101
|
+
- URL
|
|
102
|
+
- Local file path
|
|
314
103
|
|
|
315
|
-
|
|
316
|
-
- ✨ 新增 Webhook 模式支持
|
|
317
|
-
- ✨ 使用 `useContext('router')` 集成 HTTP 服务
|
|
318
|
-
- 🔒 添加签名验证安全机制
|
|
319
|
-
- 📚 完善文档和示例
|
|
104
|
+
## License
|
|
320
105
|
|
|
321
|
-
|
|
322
|
-
- 🎉 初始版本
|
|
323
|
-
- 🔄 Polling 模式支持
|
|
324
|
-
- 🎯 完整的多媒体消息支持
|
|
325
|
-
- 🌐 代理支持
|
|
326
|
-
- 📁 文件下载功能
|
|
106
|
+
MIT
|
package/lib/index.d.ts
CHANGED
|
@@ -1,85 +1,51 @@
|
|
|
1
|
-
import
|
|
2
|
-
import {
|
|
3
|
-
|
|
1
|
+
import { Telegraf } from "telegraf";
|
|
2
|
+
import type { Message as TelegramMessage } from "telegraf/types";
|
|
3
|
+
import { Bot, Adapter, Plugin, Message, SendOptions } from "zhin.js";
|
|
4
|
+
declare module "zhin.js" {
|
|
5
|
+
namespace Plugin {
|
|
6
|
+
interface Contexts {
|
|
7
|
+
telegram: TelegramAdapter;
|
|
8
|
+
}
|
|
9
|
+
}
|
|
4
10
|
interface RegisteredAdapters {
|
|
5
|
-
telegram:
|
|
6
|
-
'telegram-webhook': Adapter<TelegramWebhookBot>;
|
|
11
|
+
telegram: TelegramAdapter;
|
|
7
12
|
}
|
|
8
13
|
}
|
|
9
|
-
export interface
|
|
14
|
+
export interface TelegramBotConfig {
|
|
15
|
+
context: "telegram";
|
|
10
16
|
token: string;
|
|
11
17
|
name: string;
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
};
|
|
18
|
-
fileDownload?: {
|
|
19
|
-
enabled: boolean;
|
|
20
|
-
downloadPath?: string;
|
|
21
|
-
maxFileSize?: number;
|
|
18
|
+
polling?: boolean;
|
|
19
|
+
webhook?: {
|
|
20
|
+
domain: string;
|
|
21
|
+
path?: string;
|
|
22
|
+
port?: number;
|
|
22
23
|
};
|
|
23
|
-
|
|
24
|
-
export type TelegramBotConfig = TelegramBaseConfig & TelegramBotApi.ConstructorOptions & {
|
|
25
|
-
context: 'telegram';
|
|
26
|
-
mode?: 'polling';
|
|
27
|
-
};
|
|
28
|
-
export interface TelegramWebhookConfig extends TelegramBaseConfig {
|
|
29
|
-
context: 'telegram-webhook';
|
|
30
|
-
mode: 'webhook';
|
|
31
|
-
webhookPath: string;
|
|
32
|
-
webhookUrl: string;
|
|
33
|
-
secretToken?: string;
|
|
24
|
+
allowedUpdates?: string[];
|
|
34
25
|
}
|
|
35
26
|
export interface TelegramBot {
|
|
36
27
|
$config: TelegramBotConfig;
|
|
37
28
|
}
|
|
38
|
-
export
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
$
|
|
44
|
-
constructor(plugin: Plugin, config: TelegramBotConfig);
|
|
45
|
-
private handleTelegramMessage;
|
|
29
|
+
export declare class TelegramBot extends Telegraf implements Bot<TelegramBotConfig, TelegramMessage> {
|
|
30
|
+
adapter: TelegramAdapter;
|
|
31
|
+
$config: TelegramBotConfig;
|
|
32
|
+
$connected: boolean;
|
|
33
|
+
get $id(): string;
|
|
34
|
+
constructor(adapter: TelegramAdapter, $config: TelegramBotConfig);
|
|
46
35
|
$connect(): Promise<void>;
|
|
47
36
|
$disconnect(): Promise<void>;
|
|
48
|
-
$formatMessage(msg: TelegramBotApi.Message): Message<TelegramBotApi.Message>;
|
|
49
|
-
$sendMessage(options: SendOptions): Promise<void>;
|
|
50
|
-
sendContentToChat(chatId: string, content: SendContent, extraOptions?: any): Promise<void>;
|
|
51
|
-
getFileInfo(fileId: string): Promise<{
|
|
52
|
-
file_id: string;
|
|
53
|
-
file_unique_id: string;
|
|
54
|
-
file_size: number | undefined;
|
|
55
|
-
file_path: string | undefined;
|
|
56
|
-
file_url: string;
|
|
57
|
-
} | null>;
|
|
58
|
-
downloadTelegramFile(fileId: string): Promise<string | null>;
|
|
59
|
-
parseMessageContentSync(msg: TelegramBotApi.Message): MessageSegment[];
|
|
60
|
-
downloadMessageFiles(msg: TelegramBotApi.Message): Promise<void>;
|
|
61
|
-
parseTextWithEntities(text: string, entities?: TelegramBotApi.MessageEntity[]): MessageSegment[];
|
|
62
|
-
static fileExists(filePath: string): Promise<boolean>;
|
|
63
|
-
static getFileExtension(fileName: string): string;
|
|
64
|
-
static isImageFile(fileName: string): boolean;
|
|
65
|
-
static isAudioFile(fileName: string): boolean;
|
|
66
|
-
static isVideoFile(fileName: string): boolean;
|
|
67
|
-
static formatContentToText(content: SendContent): string;
|
|
68
|
-
}
|
|
69
|
-
export declare class TelegramWebhookBot extends TelegramBotApi implements Bot<TelegramBotApi.Message, TelegramWebhookConfig> {
|
|
70
|
-
private plugin;
|
|
71
|
-
$connected?: boolean;
|
|
72
|
-
private router;
|
|
73
|
-
constructor(plugin: Plugin, router: any, config: TelegramWebhookConfig);
|
|
74
|
-
private setupWebhookRoute;
|
|
75
|
-
private handleWebhook;
|
|
76
37
|
private handleTelegramMessage;
|
|
77
|
-
$
|
|
78
|
-
$
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
38
|
+
$formatMessage(msg: TelegramMessage): Message<TelegramMessage>;
|
|
39
|
+
private $formatCallbackQuery;
|
|
40
|
+
private parseMessageContent;
|
|
41
|
+
private parseTextWithEntities;
|
|
42
|
+
$sendMessage(options: SendOptions): Promise<string>;
|
|
43
|
+
private sendContentToChat;
|
|
44
|
+
$recallMessage(id: string): Promise<void>;
|
|
45
|
+
}
|
|
46
|
+
declare class TelegramAdapter extends Adapter<TelegramBot> {
|
|
47
|
+
constructor(plugin: Plugin);
|
|
48
|
+
createBot(config: TelegramBotConfig): TelegramBot;
|
|
84
49
|
}
|
|
50
|
+
export {};
|
|
85
51
|
//# sourceMappingURL=index.d.ts.map
|
package/lib/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAA8B,MAAM,UAAU,CAAC;AAChE,OAAO,KAAK,EAAE,OAAO,IAAI,eAAe,EAAyB,MAAM,gBAAgB,CAAC;AACxF,OAAO,EACL,GAAG,EACH,OAAO,EACP,MAAM,EACN,OAAO,EACP,WAAW,EAKZ,MAAM,SAAS,CAAC;AAGjB,OAAO,QAAQ,SAAS,CAAC;IACvB,UAAU,MAAM,CAAC;QACf,UAAU,QAAQ;YAChB,QAAQ,EAAE,eAAe,CAAC;SAC3B;KACF;IAED,UAAU,kBAAkB;QAC1B,QAAQ,EAAE,eAAe,CAAC;KAC3B;CACF;AAGD,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,UAAU,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IAEb,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,OAAO,CAAC,EAAE;QACR,MAAM,EAAE,MAAM,CAAC;QACf,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,IAAI,CAAC,EAAE,MAAM,CAAC;KACf,CAAC;IACF,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;CAC3B;AAED,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,iBAAiB,CAAC;CAC5B;AAKD,qBAAa,WAAY,SAAQ,QAAS,YAAW,GAAG,CAAC,iBAAiB,EAAE,eAAe,CAAC;IAOvE,OAAO,EAAE,eAAe;IAAS,OAAO,EAAE,iBAAiB;IAN9E,UAAU,EAAE,OAAO,CAAS;IAE5B,IAAI,GAAG,WAEN;gBAEkB,OAAO,EAAE,eAAe,EAAS,OAAO,EAAE,iBAAiB;IAIxE,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAoDzB,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC;YAWpB,qBAAqB;IAUnC,cAAc,CAAC,GAAG,EAAE,eAAe,GAAG,OAAO,CAAC,eAAe,CAAC;IAyD9D,OAAO,CAAC,oBAAoB;IA0C5B,OAAO,CAAC,mBAAmB;IAqI3B,OAAO,CAAC,qBAAqB;IAkFvB,YAAY,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC;YAc3C,iBAAiB;IAsLzB,cAAc,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAShD;AAED,cAAM,eAAgB,SAAQ,OAAO,CAAC,WAAW,CAAC;gBACpC,MAAM,EAAE,MAAM;IAI1B,SAAS,CAAC,MAAM,EAAE,iBAAiB,GAAG,WAAW;CAGlD"}
|