@zhin.js/adapter-telegram 1.0.35 → 1.0.37

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 CHANGED
@@ -1,5 +1,19 @@
1
1
  # Changelog
2
2
 
3
+ ## 1.0.37
4
+
5
+ ### Patch Changes
6
+
7
+ - zhin.js@1.0.51
8
+ - @zhin.js/logger@0.1.35
9
+
10
+ ## 1.0.36
11
+
12
+ ### Patch Changes
13
+
14
+ - zhin.js@1.0.50
15
+ - @zhin.js/logger@0.1.34
16
+
3
17
  ## 1.0.35
4
18
 
5
19
  ### Patch Changes
@@ -0,0 +1,22 @@
1
+ /**
2
+ * Telegram 适配器
3
+ */
4
+ import { Adapter, Plugin } from "zhin.js";
5
+ import { TelegramBot } from "./bot.js";
6
+ import type { TelegramBotConfig } from "./types.js";
7
+ export declare class TelegramAdapter extends Adapter<TelegramBot> {
8
+ constructor(plugin: Plugin);
9
+ createBot(config: TelegramBotConfig): TelegramBot;
10
+ kickMember(botId: string, sceneId: string, userId: string): Promise<boolean>;
11
+ unbanMember(botId: string, sceneId: string, userId: string): Promise<boolean>;
12
+ muteMember(botId: string, sceneId: string, userId: string, duration?: number): Promise<boolean>;
13
+ setAdmin(botId: string, sceneId: string, userId: string, enable?: boolean): Promise<boolean>;
14
+ setGroupName(botId: string, sceneId: string, name: string): Promise<boolean>;
15
+ getGroupInfo(botId: string, sceneId: string): Promise<any>;
16
+ start(): Promise<void>;
17
+ /**
18
+ * 注册 Telegram 平台特有工具(置顶消息等)
19
+ */
20
+ private registerTelegramPlatformTools;
21
+ }
22
+ //# sourceMappingURL=adapter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"adapter.d.ts","sourceRoot":"","sources":["../src/adapter.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EACL,OAAO,EACP,MAAM,EAKP,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AACvC,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAEpD,qBAAa,eAAgB,SAAQ,OAAO,CAAC,WAAW,CAAC;gBAC3C,MAAM,EAAE,MAAM;IAI1B,SAAS,CAAC,MAAM,EAAE,iBAAiB,GAAG,WAAW;IAM3C,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;IAMzD,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;IAM1D,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,SAAM;IAMzE,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,UAAO;IAMtE,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM;IAMzD,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM;IAQ3C,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAa5B;;OAEG;IACH,OAAO,CAAC,6BAA6B;CAoRtC"}
package/lib/adapter.js ADDED
@@ -0,0 +1,344 @@
1
+ /**
2
+ * Telegram 适配器
3
+ */
4
+ import { Adapter, createGroupManagementTools, GROUP_MANAGEMENT_SKILL_KEYWORDS, GROUP_MANAGEMENT_SKILL_TAGS, } from "zhin.js";
5
+ import { TelegramBot } from "./bot.js";
6
+ export class TelegramAdapter extends Adapter {
7
+ constructor(plugin) {
8
+ super(plugin, "telegram", []);
9
+ }
10
+ createBot(config) {
11
+ return new TelegramBot(this, config);
12
+ }
13
+ // ── IGroupManagement 标准群管方法 ──────────────────────────────────
14
+ async kickMember(botId, sceneId, userId) {
15
+ const bot = this.bots.get(botId);
16
+ if (!bot)
17
+ throw new Error(`Bot ${botId} 不存在`);
18
+ return bot.kickMember(Number(sceneId), Number(userId));
19
+ }
20
+ async unbanMember(botId, sceneId, userId) {
21
+ const bot = this.bots.get(botId);
22
+ if (!bot)
23
+ throw new Error(`Bot ${botId} 不存在`);
24
+ return bot.unbanMember(Number(sceneId), Number(userId));
25
+ }
26
+ async muteMember(botId, sceneId, userId, duration = 600) {
27
+ const bot = this.bots.get(botId);
28
+ if (!bot)
29
+ throw new Error(`Bot ${botId} 不存在`);
30
+ return bot.muteMember(Number(sceneId), Number(userId), duration);
31
+ }
32
+ async setAdmin(botId, sceneId, userId, enable = true) {
33
+ const bot = this.bots.get(botId);
34
+ if (!bot)
35
+ throw new Error(`Bot ${botId} 不存在`);
36
+ return bot.setAdmin(Number(sceneId), Number(userId), enable);
37
+ }
38
+ async setGroupName(botId, sceneId, name) {
39
+ const bot = this.bots.get(botId);
40
+ if (!bot)
41
+ throw new Error(`Bot ${botId} 不存在`);
42
+ return bot.setChatTitle(Number(sceneId), name);
43
+ }
44
+ async getGroupInfo(botId, sceneId) {
45
+ const bot = this.bots.get(botId);
46
+ if (!bot)
47
+ throw new Error(`Bot ${botId} 不存在`);
48
+ return bot.getChatInfo(Number(sceneId));
49
+ }
50
+ // ── 生命周期 ───────────────────────────────────────────────────────
51
+ async start() {
52
+ this.registerTelegramPlatformTools();
53
+ const groupTools = createGroupManagementTools(this, this.name);
54
+ groupTools.forEach((t) => this.addTool(t));
55
+ this.declareSkill({
56
+ description: 'Telegram 群组管理:踢人、禁言、封禁、设管理员、改群名、查成员等。仅用户名时请先 list_members 获取 user_id 再操作。',
57
+ keywords: GROUP_MANAGEMENT_SKILL_KEYWORDS,
58
+ tags: GROUP_MANAGEMENT_SKILL_TAGS,
59
+ });
60
+ await super.start();
61
+ }
62
+ /**
63
+ * 注册 Telegram 平台特有工具(置顶消息等)
64
+ */
65
+ registerTelegramPlatformTools() {
66
+ // 置顶消息工具
67
+ this.addTool({
68
+ name: 'telegram_pin_message',
69
+ description: '置顶 Telegram 群组消息',
70
+ parameters: {
71
+ type: 'object',
72
+ properties: {
73
+ bot: { type: 'string', description: 'Bot 名称' },
74
+ chat_id: { type: 'number', description: '聊天 ID' },
75
+ message_id: { type: 'number', description: '消息 ID' },
76
+ },
77
+ required: ['bot', 'chat_id', 'message_id'],
78
+ },
79
+ platforms: ['telegram'],
80
+ scopes: ['group'],
81
+ permissionLevel: 'group_admin',
82
+ execute: async (args) => {
83
+ const { bot: botId, chat_id, message_id } = args;
84
+ const bot = this.bots.get(botId);
85
+ if (!bot)
86
+ throw new Error(`Bot ${botId} 不存在`);
87
+ const success = await bot.pinMessage(chat_id, message_id);
88
+ return { success, message: success ? '消息已置顶' : '操作失败' };
89
+ },
90
+ });
91
+ // 取消置顶工具
92
+ this.addTool({
93
+ name: 'telegram_unpin_message',
94
+ description: '取消置顶 Telegram 群组消息',
95
+ parameters: {
96
+ type: 'object',
97
+ properties: {
98
+ bot: { type: 'string', description: 'Bot 名称' },
99
+ chat_id: { type: 'number', description: '聊天 ID' },
100
+ message_id: { type: 'number', description: '消息 ID(可选,不提供则取消所有置顶)' },
101
+ },
102
+ required: ['bot', 'chat_id'],
103
+ },
104
+ platforms: ['telegram'],
105
+ scopes: ['group'],
106
+ permissionLevel: 'group_admin',
107
+ execute: async (args) => {
108
+ const { bot: botId, chat_id, message_id } = args;
109
+ const bot = this.bots.get(botId);
110
+ if (!bot)
111
+ throw new Error(`Bot ${botId} 不存在`);
112
+ const success = await bot.unpinMessage(chat_id, message_id);
113
+ return { success, message: success ? '已取消置顶' : '操作失败' };
114
+ },
115
+ });
116
+ // 获取管理员列表工具
117
+ this.addTool({
118
+ name: 'telegram_list_admins',
119
+ description: '获取 Telegram 群组管理员列表',
120
+ parameters: {
121
+ type: 'object',
122
+ properties: {
123
+ bot: { type: 'string', description: 'Bot 名称' },
124
+ chat_id: { type: 'number', description: '聊天 ID' },
125
+ },
126
+ required: ['bot', 'chat_id'],
127
+ },
128
+ platforms: ['telegram'],
129
+ scopes: ['group'],
130
+ permissionLevel: 'user',
131
+ execute: async (args) => {
132
+ const { bot: botId, chat_id } = args;
133
+ const bot = this.bots.get(botId);
134
+ if (!bot)
135
+ throw new Error(`Bot ${botId} 不存在`);
136
+ const admins = await bot.getChatAdmins(chat_id);
137
+ return {
138
+ admins: admins.map(a => ({
139
+ user_id: a.user.id,
140
+ username: a.user.username,
141
+ first_name: a.user.first_name,
142
+ status: a.status,
143
+ })),
144
+ count: admins.length,
145
+ };
146
+ },
147
+ });
148
+ // 获取成员数量工具
149
+ this.addTool({
150
+ name: 'telegram_member_count',
151
+ description: '获取 Telegram 群组成员数量',
152
+ parameters: {
153
+ type: 'object',
154
+ properties: {
155
+ bot: { type: 'string', description: 'Bot 名称' },
156
+ chat_id: { type: 'number', description: '聊天 ID' },
157
+ },
158
+ required: ['bot', 'chat_id'],
159
+ },
160
+ platforms: ['telegram'],
161
+ scopes: ['group'],
162
+ permissionLevel: 'user',
163
+ execute: async (args) => {
164
+ const { bot: botId, chat_id } = args;
165
+ const bot = this.bots.get(botId);
166
+ if (!bot)
167
+ throw new Error(`Bot ${botId} 不存在`);
168
+ const count = await bot.getChatMemberCount(chat_id);
169
+ return { count, message: `群组共有 ${count} 名成员` };
170
+ },
171
+ });
172
+ // 创建邀请链接工具
173
+ this.addTool({
174
+ name: 'telegram_create_invite',
175
+ description: '创建 Telegram 群组邀请链接',
176
+ parameters: {
177
+ type: 'object',
178
+ properties: {
179
+ bot: { type: 'string', description: 'Bot 名称' },
180
+ chat_id: { type: 'number', description: '聊天 ID' },
181
+ },
182
+ required: ['bot', 'chat_id'],
183
+ },
184
+ platforms: ['telegram'],
185
+ scopes: ['group'],
186
+ permissionLevel: 'group_admin',
187
+ execute: async (args) => {
188
+ const { bot: botId, chat_id } = args;
189
+ const bot = this.bots.get(botId);
190
+ if (!bot)
191
+ throw new Error(`Bot ${botId} 不存在`);
192
+ const link = await bot.createInviteLink(chat_id);
193
+ return { invite_link: link, message: `邀请链接: ${link}` };
194
+ },
195
+ });
196
+ // 发起投票
197
+ this.addTool({
198
+ name: 'telegram_send_poll',
199
+ description: '在 Telegram 群组中发起投票',
200
+ parameters: {
201
+ type: 'object',
202
+ properties: {
203
+ bot: { type: 'string', description: 'Bot 名称' },
204
+ chat_id: { type: 'number', description: '聊天 ID' },
205
+ question: { type: 'string', description: '投票问题' },
206
+ options: { type: 'string', description: '选项,用逗号分隔' },
207
+ is_anonymous: { type: 'boolean', description: '是否匿名投票,默认 true' },
208
+ allows_multiple: { type: 'boolean', description: '是否允许多选,默认 false' },
209
+ },
210
+ required: ['bot', 'chat_id', 'question', 'options'],
211
+ },
212
+ platforms: ['telegram'],
213
+ scopes: ['group'],
214
+ permissionLevel: 'user',
215
+ execute: async (args) => {
216
+ const { bot: botId, chat_id, question, options, is_anonymous = true, allows_multiple = false } = args;
217
+ const bot = this.bots.get(botId);
218
+ if (!bot)
219
+ throw new Error(`Bot ${botId} 不存在`);
220
+ const optList = options.split(',').map((o) => o.trim()).filter(Boolean);
221
+ if (optList.length < 2)
222
+ return { success: false, message: '至少需要 2 个选项' };
223
+ const result = await bot.sendPoll(chat_id, question, optList, is_anonymous, allows_multiple);
224
+ return { success: true, message_id: result.message_id, message: '投票已发送' };
225
+ },
226
+ });
227
+ // 消息表情反应
228
+ this.addTool({
229
+ name: 'telegram_react',
230
+ description: '对 Telegram 消息添加表情反应',
231
+ parameters: {
232
+ type: 'object',
233
+ properties: {
234
+ bot: { type: 'string', description: 'Bot 名称' },
235
+ chat_id: { type: 'number', description: '聊天 ID' },
236
+ message_id: { type: 'number', description: '消息 ID' },
237
+ reaction: { type: 'string', description: '反应表情(如 👍、❤️、🔥)' },
238
+ },
239
+ required: ['bot', 'chat_id', 'message_id', 'reaction'],
240
+ },
241
+ platforms: ['telegram'],
242
+ scopes: ['group', 'private'],
243
+ permissionLevel: 'user',
244
+ execute: async (args) => {
245
+ const { bot: botId, chat_id, message_id, reaction } = args;
246
+ const bot = this.bots.get(botId);
247
+ if (!bot)
248
+ throw new Error(`Bot ${botId} 不存在`);
249
+ const success = await bot.setMessageReaction(chat_id, message_id, reaction);
250
+ return { success, message: success ? `已添加反应 ${reaction}` : '操作失败' };
251
+ },
252
+ });
253
+ // 发送贴纸
254
+ this.addTool({
255
+ name: 'telegram_send_sticker',
256
+ description: '发送 Telegram 贴纸',
257
+ parameters: {
258
+ type: 'object',
259
+ properties: {
260
+ bot: { type: 'string', description: 'Bot 名称' },
261
+ chat_id: { type: 'number', description: '聊天 ID' },
262
+ sticker: { type: 'string', description: '贴纸 file_id 或 URL' },
263
+ },
264
+ required: ['bot', 'chat_id', 'sticker'],
265
+ },
266
+ platforms: ['telegram'],
267
+ scopes: ['group', 'private'],
268
+ permissionLevel: 'user',
269
+ execute: async (args) => {
270
+ const { bot: botId, chat_id, sticker } = args;
271
+ const bot = this.bots.get(botId);
272
+ if (!bot)
273
+ throw new Error(`Bot ${botId} 不存在`);
274
+ const result = await bot.sendStickerMessage(chat_id, sticker);
275
+ return { success: true, message_id: result.message_id, message: '贴纸已发送' };
276
+ },
277
+ });
278
+ // 设置群权限
279
+ this.addTool({
280
+ name: 'telegram_set_permissions',
281
+ description: '设置 Telegram 群组的默认成员权限',
282
+ parameters: {
283
+ type: 'object',
284
+ properties: {
285
+ bot: { type: 'string', description: 'Bot 名称' },
286
+ chat_id: { type: 'number', description: '聊天 ID' },
287
+ can_send_messages: { type: 'boolean', description: '是否可以发消息' },
288
+ can_send_photos: { type: 'boolean', description: '是否可以发图片' },
289
+ can_send_videos: { type: 'boolean', description: '是否可以发视频' },
290
+ can_send_polls: { type: 'boolean', description: '是否可以发投票' },
291
+ can_send_other_messages: { type: 'boolean', description: '是否可以发贴纸/GIF等' },
292
+ can_add_web_page_previews: { type: 'boolean', description: '是否可以添加网页预览' },
293
+ can_change_info: { type: 'boolean', description: '是否可以改群信息' },
294
+ can_invite_users: { type: 'boolean', description: '是否可以邀请用户' },
295
+ can_pin_messages: { type: 'boolean', description: '是否可以置顶消息' },
296
+ },
297
+ required: ['bot', 'chat_id'],
298
+ },
299
+ platforms: ['telegram'],
300
+ scopes: ['group'],
301
+ permissionLevel: 'group_admin',
302
+ execute: async (args) => {
303
+ const { bot: botId, chat_id, ...perms } = args;
304
+ const bot = this.bots.get(botId);
305
+ if (!bot)
306
+ throw new Error(`Bot ${botId} 不存在`);
307
+ const permissions = {};
308
+ for (const [k, v] of Object.entries(perms)) {
309
+ if (typeof v === 'boolean')
310
+ permissions[k] = v;
311
+ }
312
+ const success = await bot.setChatPermissionsAll(chat_id, permissions);
313
+ return { success, message: success ? '群权限已更新' : '操作失败' };
314
+ },
315
+ });
316
+ // 设置群描述
317
+ this.addTool({
318
+ name: 'telegram_set_description',
319
+ description: '设置 Telegram 群组描述',
320
+ parameters: {
321
+ type: 'object',
322
+ properties: {
323
+ bot: { type: 'string', description: 'Bot 名称' },
324
+ chat_id: { type: 'number', description: '聊天 ID' },
325
+ description: { type: 'string', description: '群描述文字' },
326
+ },
327
+ required: ['bot', 'chat_id', 'description'],
328
+ },
329
+ platforms: ['telegram'],
330
+ scopes: ['group'],
331
+ permissionLevel: 'group_admin',
332
+ execute: async (args) => {
333
+ const { bot: botId, chat_id, description } = args;
334
+ const bot = this.bots.get(botId);
335
+ if (!bot)
336
+ throw new Error(`Bot ${botId} 不存在`);
337
+ const success = await bot.setChatDescription(chat_id, description);
338
+ return { success, message: success ? '群描述已更新' : '操作失败' };
339
+ },
340
+ });
341
+ this.plugin.logger.debug('已注册 Telegram 平台群组管理工具');
342
+ }
343
+ }
344
+ //# sourceMappingURL=adapter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"adapter.js","sourceRoot":"","sources":["../src/adapter.ts"],"names":[],"mappings":"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"}
package/lib/bot.d.ts ADDED
@@ -0,0 +1,140 @@
1
+ /**
2
+ * Telegram Bot 实现
3
+ */
4
+ import { Telegraf } from "telegraf";
5
+ import type { Message as TelegramMessage, ChatMember } from "telegraf/types";
6
+ import { Bot, Message, SendOptions } from "zhin.js";
7
+ import type { TelegramBotConfig } from "./types.js";
8
+ import type { TelegramAdapter } from "./adapter.js";
9
+ export declare class TelegramBot extends Telegraf implements Bot<TelegramBotConfig, TelegramMessage> {
10
+ adapter: TelegramAdapter;
11
+ $config: TelegramBotConfig;
12
+ $connected: boolean;
13
+ get pluginLogger(): import("zhin.js").Logger;
14
+ get $id(): string;
15
+ constructor(adapter: TelegramAdapter, $config: TelegramBotConfig);
16
+ $connect(): Promise<void>;
17
+ $disconnect(): Promise<void>;
18
+ private handleTelegramMessage;
19
+ $formatMessage(msg: TelegramMessage): Message<TelegramMessage>;
20
+ private $formatCallbackQuery;
21
+ private parseMessageContent;
22
+ private parseTextWithEntities;
23
+ $sendMessage(options: SendOptions): Promise<string>;
24
+ private sendContentToChat;
25
+ $recallMessage(id: string): Promise<void>;
26
+ /**
27
+ * 踢出用户
28
+ * @param chatId 聊天 ID
29
+ * @param userId 用户 ID
30
+ * @param untilDate 封禁截止时间(Unix 时间戳),0 表示永久
31
+ */
32
+ kickMember(chatId: number, userId: number, untilDate?: number): Promise<boolean>;
33
+ /**
34
+ * 解除封禁
35
+ * @param chatId 聊天 ID
36
+ * @param userId 用户 ID
37
+ */
38
+ unbanMember(chatId: number, userId: number): Promise<boolean>;
39
+ /**
40
+ * 限制用户权限(禁言等)
41
+ * @param chatId 聊天 ID
42
+ * @param userId 用户 ID
43
+ * @param permissions 权限设置
44
+ * @param untilDate 限制截止时间
45
+ */
46
+ restrictMember(chatId: number, userId: number, permissions: {
47
+ can_send_messages?: boolean;
48
+ can_send_media_messages?: boolean;
49
+ can_send_polls?: boolean;
50
+ can_send_other_messages?: boolean;
51
+ can_add_web_page_previews?: boolean;
52
+ can_change_info?: boolean;
53
+ can_invite_users?: boolean;
54
+ can_pin_messages?: boolean;
55
+ }, untilDate?: number): Promise<boolean>;
56
+ /**
57
+ * 禁言用户
58
+ * @param chatId 聊天 ID
59
+ * @param userId 用户 ID
60
+ * @param duration 禁言时长(秒),0 表示解除禁言
61
+ */
62
+ muteMember(chatId: number, userId: number, duration?: number): Promise<boolean>;
63
+ /**
64
+ * 提升/降级管理员
65
+ * @param chatId 聊天 ID
66
+ * @param userId 用户 ID
67
+ * @param promote 是否提升为管理员
68
+ */
69
+ setAdmin(chatId: number, userId: number, promote?: boolean): Promise<boolean>;
70
+ /**
71
+ * 设置聊天标题
72
+ * @param chatId 聊天 ID
73
+ * @param title 新标题
74
+ */
75
+ setChatTitle(chatId: number, title: string): Promise<boolean>;
76
+ /**
77
+ * 设置聊天描述
78
+ * @param chatId 聊天 ID
79
+ * @param description 新描述
80
+ */
81
+ setChatDescription(chatId: number, description: string): Promise<boolean>;
82
+ /**
83
+ * 置顶消息
84
+ * @param chatId 聊天 ID
85
+ * @param messageId 消息 ID
86
+ */
87
+ pinMessage(chatId: number, messageId: number): Promise<boolean>;
88
+ /**
89
+ * 取消置顶消息
90
+ * @param chatId 聊天 ID
91
+ * @param messageId 消息 ID(可选,不提供则取消所有置顶)
92
+ */
93
+ unpinMessage(chatId: number, messageId?: number): Promise<boolean>;
94
+ /**
95
+ * 获取聊天信息
96
+ * @param chatId 聊天 ID
97
+ */
98
+ getChatInfo(chatId: number): Promise<any>;
99
+ /**
100
+ * 获取聊天成员
101
+ * @param chatId 聊天 ID
102
+ * @param userId 用户 ID
103
+ */
104
+ getChatMember(chatId: number, userId: number): Promise<ChatMember>;
105
+ /**
106
+ * 获取管理员列表
107
+ * @param chatId 聊天 ID
108
+ */
109
+ getChatAdmins(chatId: number): Promise<ChatMember[]>;
110
+ /**
111
+ * 获取聊天成员数量
112
+ * @param chatId 聊天 ID
113
+ */
114
+ getChatMemberCount(chatId: number): Promise<number>;
115
+ /**
116
+ * 创建邀请链接
117
+ * @param chatId 聊天 ID
118
+ */
119
+ createInviteLink(chatId: number): Promise<string>;
120
+ sendPoll(chatId: number, question: string, options: string[], isAnonymous?: boolean, allowsMultipleAnswers?: boolean): Promise<TelegramMessage>;
121
+ setMessageReaction(chatId: number, messageId: number, reaction: string): Promise<boolean>;
122
+ sendStickerMessage(chatId: number, sticker: string): Promise<TelegramMessage>;
123
+ setChatPermissionsAll(chatId: number, permissions: {
124
+ can_send_messages?: boolean;
125
+ can_send_audios?: boolean;
126
+ can_send_documents?: boolean;
127
+ can_send_photos?: boolean;
128
+ can_send_videos?: boolean;
129
+ can_send_video_notes?: boolean;
130
+ can_send_voice_notes?: boolean;
131
+ can_send_polls?: boolean;
132
+ can_send_other_messages?: boolean;
133
+ can_add_web_page_previews?: boolean;
134
+ can_change_info?: boolean;
135
+ can_invite_users?: boolean;
136
+ can_pin_messages?: boolean;
137
+ can_manage_topics?: boolean;
138
+ }): Promise<boolean>;
139
+ }
140
+ //# sourceMappingURL=bot.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bot.d.ts","sourceRoot":"","sources":["../src/bot.ts"],"names":[],"mappings":"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"}