@secret-momo/notifier 1.0.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 ADDED
@@ -0,0 +1,18 @@
1
+ # notifier
2
+
3
+ 封装 Lark 和 Telegram 相关接口,方便个人使用。
4
+
5
+ ## Lark
6
+
7
+ 使用 Lark 发消息,需要准备如下环境变量:
8
+
9
+ - `LARK_APP_ID`
10
+ - `LARK_APP_SECRET`
11
+ - `LARK_CHAT_ID`
12
+
13
+ ## Telegram
14
+
15
+ 使用 Telegram 发消息,需要准备如下环境变量:
16
+
17
+ - `TELEGRAM_BOT_TOKEN`
18
+ - `TELEGRAM_GROUP_ID`
package/lib/index.d.ts ADDED
@@ -0,0 +1,3 @@
1
+ export * from './lark';
2
+ export * from './telegram';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,QAAQ,CAAC;AACvB,cAAc,YAAY,CAAC"}
package/lib/index.js ADDED
@@ -0,0 +1,2 @@
1
+ export { replyCardMessage, replyTextMessage, sendCardMessage, sendErrorCardMessage, sendPostMessage, sendTextMessage, startWsClient, updateCardMessage, uploadImage } from './lark/index.js';
2
+ export { e, sendMessage } from './telegram/index.js';
@@ -0,0 +1,261 @@
1
+ import type { Post } from './types/post.type';
2
+ import type { InteractiveCard, InteractiveCardHeader, InteractiveCardBody, InteractiveCardElement, InteractiveCardMarkdownElement, InteractiveCardButtonElement } from './types/card.type';
3
+ import type { LarkMessageReceiveEvent } from './types/receive.type';
4
+ export type { Post, InteractiveCard, InteractiveCardHeader, InteractiveCardBody, InteractiveCardElement, InteractiveCardMarkdownElement, InteractiveCardButtonElement, LarkMessageReceiveEvent, };
5
+ /**
6
+ * 发送普通文本消息,文档地址:
7
+ * https://open.feishu.cn/document/server-docs/im-v1/message-content-description/create_json#c9e08671
8
+ */
9
+ export declare function sendTextMessage(message: string): Promise<{
10
+ code?: number | undefined;
11
+ msg?: string | undefined;
12
+ data?: {
13
+ message_id?: string | undefined;
14
+ root_id?: string | undefined;
15
+ parent_id?: string | undefined;
16
+ thread_id?: string | undefined;
17
+ msg_type?: string | undefined;
18
+ create_time?: string | undefined;
19
+ update_time?: string | undefined;
20
+ deleted?: boolean | undefined;
21
+ updated?: boolean | undefined;
22
+ chat_id?: string | undefined;
23
+ sender?: {
24
+ id: string;
25
+ id_type: string;
26
+ sender_type: string;
27
+ tenant_key?: string | undefined;
28
+ sender_name?: string | undefined;
29
+ } | undefined;
30
+ body?: {
31
+ content: string;
32
+ } | undefined;
33
+ mentions?: {
34
+ key: string;
35
+ id: string;
36
+ id_type: string;
37
+ name: string;
38
+ tenant_key?: string | undefined;
39
+ }[] | undefined;
40
+ upper_message_id?: string | undefined;
41
+ message_app_link?: string | undefined;
42
+ message_position?: string | undefined;
43
+ thread_message_position?: string | undefined;
44
+ } | undefined;
45
+ }>;
46
+ /**
47
+ * 发送富文本消息,文档地址:
48
+ * https://open.feishu.cn/document/server-docs/im-v1/message-content-description/create_json#45e0953e
49
+ */
50
+ export declare function sendPostMessage(post: Post): Promise<{
51
+ code?: number | undefined;
52
+ msg?: string | undefined;
53
+ data?: {
54
+ message_id?: string | undefined;
55
+ root_id?: string | undefined;
56
+ parent_id?: string | undefined;
57
+ thread_id?: string | undefined;
58
+ msg_type?: string | undefined;
59
+ create_time?: string | undefined;
60
+ update_time?: string | undefined;
61
+ deleted?: boolean | undefined;
62
+ updated?: boolean | undefined;
63
+ chat_id?: string | undefined;
64
+ sender?: {
65
+ id: string;
66
+ id_type: string;
67
+ sender_type: string;
68
+ tenant_key?: string | undefined;
69
+ sender_name?: string | undefined;
70
+ } | undefined;
71
+ body?: {
72
+ content: string;
73
+ } | undefined;
74
+ mentions?: {
75
+ key: string;
76
+ id: string;
77
+ id_type: string;
78
+ name: string;
79
+ tenant_key?: string | undefined;
80
+ }[] | undefined;
81
+ upper_message_id?: string | undefined;
82
+ message_app_link?: string | undefined;
83
+ message_position?: string | undefined;
84
+ thread_message_position?: string | undefined;
85
+ } | undefined;
86
+ }>;
87
+ /**
88
+ * 发送卡片消息,文档地址:
89
+ * https://open.feishu.cn/document/server-docs/im-v1/message-content-description/create_json#3ea4c2d5
90
+ */
91
+ export declare function sendCardMessage(card: InteractiveCard): Promise<{
92
+ code?: number | undefined;
93
+ msg?: string | undefined;
94
+ data?: {
95
+ message_id?: string | undefined;
96
+ root_id?: string | undefined;
97
+ parent_id?: string | undefined;
98
+ thread_id?: string | undefined;
99
+ msg_type?: string | undefined;
100
+ create_time?: string | undefined;
101
+ update_time?: string | undefined;
102
+ deleted?: boolean | undefined;
103
+ updated?: boolean | undefined;
104
+ chat_id?: string | undefined;
105
+ sender?: {
106
+ id: string;
107
+ id_type: string;
108
+ sender_type: string;
109
+ tenant_key?: string | undefined;
110
+ sender_name?: string | undefined;
111
+ } | undefined;
112
+ body?: {
113
+ content: string;
114
+ } | undefined;
115
+ mentions?: {
116
+ key: string;
117
+ id: string;
118
+ id_type: string;
119
+ name: string;
120
+ tenant_key?: string | undefined;
121
+ }[] | undefined;
122
+ upper_message_id?: string | undefined;
123
+ message_app_link?: string | undefined;
124
+ message_position?: string | undefined;
125
+ thread_message_position?: string | undefined;
126
+ } | undefined;
127
+ }>;
128
+ /**
129
+ * 发送通用的错误卡片消息
130
+ */
131
+ export declare function sendErrorCardMessage(message: string): Promise<{
132
+ code?: number | undefined;
133
+ msg?: string | undefined;
134
+ data?: {
135
+ message_id?: string | undefined;
136
+ root_id?: string | undefined;
137
+ parent_id?: string | undefined;
138
+ thread_id?: string | undefined;
139
+ msg_type?: string | undefined;
140
+ create_time?: string | undefined;
141
+ update_time?: string | undefined;
142
+ deleted?: boolean | undefined;
143
+ updated?: boolean | undefined;
144
+ chat_id?: string | undefined;
145
+ sender?: {
146
+ id: string;
147
+ id_type: string;
148
+ sender_type: string;
149
+ tenant_key?: string | undefined;
150
+ sender_name?: string | undefined;
151
+ } | undefined;
152
+ body?: {
153
+ content: string;
154
+ } | undefined;
155
+ mentions?: {
156
+ key: string;
157
+ id: string;
158
+ id_type: string;
159
+ name: string;
160
+ tenant_key?: string | undefined;
161
+ }[] | undefined;
162
+ upper_message_id?: string | undefined;
163
+ message_app_link?: string | undefined;
164
+ message_position?: string | undefined;
165
+ thread_message_position?: string | undefined;
166
+ } | undefined;
167
+ }>;
168
+ /**
169
+ * [回复文本消息](https://open.feishu.cn/document/server-docs/im-v1/message/reply)
170
+ */
171
+ export declare function replyTextMessage(message_id: string, message: string): Promise<{
172
+ code?: number | undefined;
173
+ msg?: string | undefined;
174
+ data?: {
175
+ message_id?: string | undefined;
176
+ root_id?: string | undefined;
177
+ parent_id?: string | undefined;
178
+ thread_id?: string | undefined;
179
+ msg_type?: string | undefined;
180
+ create_time?: string | undefined;
181
+ update_time?: string | undefined;
182
+ deleted?: boolean | undefined;
183
+ updated?: boolean | undefined;
184
+ chat_id?: string | undefined;
185
+ sender?: {
186
+ id: string;
187
+ id_type: string;
188
+ sender_type: string;
189
+ tenant_key?: string | undefined;
190
+ sender_name?: string | undefined;
191
+ } | undefined;
192
+ body?: {
193
+ content: string;
194
+ } | undefined;
195
+ mentions?: {
196
+ key: string;
197
+ id: string;
198
+ id_type: string;
199
+ name: string;
200
+ tenant_key?: string | undefined;
201
+ }[] | undefined;
202
+ upper_message_id?: string | undefined;
203
+ message_app_link?: string | undefined;
204
+ message_position?: string | undefined;
205
+ thread_message_position?: string | undefined;
206
+ } | undefined;
207
+ }>;
208
+ export declare function replyCardMessage(message_id: string, card: InteractiveCard): Promise<{
209
+ code?: number | undefined;
210
+ msg?: string | undefined;
211
+ data?: {
212
+ message_id?: string | undefined;
213
+ root_id?: string | undefined;
214
+ parent_id?: string | undefined;
215
+ thread_id?: string | undefined;
216
+ msg_type?: string | undefined;
217
+ create_time?: string | undefined;
218
+ update_time?: string | undefined;
219
+ deleted?: boolean | undefined;
220
+ updated?: boolean | undefined;
221
+ chat_id?: string | undefined;
222
+ sender?: {
223
+ id: string;
224
+ id_type: string;
225
+ sender_type: string;
226
+ tenant_key?: string | undefined;
227
+ sender_name?: string | undefined;
228
+ } | undefined;
229
+ body?: {
230
+ content: string;
231
+ } | undefined;
232
+ mentions?: {
233
+ key: string;
234
+ id: string;
235
+ id_type: string;
236
+ name: string;
237
+ tenant_key?: string | undefined;
238
+ }[] | undefined;
239
+ upper_message_id?: string | undefined;
240
+ message_app_link?: string | undefined;
241
+ message_position?: string | undefined;
242
+ thread_message_position?: string | undefined;
243
+ } | undefined;
244
+ }>;
245
+ /**
246
+ * 更新卡片消息,文档地址:
247
+ * https://open.feishu.cn/document/server-docs/im-v1/message-card/patch
248
+ */
249
+ export declare function updateCardMessage(message_id: string, card: InteractiveCard): Promise<{
250
+ code?: number | undefined;
251
+ msg?: string | undefined;
252
+ data?: {} | undefined;
253
+ }>;
254
+ export declare function uploadImage(filePath: string): Promise<string>;
255
+ /**
256
+ * 启动 WebSocket 客户端
257
+ *
258
+ * @param callback 回调函数
259
+ */
260
+ export declare function startWsClient(callback: (event: LarkMessageReceiveEvent) => void): Promise<void>;
261
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/lark/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,132 @@
1
+ import { readFile } from 'node:fs/promises';
2
+ import * as lark from '@larksuiteoapi/node-sdk';
3
+
4
+ const client = new lark.Client({
5
+ appId: process.env.LARK_APP_ID ?? "",
6
+ appSecret: process.env.LARK_APP_SECRET ?? ""
7
+ });
8
+ const chatId = process.env.LARK_CHAT_ID ?? "";
9
+ async function sendTextMessage(message) {
10
+ return client.im.v1.message.create({
11
+ params: {
12
+ receive_id_type: "chat_id"
13
+ },
14
+ data: {
15
+ receive_id: chatId,
16
+ msg_type: "text",
17
+ content: JSON.stringify({ text: message })
18
+ }
19
+ });
20
+ }
21
+ async function sendPostMessage(post) {
22
+ return await client.im.v1.message.create({
23
+ params: { receive_id_type: "chat_id" },
24
+ data: {
25
+ receive_id: chatId,
26
+ msg_type: "post",
27
+ content: JSON.stringify(post)
28
+ }
29
+ });
30
+ }
31
+ async function sendCardMessage(card) {
32
+ return await client.im.v1.message.create({
33
+ params: { receive_id_type: "chat_id" },
34
+ data: {
35
+ receive_id: chatId,
36
+ msg_type: "interactive",
37
+ content: JSON.stringify(card)
38
+ }
39
+ });
40
+ }
41
+ async function sendErrorCardMessage(message) {
42
+ const card = {
43
+ schema: "2.0",
44
+ config: { update_multi: true },
45
+ header: {
46
+ template: "red",
47
+ padding: "8px 8px 8px 8px",
48
+ icon: { tag: "standard_icon", token: "buzz_outlined" },
49
+ title: { content: "\u9519\u8BEF\u63D0\u793A", tag: "plain_text" }
50
+ },
51
+ body: {
52
+ direction: "vertical",
53
+ elements: [
54
+ {
55
+ tag: "markdown",
56
+ content: `<font color="red">${message}</font>`,
57
+ text_size: "normal_v2",
58
+ text_align: "left",
59
+ margin: "0px 0px 0px 0px"
60
+ }
61
+ ]
62
+ }
63
+ };
64
+ if (process.env.RUN_URL) {
65
+ card.body.elements.push({
66
+ tag: "button",
67
+ type: "danger_filled",
68
+ width: "default",
69
+ size: "tiny",
70
+ margin: "0px 0px 0px 0px",
71
+ behaviors: [
72
+ {
73
+ type: "open_url",
74
+ default_url: process.env.RUN_URL
75
+ }
76
+ ],
77
+ text: {
78
+ tag: "plain_text",
79
+ content: "\u67E5\u770B\u8BE6\u60C5"
80
+ }
81
+ });
82
+ }
83
+ return await sendCardMessage(card);
84
+ }
85
+ async function replyTextMessage(message_id, message) {
86
+ return await client.im.v1.message.reply({
87
+ path: { message_id },
88
+ data: {
89
+ msg_type: "text",
90
+ reply_in_thread: false,
91
+ content: JSON.stringify({ text: message })
92
+ }
93
+ });
94
+ }
95
+ async function replyCardMessage(message_id, card) {
96
+ return await client.im.v1.message.reply({
97
+ path: { message_id },
98
+ data: {
99
+ msg_type: "interactive",
100
+ reply_in_thread: false,
101
+ content: JSON.stringify(card)
102
+ }
103
+ });
104
+ }
105
+ async function updateCardMessage(message_id, card) {
106
+ return await client.im.v1.message.patch({
107
+ path: { message_id },
108
+ data: {
109
+ content: JSON.stringify(card)
110
+ }
111
+ });
112
+ }
113
+ async function uploadImage(filePath) {
114
+ const res = await client.im.v1.image.create({
115
+ data: {
116
+ image_type: "message",
117
+ image: await readFile(filePath)
118
+ }
119
+ });
120
+ return res.image_key;
121
+ }
122
+ function startWsClient(callback) {
123
+ const wsClient = new lark.WSClient({
124
+ appId: process.env.LARK_APP_ID ?? "",
125
+ appSecret: process.env.LARK_APP_SECRET ?? ""
126
+ });
127
+ return wsClient.start({
128
+ eventDispatcher: new lark.EventDispatcher({}).register({ "im.message.receive_v1": callback })
129
+ });
130
+ }
131
+
132
+ export { replyCardMessage, replyTextMessage, sendCardMessage, sendErrorCardMessage, sendPostMessage, sendTextMessage, startWsClient, updateCardMessage, uploadImage };
@@ -0,0 +1,188 @@
1
+ /**
2
+ * 飞书卡片消息类型
3
+ */
4
+ export interface InteractiveCard {
5
+ schema: '2.0';
6
+ config: InteractiveCardConfig;
7
+ header?: InteractiveCardHeader;
8
+ body: InteractiveCardBody;
9
+ }
10
+ type TextSize = 'heading' | 'normal' | 'normal_v2' | 'notation';
11
+ type HorizontalAlign = 'left' | 'center' | 'right';
12
+ type VerticalAlign = 'top' | 'center' | 'bottom';
13
+ interface InteractiveCardConfig {
14
+ enable_forward?: boolean;
15
+ update_multi?: boolean;
16
+ wide_screen_mode?: boolean;
17
+ }
18
+ export interface InteractiveCardHeader {
19
+ template: 'blue' | 'wathet' | 'turquoise' | 'green' | 'yellow' | 'orange' | 'red' | 'carmine' | 'violet' | 'purple' | 'indigo' | 'grey' | 'default';
20
+ padding?: string;
21
+ icon: {
22
+ tag: 'standard_icon';
23
+ token: string;
24
+ };
25
+ title: {
26
+ content: string;
27
+ tag: 'plain_text';
28
+ };
29
+ subtitle?: {
30
+ content: string;
31
+ tag: 'plain_text';
32
+ };
33
+ text_tag_list?: {
34
+ tag: 'text_tag';
35
+ text: {
36
+ content: string;
37
+ tag: 'plain_text';
38
+ };
39
+ color: 'green' | 'blue' | 'red' | 'yellow' | 'orange' | 'purple' | 'pink' | 'brown' | 'grey' | 'black';
40
+ }[];
41
+ }
42
+ export interface InteractiveCardBody {
43
+ direction: 'vertical' | 'horizontal';
44
+ padding?: string;
45
+ horizontal_spacing?: string;
46
+ vertical_spacing?: string;
47
+ vertical_align?: VerticalAlign;
48
+ horizontal_align?: HorizontalAlign;
49
+ elements: InteractiveCardElement[];
50
+ }
51
+ export type InteractiveCardElement = InteractiveCardButtonElement | InteractiveCardChartElement | InteractiveCardColumnSetElement | InteractiveCardDivElement | InteractiveCardDividerElement | InteractiveCardImgElement | InteractiveCardMarkdownElement | InteractiveCardTableElement;
52
+ interface InteractiveCardBaseElement {
53
+ margin?: string;
54
+ }
55
+ export interface InteractiveCardMarkdownElement extends InteractiveCardBaseElement {
56
+ tag: 'markdown';
57
+ content: string;
58
+ text_size?: TextSize;
59
+ text_align?: HorizontalAlign;
60
+ }
61
+ type ButtonType = 'primary_filled' | 'danger_filled' | 'default' | 'primary' | 'danger' | 'primary_text' | 'danger_text';
62
+ type ButtonSize = 'tiny' | 'small' | 'medium' | 'large';
63
+ type ButtonWidth = 'default' | 'fill' | string;
64
+ interface ButtonBehavior {
65
+ type: 'open_url';
66
+ default_url: string;
67
+ }
68
+ export interface InteractiveCardButtonElement extends InteractiveCardBaseElement {
69
+ tag: 'button';
70
+ type: ButtonType;
71
+ width: ButtonWidth;
72
+ size: ButtonSize;
73
+ behaviors?: ButtonBehavior[];
74
+ text: {
75
+ tag: 'plain_text';
76
+ content: string;
77
+ };
78
+ }
79
+ export interface InteractiveCardTableElement extends InteractiveCardBaseElement {
80
+ tag: 'table';
81
+ row_height: 'low' | 'middle' | 'high' | string;
82
+ header_style: {
83
+ background_style: 'none' | 'grey';
84
+ bold: boolean;
85
+ lines: number;
86
+ };
87
+ page_size: number;
88
+ columns: InteractiveCardTableColumn[];
89
+ rows: Array<Record<string, any>>;
90
+ }
91
+ interface InteractiveCardTableColumn {
92
+ data_type: 'text' | 'options' | 'number' | 'date' | 'markdown' | 'persons';
93
+ name: string;
94
+ display_name: string;
95
+ horizontal_align?: HorizontalAlign;
96
+ vertical_align?: VerticalAlign;
97
+ width?: 'auto' | string;
98
+ format?: {
99
+ precision: number;
100
+ };
101
+ }
102
+ export interface InteractiveCardDividerElement extends InteractiveCardBaseElement {
103
+ tag: 'hr';
104
+ }
105
+ export interface InteractiveCardDivElement extends InteractiveCardBaseElement {
106
+ tag: 'div';
107
+ icon?: {
108
+ tag: 'standard_icon';
109
+ token: string;
110
+ color?: 'black' | 'grey' | 'red' | 'white' | 'blue' | 'green' | 'orange' | 'light_grey';
111
+ };
112
+ text: {
113
+ tag: 'plain_text';
114
+ content: string;
115
+ text_size?: TextSize;
116
+ text_align?: HorizontalAlign;
117
+ text_color?: 'default' | 'grey' | 'red' | 'green' | 'orange';
118
+ };
119
+ }
120
+ export interface InteractiveCardChartElement extends InteractiveCardBaseElement {
121
+ tag: 'chart';
122
+ chart_spec: InteractiveCardChartSpec;
123
+ preview: boolean;
124
+ height: 'auto' | string;
125
+ aspect_ratio?: '1:1' | '2:1' | '4:3' | '16:9';
126
+ }
127
+ interface InteractiveCardChartSpec {
128
+ type: 'bar' | 'line';
129
+ title: {
130
+ text: string;
131
+ };
132
+ data: {
133
+ values: Array<Record<string, string | number>>;
134
+ };
135
+ xField: string;
136
+ yField: string;
137
+ axes?: Array<{
138
+ orient: 'left' | 'right';
139
+ min: number;
140
+ max: number;
141
+ }>;
142
+ point?: {
143
+ visible: boolean;
144
+ };
145
+ line?: {
146
+ style?: {
147
+ lineWidth?: number;
148
+ stroke?: string;
149
+ };
150
+ };
151
+ }
152
+ export interface InteractiveCardColumnSetElement extends InteractiveCardBaseElement {
153
+ tag: 'column_set';
154
+ flex_mode?: 'stretch' | 'bisect' | 'trisect' | 'flow';
155
+ background_style?: string;
156
+ horizontal_spacing: string;
157
+ horizontal_align: HorizontalAlign;
158
+ columns: (InteractiveCardColumnElement | null)[];
159
+ }
160
+ interface InteractiveCardColumnElement {
161
+ tag: 'column';
162
+ elements: InteractiveCardMarkdownElement[];
163
+ width: 'weighted' | 'auto' | string;
164
+ background_style?: string;
165
+ action?: {
166
+ multi_url: {
167
+ url: string;
168
+ };
169
+ };
170
+ padding?: string;
171
+ direction?: 'vertical' | 'horizontal';
172
+ horizontal_spacing?: string;
173
+ vertical_spacing?: string;
174
+ horizontal_align?: HorizontalAlign;
175
+ vertical_align?: VerticalAlign;
176
+ weight?: number;
177
+ }
178
+ export interface InteractiveCardImgElement extends InteractiveCardBaseElement {
179
+ tag: 'img';
180
+ img_key: string;
181
+ preview?: boolean;
182
+ transparent?: boolean;
183
+ scale_type: 'fit_horizontal' | 'crop_center' | 'crop_top';
184
+ size?: 'stretch' | 'large' | 'medium' | 'small' | 'tiny' | string;
185
+ corner_radius?: string;
186
+ }
187
+ export {};
188
+ //# sourceMappingURL=card.type.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"card.type.d.ts","sourceRoot":"","sources":["../../../src/lark/types/card.type.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,65 @@
1
+ /**
2
+ * 飞书富文本消息类型
3
+ */
4
+ export interface Post {
5
+ zh_cn: PostMessage;
6
+ en_us?: PostMessage;
7
+ }
8
+ interface PostMessage {
9
+ title?: string;
10
+ content: PostParagraph[];
11
+ }
12
+ type PostParagraph = (PostTextElement | PostLinkElement | PostAtElement | PostEmotionElement)[] | [PostMarkdownElement] | [PostCodeElement] | [PostImageElement] | [PostMediaElement] | [PostDividerElement];
13
+ type TextStyle = 'bold' | 'italic' | 'underline' | 'lineThrough';
14
+ /** 文本元素 */
15
+ interface PostTextElement {
16
+ tag: 'text';
17
+ text: string;
18
+ style?: TextStyle[];
19
+ }
20
+ /** Markdown 元素 */
21
+ interface PostMarkdownElement {
22
+ tag: 'md';
23
+ text: string;
24
+ }
25
+ /** 代码块元素 */
26
+ interface PostCodeElement {
27
+ tag: 'code_block';
28
+ language: string;
29
+ text: string;
30
+ }
31
+ /** 超链接元素 */
32
+ interface PostLinkElement {
33
+ tag: 'a';
34
+ href: string;
35
+ text: string;
36
+ style?: TextStyle[];
37
+ }
38
+ /** @人 元素 */
39
+ interface PostAtElement {
40
+ tag: 'at';
41
+ user_id: string;
42
+ style?: TextStyle[];
43
+ }
44
+ /** 图片元素 */
45
+ interface PostImageElement {
46
+ tag: 'img';
47
+ image_key: string;
48
+ }
49
+ /** 媒体元素 */
50
+ interface PostMediaElement {
51
+ tag: 'media';
52
+ file_key: string;
53
+ image_key?: string;
54
+ }
55
+ /** 表情元素 */
56
+ interface PostEmotionElement {
57
+ tag: 'emotion';
58
+ emoji_type: string;
59
+ }
60
+ /** 分割线元素 */
61
+ interface PostDividerElement {
62
+ tag: 'hr';
63
+ }
64
+ export {};
65
+ //# sourceMappingURL=post.type.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"post.type.d.ts","sourceRoot":"","sources":["../../../src/lark/types/post.type.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,WAAW,IAAI;IACnB,KAAK,EAAE,WAAW,CAAC;IACnB,KAAK,CAAC,EAAE,WAAW,CAAC;CACrB;AAED,UAAU,WAAW;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,aAAa,EAAE,CAAC;CAC1B;AAED,KAAK,aAAa,GACd,CAAC,eAAe,GAAG,eAAe,GAAG,aAAa,GAAG,kBAAkB,CAAC,EAAE,GAC1E,CAAC,mBAAmB,CAAC,GACrB,CAAC,eAAe,CAAC,GACjB,CAAC,gBAAgB,CAAC,GAClB,CAAC,gBAAgB,CAAC,GAClB,CAAC,kBAAkB,CAAC,CAAC;AAEzB,KAAK,SAAS,GAAG,MAAM,GAAG,QAAQ,GAAG,WAAW,GAAG,aAAa,CAAC;AAEjE,WAAW;AACX,UAAU,eAAe;IACvB,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,SAAS,EAAE,CAAC;CACrB;AAED,kBAAkB;AAClB,UAAU,mBAAmB;IAC3B,GAAG,EAAE,IAAI,CAAC;IACV,IAAI,EAAE,MAAM,CAAC;CACd;AAED,YAAY;AACZ,UAAU,eAAe;IACvB,GAAG,EAAE,YAAY,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;CACd;AAED,YAAY;AACZ,UAAU,eAAe;IACvB,GAAG,EAAE,GAAG,CAAC;IACT,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,SAAS,EAAE,CAAC;CACrB;AAED,YAAY;AACZ,UAAU,aAAa;IACrB,GAAG,EAAE,IAAI,CAAC;IACV,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,SAAS,EAAE,CAAC;CACrB;AAED,WAAW;AACX,UAAU,gBAAgB;IACxB,GAAG,EAAE,KAAK,CAAC;IACX,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,WAAW;AACX,UAAU,gBAAgB;IACxB,GAAG,EAAE,OAAO,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,WAAW;AACX,UAAU,kBAAkB;IAC1B,GAAG,EAAE,SAAS,CAAC;IAEf,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,YAAY;AACZ,UAAU,kBAAkB;IAC1B,GAAG,EAAE,IAAI,CAAC;CACX"}
@@ -0,0 +1,23 @@
1
+ export interface LarkMessageReceiveEvent {
2
+ event_id?: string;
3
+ app_id?: string;
4
+ event_type?: string;
5
+ tenant_key?: string;
6
+ message?: {
7
+ chat_id: string;
8
+ chat_type: string;
9
+ content: string;
10
+ message_id: string;
11
+ message_type: string;
12
+ };
13
+ sender?: {
14
+ sender_id?: {
15
+ open_id?: string;
16
+ union_id?: string;
17
+ user_id?: string;
18
+ };
19
+ sender_type?: string;
20
+ tenant_key?: string;
21
+ };
22
+ }
23
+ //# sourceMappingURL=receive.type.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"receive.type.d.ts","sourceRoot":"","sources":["../../../src/lark/types/receive.type.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE;QACR,OAAO,EAAE,MAAM,CAAC;QAChB,SAAS,EAAE,MAAM,CAAC;QAClB,OAAO,EAAE,MAAM,CAAC;QAChB,UAAU,EAAE,MAAM,CAAC;QACnB,YAAY,EAAE,MAAM,CAAC;KACtB,CAAC;IACF,MAAM,CAAC,EAAE;QACP,SAAS,CAAC,EAAE;YACV,OAAO,CAAC,EAAE,MAAM,CAAC;YACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;YAClB,OAAO,CAAC,EAAE,MAAM,CAAC;SAClB,CAAC;QACF,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,UAAU,CAAC,EAAE,MAAM,CAAC;KACrB,CAAC;CACH"}
@@ -0,0 +1,15 @@
1
+ export declare function e(text: string): string;
2
+ interface TelegramResponse {
3
+ ok: boolean;
4
+ error_code: number;
5
+ description: string;
6
+ result: {
7
+ message_id: number;
8
+ from: {
9
+ id: number;
10
+ };
11
+ };
12
+ }
13
+ export declare function sendMessage(text: string): Promise<TelegramResponse>;
14
+ export {};
15
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/telegram/index.ts"],"names":[],"mappings":"AAGA,wBAAgB,CAAC,CAAC,IAAI,EAAE,MAAM,UAE7B;AAED,UAAU,gBAAgB;IACxB,EAAE,EAAE,OAAO,CAAC;IACZ,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE;QACN,UAAU,EAAE,MAAM,CAAC;QACnB,IAAI,EAAE;YACJ,EAAE,EAAE,MAAM,CAAC;SACZ,CAAC;KACH,CAAC;CACH;AAED,wBAAsB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAqBzE"}
@@ -0,0 +1,27 @@
1
+ import { fetch, warn } from '@secret-momo/utils';
2
+
3
+ function e(text) {
4
+ return text.replace(/[_*[\]()~`>#+\-=|{}.!]/g, "\\$&");
5
+ }
6
+ async function sendMessage(text) {
7
+ const token = process.env.TELEGRAM_BOT_TOKEN;
8
+ const url = `https://api.telegram.org/bot${token}/sendMessage`;
9
+ const res = await fetch(url, {
10
+ method: "POST",
11
+ headers: { "Content-Type": "application/json" },
12
+ body: JSON.stringify({
13
+ chat_id: process.env.TELEGRAM_GROUP_ID,
14
+ text,
15
+ parse_mode: "MarkdownV2",
16
+ disable_web_page_preview: true,
17
+ disable_notification: true
18
+ })
19
+ });
20
+ const { ok, status, statusText } = res;
21
+ if (!ok) {
22
+ warn(`send message(${text}) failed: ${status} ${statusText}`);
23
+ }
24
+ return res.json();
25
+ }
26
+
27
+ export { e, sendMessage };
package/package.json ADDED
@@ -0,0 +1,64 @@
1
+ {
2
+ "name": "@secret-momo/notifier",
3
+ "version": "1.0.0",
4
+ "module": "src/index.ts",
5
+ "type": "module",
6
+ "publishConfig": {
7
+ "access": "public"
8
+ },
9
+ "files": [
10
+ "lib"
11
+ ],
12
+ "main": "./lib/index.js",
13
+ "types": "./lib/index.d.ts",
14
+ "exports": {
15
+ ".": {
16
+ "types": "./lib/index.d.ts",
17
+ "import": "./lib/index.js"
18
+ },
19
+ "./lark": {
20
+ "types": "./lib/lark/index.d.ts",
21
+ "import": "./lib/lark/index.js"
22
+ },
23
+ "./telegram": {
24
+ "types": "./lib/telegram/index.d.ts",
25
+ "import": "./lib/telegram/index.js"
26
+ }
27
+ },
28
+ "scripts": {
29
+ "postinstall": "bun outdated",
30
+ "prepublishOnly": "bun run build",
31
+ "build": "rm -rf lib && rollup -c && tsc -p tsconfig.json"
32
+ },
33
+ "lint-staged": {
34
+ "*.{ts,tsx,js,jsx}": [
35
+ "bunx eslint --fix",
36
+ "bunx prettier --write"
37
+ ],
38
+ "*.{json,md}": [
39
+ "bunx prettier --write"
40
+ ]
41
+ },
42
+ "devDependencies": {
43
+ "@eslint/config-helpers": "0.6.0",
44
+ "@eslint/js": "10.0.1",
45
+ "@types/bun": "1.3.14",
46
+ "eslint": "10.4.1",
47
+ "eslint-plugin-import": "2.32.0",
48
+ "eslint-plugin-react": "7.37.5",
49
+ "eslint-plugin-react-hooks": "7.1.1",
50
+ "eslint-plugin-unused-imports": "4.4.1",
51
+ "husky": "9.1.7",
52
+ "jiti": "2.7.0",
53
+ "lint-staged": "17.0.7",
54
+ "prettier": "3.8.3",
55
+ "rollup": "4.61.1",
56
+ "rollup-plugin-esbuild": "6.2.1",
57
+ "typescript": "6.0.3",
58
+ "typescript-eslint": "8.60.1"
59
+ },
60
+ "dependencies": {
61
+ "@larksuiteoapi/node-sdk": "1.66.1",
62
+ "@secret-momo/utils": "1.0.2"
63
+ }
64
+ }