@zhin.js/plugin-rss 0.0.1 → 0.0.2

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/lib/index.js CHANGED
@@ -34,7 +34,7 @@
34
34
  import { usePlugin, Cron, ZhinTool, MessageCommand, Schema } from "zhin.js";
35
35
  import Parser from "rss-parser";
36
36
  const plugin = usePlugin();
37
- const { logger, root, addCommand, addCron, useContext, onDispose, declareSkill, declareConfig } = plugin;
37
+ const { logger, root, addCommand, addCron, useContext, onDispose, declareConfig } = plugin;
38
38
  // ─── 配置 ─────────────────────────────────────────────────────────────────────
39
39
  const config = declareConfig("rss", Schema.object({
40
40
  pollCron: Schema.string().default("*/5 * * * *").description("轮询频率 (Cron 表达式)"),
@@ -482,15 +482,5 @@ plugin.addTool(new ZhinTool("rss_preview_feed")
482
482
  }
483
483
  })
484
484
  .toTool());
485
- // ─── Skill 声明 ──────────────────────────────────────────────────────────────
486
- declareSkill({
487
- description: "RSS/Atom 订阅推送系统:订阅 RSS 源并自动推送新内容到群聊或私聊。支持订阅管理、手动检查、预览。可用 AI 工具查询订阅和预览 feed。",
488
- keywords: [
489
- "rss", "atom", "feed", "订阅", "推送",
490
- "rss-add", "rss-remove", "rss-list", "rss-check", "rss-preview",
491
- "subscribe", "unsubscribe",
492
- ],
493
- tags: ["rss", "feed", "subscription", "push"],
494
- });
495
485
  logger.info(`插件已加载 (轮询=${config.pollCron}, 上限=${config.maxPerGroup}/会话)`);
496
486
  //# sourceMappingURL=index.js.map
package/lib/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@zhin.js/plugin-rss",
3
- "version": "0.0.1",
3
+ "version": "0.0.2",
4
4
  "description": "RSS/Atom feed subscription & push plugin for Zhin.js — subscribe feeds, auto-poll, push new items to groups",
5
5
  "type": "module",
6
6
  "main": "./lib/index.js",
@@ -14,7 +14,11 @@
14
14
  "./package.json": "./package.json"
15
15
  },
16
16
  "files": [
17
+ "src",
17
18
  "lib",
19
+ "client",
20
+ "dist",
21
+ "skills",
18
22
  "README.md"
19
23
  ],
20
24
  "keywords": [
@@ -41,10 +45,10 @@
41
45
  },
42
46
  "devDependencies": {
43
47
  "typescript": "^5.3.3",
44
- "zhin.js": "1.0.43"
48
+ "zhin.js": "1.0.52"
45
49
  },
46
50
  "peerDependencies": {
47
- "zhin.js": ">=1.0.43"
51
+ "zhin.js": ">=1.0.52"
48
52
  },
49
53
  "repository": {
50
54
  "type": "git",
@@ -0,0 +1,27 @@
1
+ ---
2
+ name: rss
3
+ description: RSS/Atom 订阅推送系统:订阅 RSS 源并自动推送新内容到群聊或私聊。支持订阅管理、手动检查、预览。可用 AI 工具查询订阅和预览 feed。
4
+ keywords:
5
+ - rss
6
+ - atom
7
+ - feed
8
+ - 订阅
9
+ - 推送
10
+ - rss-add
11
+ - rss-remove
12
+ - rss-list
13
+ - rss-check
14
+ - rss-preview
15
+ - subscribe
16
+ - unsubscribe
17
+ tags:
18
+ - rss
19
+ - feed
20
+ - subscription
21
+ - push
22
+ tools: []
23
+ ---
24
+
25
+ ## 执行规则
26
+
27
+ - 使用 `rss_*` 工具管理订阅与预览;遵守每群/会话订阅上限。
package/src/index.ts ADDED
@@ -0,0 +1,549 @@
1
+ /**
2
+ * @zhin.js/plugin-rss
3
+ *
4
+ * RSS/Atom 订阅推送插件
5
+ *
6
+ * 功能:
7
+ * - 订阅任意 RSS/Atom feed
8
+ * - 基于 Cron 的定时轮询(默认每 5 分钟)
9
+ * - 新条目自动推送到订阅的群聊/私聊
10
+ * - 支持多群订阅同一 feed(去重共享)
11
+ * - 订阅管理(增删查)
12
+ * - 手动检查更新
13
+ * - 数据库持久化
14
+ * - AI 工具集成
15
+ *
16
+ * 命令:
17
+ * rss-add <url> 订阅 RSS 源
18
+ * rss-remove <url> 取消订阅
19
+ * rss-list 查看当前订阅列表
20
+ * rss-check [url] 手动检查更新
21
+ * rss-preview <url> 预览 feed 最新内容(不订阅)
22
+ *
23
+ * 配置(zhin.config.yml):
24
+ * ```yaml
25
+ * plugins:
26
+ * - "@zhin.js/plugin-rss"
27
+ * rss:
28
+ * pollCron: "0/5 * * * *"
29
+ * maxPerGroup: 30
30
+ * maxItems: 5
31
+ * timeout: 15000
32
+ * ```
33
+ */
34
+ import { usePlugin, Cron, ZhinTool, MessageCommand, Adapter, Schema } from "zhin.js";
35
+ import Parser from "rss-parser";
36
+
37
+ const plugin = usePlugin();
38
+ const { logger, root, addCommand, addCron, useContext, onDispose, declareConfig } = plugin;
39
+
40
+ // ─── 配置 ─────────────────────────────────────────────────────────────────────
41
+
42
+ const config = declareConfig("rss", Schema.object({
43
+ pollCron: Schema.string().default("*/5 * * * *").description("轮询频率 (Cron 表达式)"),
44
+ maxPerGroup: Schema.number().default(30).min(1).max(200).description("每会话最大订阅数"),
45
+ maxItems: Schema.number().default(5).min(1).max(20).description("单次推送最多条数"),
46
+ timeout: Schema.number().default(15_000).min(1000).max(60000).description("拉取超时 (ms)"),
47
+ }));
48
+
49
+ // ─── 类型 ─────────────────────────────────────────────────────────────────────
50
+
51
+ interface FeedItem {
52
+ title: string;
53
+ link: string;
54
+ date: string;
55
+ summary: string;
56
+ guid: string;
57
+ }
58
+
59
+ // ─── Feed 解析器 ──────────────────────────────────────────────────────────────
60
+
61
+ const parser = new Parser({
62
+ timeout: config.timeout,
63
+ headers: {
64
+ "User-Agent": "ZhinBot-RSS/1.0",
65
+ Accept: "application/rss+xml, application/atom+xml, application/xml, text/xml",
66
+ },
67
+ });
68
+
69
+ async function fetchFeed(url: string): Promise<{ title: string; items: FeedItem[] }> {
70
+ const feed = await parser.parseURL(url);
71
+ const items: FeedItem[] = (feed.items || []).slice(0, 20).map((item) => ({
72
+ title: (item.title || "").trim(),
73
+ link: (item.link || "").trim(),
74
+ date: item.isoDate || item.pubDate || "",
75
+ summary: stripHtml(item.contentSnippet || item.content || "").slice(0, 200),
76
+ guid: item.guid || item.link || item.title || "",
77
+ }));
78
+ return { title: (feed.title || url).trim(), items };
79
+ }
80
+
81
+ function stripHtml(html: string): string {
82
+ return html.replace(/<[^>]*>/g, "").replace(/&nbsp;/g, " ").replace(/\s+/g, " ").trim();
83
+ }
84
+
85
+ // ─── 数据库 ───────────────────────────────────────────────────────────────────
86
+
87
+ let _db: any = null;
88
+
89
+ function getSubs(): any {
90
+ if (!_db) {
91
+ const database = root.inject("database" as any) as any;
92
+ if (database) _db = database;
93
+ }
94
+ return _db?.models?.get("rss_subscriptions") ?? null;
95
+ }
96
+
97
+ function getSeen(): any {
98
+ return _db?.models?.get("rss_seen_items") ?? null;
99
+ }
100
+
101
+ useContext("database", (db: any) => {
102
+ _db = db;
103
+ db.define("rss_subscriptions", {
104
+ url: { type: "text", nullable: false },
105
+ feed_title: { type: "text", default: "" },
106
+ adapter_name: { type: "text", default: "" },
107
+ bot_id: { type: "text", default: "" },
108
+ channel_type: { type: "text", default: "group" },
109
+ channel_id: { type: "text", default: "" },
110
+ creator_id: { type: "text", default: "" },
111
+ creator_name: { type: "text", default: "" },
112
+ created_at: { type: "text", default: "" },
113
+ });
114
+ db.define("rss_seen_items", {
115
+ feed_url: { type: "text", nullable: false },
116
+ item_guid: { type: "text", nullable: false },
117
+ item_title: { type: "text", default: "" },
118
+ seen_at: { type: "text", default: "" },
119
+ });
120
+ logger.info("RSS 数据模型已注册");
121
+ });
122
+
123
+ function ts(): string {
124
+ return new Date().toISOString();
125
+ }
126
+
127
+ // ─── 辅助:消息上下文提取 ─────────────────────────────────────────────────────
128
+
129
+ function extractChannelInfo(message: any): {
130
+ adapterName: string;
131
+ botId: string;
132
+ channelType: string;
133
+ channelId: string;
134
+ } {
135
+ const channelType = message.$channel?.type || (message.type === "group" ? "group" : "private");
136
+ const channelId = String(message.$channel?.id || message.$group?.id || message.$target?.id || message.$sender?.id || "");
137
+ return {
138
+ adapterName: String(message.$adapter || ""),
139
+ botId: String(message.$bot || ""),
140
+ channelType,
141
+ channelId,
142
+ };
143
+ }
144
+
145
+ // ─── 推送引擎 ─────────────────────────────────────────────────────────────────
146
+
147
+ async function pushToChannel(
148
+ adapterName: string,
149
+ botId: string,
150
+ channelType: string,
151
+ channelId: string,
152
+ content: string,
153
+ ): Promise<boolean> {
154
+ try {
155
+ const adapter = root.inject(adapterName as any) as Adapter | null;
156
+ if (!adapter) return false;
157
+ await adapter.sendMessage({
158
+ context: adapterName,
159
+ bot: botId,
160
+ type: channelType as "group" | "private" | "channel",
161
+ id: channelId,
162
+ content,
163
+ });
164
+ return true;
165
+ } catch (e) {
166
+ logger.warn(`推送失败 [${adapterName}:${botId} → ${channelType}:${channelId}]: ${(e as Error).message}`);
167
+ return false;
168
+ }
169
+ }
170
+
171
+ function formatItems(feedTitle: string, items: FeedItem[]): string {
172
+ const lines = [`${feedTitle} 有 ${items.length} 条新内容:`];
173
+ for (const item of items.slice(0, config.maxItems)) {
174
+ lines.push("");
175
+ lines.push(`${item.title}`);
176
+ if (item.summary) lines.push(item.summary);
177
+ if (item.link) lines.push(item.link);
178
+ }
179
+ if (items.length > config.maxItems) {
180
+ lines.push(`\n...还有 ${items.length - config.maxItems} 条,请查看源站`);
181
+ }
182
+ return lines.join("\n");
183
+ }
184
+
185
+ // ─── 轮询逻辑 ─────────────────────────────────────────────────────────────────
186
+
187
+ let polling = false;
188
+
189
+ async function pollAllFeeds(): Promise<void> {
190
+ const Subs = getSubs();
191
+ const Seen = getSeen();
192
+ if (!Subs || !Seen) return;
193
+ if (polling) return;
194
+ polling = true;
195
+
196
+ try {
197
+ const allSubs: any[] = await Subs.select();
198
+ if (allSubs.length === 0) return;
199
+
200
+ const urlSet = new Set(allSubs.map((s: any) => s.url));
201
+
202
+ for (const url of urlSet) {
203
+ try {
204
+ const { title, items } = await fetchFeed(url);
205
+ if (items.length === 0) continue;
206
+
207
+ const seenRows: any[] = await Seen.select().where({ feed_url: url });
208
+ const seenGuids = new Set(seenRows.map((r: any) => r.item_guid));
209
+
210
+ const newItems = items.filter((item) => !seenGuids.has(item.guid));
211
+ if (newItems.length === 0) continue;
212
+
213
+ for (const item of newItems) {
214
+ await Seen.insert({
215
+ feed_url: url,
216
+ item_guid: item.guid,
217
+ item_title: item.title,
218
+ seen_at: ts(),
219
+ });
220
+ }
221
+
222
+ const message = formatItems(title, newItems);
223
+ const subscribers = allSubs.filter((s: any) => s.url === url);
224
+
225
+ for (const sub of subscribers) {
226
+ await pushToChannel(sub.adapter_name, sub.bot_id, sub.channel_type, sub.channel_id, message);
227
+ }
228
+
229
+ // 更新 feed 标题
230
+ if (title) {
231
+ for (const sub of subscribers) {
232
+ if (sub.feed_title !== title) {
233
+ await Subs.update({ feed_title: title }).where({ id: sub.id });
234
+ }
235
+ }
236
+ }
237
+ } catch (e) {
238
+ logger.debug(`轮询 ${url} 失败: ${(e as Error).message}`);
239
+ }
240
+ }
241
+ } catch (e) {
242
+ logger.warn(`轮询异常: ${(e as Error).message}`);
243
+ } finally {
244
+ polling = false;
245
+ }
246
+ }
247
+
248
+ // 定期清理过老的 seen 记录(保留最近 7 天)
249
+ async function cleanOldSeen(): Promise<void> {
250
+ const Seen = getSeen();
251
+ if (!Seen) return;
252
+ try {
253
+ const cutoff = new Date();
254
+ cutoff.setDate(cutoff.getDate() - 7);
255
+ const cutoffStr = cutoff.toISOString();
256
+ const all: any[] = await Seen.select();
257
+ const expired = all.filter((r: any) => r.seen_at && r.seen_at < cutoffStr);
258
+ for (const row of expired) {
259
+ await Seen.delete().where({ id: row.id });
260
+ }
261
+ } catch {
262
+ // 清理失败不影响主流程
263
+ }
264
+ }
265
+
266
+ // ─── Cron 定时任务 ────────────────────────────────────────────────────────────
267
+
268
+ addCron(new Cron(config.pollCron, pollAllFeeds));
269
+ addCron(new Cron("0 4 * * *", cleanOldSeen));
270
+
271
+ // ─── 命令:rss-add ───────────────────────────────────────────────────────────
272
+
273
+ addCommand(
274
+ new MessageCommand("rss-add <url:text>")
275
+ .desc("订阅 RSS", "订阅一个 RSS/Atom 源,新内容将自动推送到当前会话")
276
+ .usage("rss-add <Feed URL>")
277
+ .examples("rss-add https://sspai.com/feed", "rss-add https://rsshub.app/bilibili/user/dynamic/1")
278
+ .action(async (message: any, result: any) => {
279
+ const Subs = getSubs();
280
+ if (!Subs) return "RSS 数据库尚未就绪,请稍后重试";
281
+
282
+ const url = result.params.url?.trim();
283
+ if (!url) return "请提供 RSS 源地址,格式:rss-add <URL>";
284
+ if (!/^https?:\/\//i.test(url)) return "请提供有效的 HTTP/HTTPS 地址";
285
+
286
+ const { adapterName, botId, channelType, channelId } = extractChannelInfo(message);
287
+ if (!channelId) return "无法确定当前会话,请在群聊或私聊中使用";
288
+
289
+ // 检查是否已订阅
290
+ const existing: any[] = await Subs.select().where({
291
+ url,
292
+ adapter_name: adapterName,
293
+ channel_type: channelType,
294
+ channel_id: channelId,
295
+ });
296
+ if (existing.length > 0) return "当前会话已订阅该源,无需重复添加";
297
+
298
+ // 检查数量限制
299
+ const currentSubs: any[] = await Subs.select().where({
300
+ adapter_name: adapterName,
301
+ channel_type: channelType,
302
+ channel_id: channelId,
303
+ });
304
+ if (currentSubs.length >= config.maxPerGroup) {
305
+ return `当前会话订阅数已达上限 (${config.maxPerGroup}),请先取消一些`;
306
+ }
307
+
308
+ // 验证 feed 可达
309
+ let feedTitle = "";
310
+ try {
311
+ const { title } = await fetchFeed(url);
312
+ feedTitle = title;
313
+ } catch (e) {
314
+ return `无法解析该地址: ${(e as Error).message}\n请确认是有效的 RSS/Atom 源`;
315
+ }
316
+
317
+ await Subs.insert({
318
+ url,
319
+ feed_title: feedTitle,
320
+ adapter_name: adapterName,
321
+ bot_id: botId,
322
+ channel_type: channelType,
323
+ channel_id: channelId,
324
+ creator_id: String(message.$sender?.id || ""),
325
+ creator_name: String(message.$sender?.name || ""),
326
+ created_at: ts(),
327
+ });
328
+
329
+ // 标记现有条目为已读,避免订阅后立即推送历史
330
+ try {
331
+ const Seen = getSeen();
332
+ if (Seen) {
333
+ const { items } = await fetchFeed(url);
334
+ for (const item of items) {
335
+ const dup: any[] = await Seen.select().where({ feed_url: url, item_guid: item.guid });
336
+ if (dup.length === 0) {
337
+ await Seen.insert({ feed_url: url, item_guid: item.guid, item_title: item.title, seen_at: ts() });
338
+ }
339
+ }
340
+ }
341
+ } catch {
342
+ // 标记失败不影响订阅
343
+ }
344
+
345
+ return `订阅成功!\n源: ${feedTitle || url}\n新内容将自动推送到当前会话`;
346
+ }),
347
+ );
348
+
349
+ // ─── 命令:rss-remove ────────────────────────────────────────────────────────
350
+
351
+ addCommand(
352
+ new MessageCommand("rss-remove <url:text>")
353
+ .desc("取消订阅", "取消一个 RSS 订阅")
354
+ .usage("rss-remove <Feed URL>")
355
+ .examples("rss-remove https://sspai.com/feed")
356
+ .action(async (message: any, result: any) => {
357
+ const Subs = getSubs();
358
+ if (!Subs) return "RSS 数据库尚未就绪";
359
+
360
+ const url = result.params.url?.trim();
361
+ if (!url) return "请提供要取消的 RSS 源地址";
362
+
363
+ const { adapterName, channelType, channelId } = extractChannelInfo(message);
364
+ const rows: any[] = await Subs.select().where({
365
+ url,
366
+ adapter_name: adapterName,
367
+ channel_type: channelType,
368
+ channel_id: channelId,
369
+ });
370
+
371
+ if (rows.length === 0) return "未找到该订阅";
372
+
373
+ await Subs.delete().where({ id: rows[0].id });
374
+ return `已取消订阅: ${rows[0].feed_title || url}`;
375
+ }),
376
+ );
377
+
378
+ // ─── 命令:rss-list ──────────────────────────────────────────────────────────
379
+
380
+ addCommand(
381
+ new MessageCommand("rss-list")
382
+ .desc("订阅列表", "查看当前会话的所有 RSS 订阅")
383
+ .action(async (message: any) => {
384
+ const Subs = getSubs();
385
+ if (!Subs) return "RSS 数据库尚未就绪";
386
+
387
+ const { adapterName, channelType, channelId } = extractChannelInfo(message);
388
+ const rows: any[] = await Subs.select().where({
389
+ adapter_name: adapterName,
390
+ channel_type: channelType,
391
+ channel_id: channelId,
392
+ });
393
+
394
+ if (rows.length === 0) return "当前会话没有订阅任何 RSS 源\n使用 rss-add <URL> 添加订阅";
395
+
396
+ const lines = rows.map((r: any, i: number) => {
397
+ const title = r.feed_title || "(未知标题)";
398
+ return `${i + 1}. ${title}\n ${r.url}`;
399
+ });
400
+
401
+ return `当前订阅 (${rows.length}/${config.maxPerGroup}):\n${lines.join("\n")}`;
402
+ }),
403
+ );
404
+
405
+ // ─── 命令:rss-check ─────────────────────────────────────────────────────────
406
+
407
+ addCommand(
408
+ new MessageCommand("rss-check [url:text]")
409
+ .desc("检查更新", "手动触发检查 RSS 更新,可指定某个源")
410
+ .usage("rss-check [URL]")
411
+ .action(async (message: any, result: any) => {
412
+ const Subs = getSubs();
413
+ const Seen = getSeen();
414
+ if (!Subs || !Seen) return "RSS 数据库尚未就绪";
415
+
416
+ const targetUrl = result.params.url?.trim();
417
+ const { adapterName, channelType, channelId } = extractChannelInfo(message);
418
+
419
+ let subs: any[];
420
+ if (targetUrl) {
421
+ subs = await Subs.select().where({
422
+ url: targetUrl,
423
+ adapter_name: adapterName,
424
+ channel_type: channelType,
425
+ channel_id: channelId,
426
+ });
427
+ if (subs.length === 0) return "当前会话未订阅该源";
428
+ } else {
429
+ subs = await Subs.select().where({
430
+ adapter_name: adapterName,
431
+ channel_type: channelType,
432
+ channel_id: channelId,
433
+ });
434
+ if (subs.length === 0) return "当前会话没有任何订阅";
435
+ }
436
+
437
+ const urlSet = new Set(subs.map((s: any) => s.url));
438
+ let totalNew = 0;
439
+
440
+ for (const url of urlSet) {
441
+ try {
442
+ const { title, items } = await fetchFeed(url);
443
+ const seenRows: any[] = await Seen.select().where({ feed_url: url });
444
+ const seenGuids = new Set(seenRows.map((r: any) => r.item_guid));
445
+ const newItems = items.filter((item) => !seenGuids.has(item.guid));
446
+
447
+ if (newItems.length > 0) {
448
+ for (const item of newItems) {
449
+ await Seen.insert({ feed_url: url, item_guid: item.guid, item_title: item.title, seen_at: ts() });
450
+ }
451
+ totalNew += newItems.length;
452
+ const msg = formatItems(title, newItems);
453
+ await pushToChannel(adapterName, subs[0].bot_id, channelType, channelId, msg);
454
+ }
455
+ } catch (e) {
456
+ await message.$reply(`检查 ${url} 失败: ${(e as Error).message}`);
457
+ }
458
+ }
459
+
460
+ if (totalNew === 0) return `已检查 ${urlSet.size} 个源,没有新内容`;
461
+ return "";
462
+ }),
463
+ );
464
+
465
+ // ─── 命令:rss-preview ───────────────────────────────────────────────────────
466
+
467
+ addCommand(
468
+ new MessageCommand("rss-preview <url:text>")
469
+ .desc("预览 RSS", "预览一个 RSS 源的最新内容(不订阅)")
470
+ .usage("rss-preview <URL>")
471
+ .examples("rss-preview https://sspai.com/feed")
472
+ .action(async (_message: any, result: any) => {
473
+ const url = result.params.url?.trim();
474
+ if (!url) return "请提供 RSS 源地址";
475
+ if (!/^https?:\/\//i.test(url)) return "请提供有效的 HTTP/HTTPS 地址";
476
+
477
+ try {
478
+ const { title, items } = await fetchFeed(url);
479
+ if (items.length === 0) return `${title}: 暂无内容`;
480
+
481
+ const lines = [`${title} (共 ${items.length} 条)`];
482
+ for (const item of items.slice(0, 5)) {
483
+ lines.push("");
484
+ lines.push(`${item.title}`);
485
+ if (item.date) lines.push(` ${new Date(item.date).toLocaleString("zh-CN")}`);
486
+ if (item.link) lines.push(` ${item.link}`);
487
+ }
488
+ if (items.length > 5) lines.push(`\n...还有 ${items.length - 5} 条`);
489
+ return lines.join("\n");
490
+ } catch (e) {
491
+ return `解析失败: ${(e as Error).message}\n请确认是有效的 RSS/Atom 地址`;
492
+ }
493
+ }),
494
+ );
495
+
496
+ // ─── AI 工具 ─────────────────────────────────────────────────────────────────
497
+
498
+ plugin.addTool(
499
+ new ZhinTool("rss_list_subscriptions")
500
+ .desc("查询当前所有 RSS 订阅")
501
+ .execute(async () => {
502
+ const Subs = getSubs();
503
+ if (!Subs) return "RSS 数据库尚未就绪";
504
+
505
+ const all: any[] = await Subs.select();
506
+ if (all.length === 0) return "暂无任何 RSS 订阅";
507
+
508
+ const grouped = new Map<string, any[]>();
509
+ for (const sub of all) {
510
+ const key = `${sub.channel_type}:${sub.channel_id}`;
511
+ const list = grouped.get(key) || [];
512
+ list.push(sub);
513
+ grouped.set(key, list);
514
+ }
515
+
516
+ const lines: string[] = [];
517
+ for (const [channel, subs] of grouped) {
518
+ lines.push(`[${channel}]`);
519
+ for (const s of subs) {
520
+ lines.push(` - ${s.feed_title || s.url}`);
521
+ }
522
+ }
523
+ return `RSS 订阅总览 (${all.length} 条):\n${lines.join("\n")}`;
524
+ })
525
+ .toTool(),
526
+ );
527
+
528
+ plugin.addTool(
529
+ new ZhinTool("rss_preview_feed")
530
+ .desc("预览一个 RSS 源的最新内容")
531
+ .param("url", { type: "string", description: "RSS/Atom 源地址" })
532
+ .execute(async (args: Record<string, any>) => {
533
+ const url = args.url as string;
534
+ if (!url) return "请提供 RSS 源 URL";
535
+ try {
536
+ const { title, items } = await fetchFeed(url);
537
+ if (items.length === 0) return `${title}: 无内容`;
538
+ return items
539
+ .slice(0, 5)
540
+ .map((item, i) => `${i + 1}. ${item.title}\n ${item.link}`)
541
+ .join("\n");
542
+ } catch (e) {
543
+ return `解析失败: ${(e as Error).message}`;
544
+ }
545
+ })
546
+ .toTool(),
547
+ );
548
+
549
+ logger.info(`插件已加载 (轮询=${config.pollCron}, 上限=${config.maxPerGroup}/会话)`);