openclaw-github-trending 1.4.1 → 1.4.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.
@@ -1,21 +1,49 @@
1
1
  "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
2
35
  Object.defineProperty(exports, "__esModule", { value: true });
3
36
  exports.WeChatChannel = void 0;
4
37
  const logger_1 = require("../utils/logger");
5
38
  const logger = logger_1.Logger.get('WeChatChannel');
6
39
  /**
7
- * WeChat Channel for pushing GitHub trending repositories via personal WeChat
8
- * Uses the @tencent-weixin/openclaw-weixin plugin
40
+ * WeChat Channel - 通过企业微信推送 GitHub 热榜
9
41
  */
10
42
  class WeChatChannel {
11
43
  /**
12
- * Build markdown message for WeChat
13
- * @param newRepositories Array of new repositories
14
- * @param seenRepositories Array of seen repositories
15
- * @param since Time period for trending
16
- * @returns Markdown formatted message
44
+ * 构建纯文本消息(企业微信不支持 markdown
17
45
  */
18
- static buildMarkdown(newRepositories, seenRepositories, since = 'monthly') {
46
+ static buildPlainText(newRepositories, seenRepositories, since = 'monthly') {
19
47
  const currentDate = new Date();
20
48
  const dateStr = currentDate.toLocaleDateString('zh-CN', {
21
49
  year: 'numeric',
@@ -31,63 +59,101 @@ class WeChatChannel {
31
59
  const sinceText = sinceTextMap[since];
32
60
  const lines = [];
33
61
  // Header
34
- lines.push(`# GitHub ${sinceText}热榜推送`);
35
- lines.push(``);
62
+ lines.push(`🚀 GitHub ${sinceText}热榜推送`);
36
63
  lines.push(`📅 ${dateStr}`);
37
- lines.push(``);
64
+ lines.push('');
38
65
  // New repositories
39
66
  if (newRepositories.length > 0) {
40
- lines.push(`## 🔥 新上榜项目 (${newRepositories.length})`);
41
- lines.push(``);
67
+ lines.push(`━━━ 🔥 新上榜项目 (${newRepositories.length}) ━━━`);
68
+ lines.push('');
42
69
  newRepositories.forEach((repo, index) => {
43
70
  const formattedStars = WeChatChannel.formatNumberWithK(repo.stars);
44
71
  const formattedForks = repo.forks ? ` ⚡${WeChatChannel.formatNumberWithK(repo.forks)}` : '';
45
- const language = repo.language ? ` 💻${repo.language}` : '';
46
- lines.push(`### ${index + 1}. [${repo.full_name}](${repo.url})`);
72
+ const language = repo.language ? ` · ${repo.language}` : '';
73
+ lines.push(`【${index + 1}】${repo.full_name}`);
47
74
  lines.push(`⭐ ${formattedStars}${formattedForks}${language}`);
75
+ lines.push(repo.url);
48
76
  if (repo.ai_summary) {
49
- lines.push(``);
50
- lines.push(`🤖 **项目介绍:**`);
51
- lines.push(repo.ai_summary);
77
+ lines.push('');
78
+ lines.push('🤖 项目介绍:');
79
+ const summaryLines = WeChatChannel.wrapText(repo.ai_summary, 50);
80
+ summaryLines.forEach(line => {
81
+ lines.push(` ${line}`);
82
+ });
83
+ }
84
+ if (index < newRepositories.length - 1) {
85
+ lines.push('');
86
+ lines.push('━━━━━━━━━━━━');
87
+ lines.push('');
52
88
  }
53
- lines.push(``);
54
89
  });
55
90
  }
56
91
  // Seen repositories
57
92
  if (seenRepositories.length > 0) {
58
93
  if (newRepositories.length > 0) {
59
- lines.push(``);
94
+ lines.push('');
95
+ lines.push('');
60
96
  }
61
- lines.push(`## ⭐ 持续霸榜项目 (${seenRepositories.length})`);
62
- lines.push(``);
97
+ lines.push(`━━━ ⭐ 持续霸榜项目 (${seenRepositories.length}) ━━━`);
98
+ lines.push('');
63
99
  seenRepositories.forEach((repo, index) => {
64
100
  const formattedStars = WeChatChannel.formatNumberWithK(repo.stars);
65
101
  const formattedForks = repo.forks ? ` ⚡${WeChatChannel.formatNumberWithK(repo.forks)}` : '';
66
- const language = repo.language ? ` 💻${repo.language}` : '';
67
- lines.push(`### ${index + 1}. [${repo.full_name}](${repo.url})`);
102
+ const language = repo.language ? ` · ${repo.language}` : '';
103
+ lines.push(`【${index + 1}】${repo.full_name}`);
68
104
  lines.push(`⭐ ${formattedStars}${formattedForks}${language}`);
105
+ lines.push(repo.url);
69
106
  if (repo.ai_summary) {
70
- lines.push(``);
71
- // Show only first sentence for seen repos
72
- lines.push(`_${repo.ai_summary.split('。')[0]}。_`);
107
+ lines.push('');
108
+ const firstSentence = repo.ai_summary.split('.')[0] + '.';
109
+ const wrappedLines = WeChatChannel.wrapText(firstSentence, 50);
110
+ lines.push('🤖 简介:');
111
+ wrappedLines.forEach(line => {
112
+ lines.push(` ${line}`);
113
+ });
114
+ }
115
+ if (index < seenRepositories.length - 1) {
116
+ lines.push('');
117
+ lines.push('━━━━━━━━━━━━');
118
+ lines.push('');
73
119
  }
74
- lines.push(``);
75
120
  });
76
121
  }
77
122
  // No repositories
78
123
  if (newRepositories.length === 0 && seenRepositories.length === 0) {
79
- lines.push(`## 📌 暂无 trending 项目`);
124
+ lines.push('📌 暂无 trending 项目');
80
125
  }
81
126
  // Footer
82
- lines.push(`---`);
83
- lines.push(`✨ 本消息由 GitHub 热榜机器人自动生成`);
84
- lines.push(`🔗 [GitHub Trending](https://github.com/wy-ruby/openclaw-github-trending)`);
127
+ lines.push('');
128
+ lines.push('');
129
+ lines.push('━━━━━━━━━━━━━━━━━━━━━━');
130
+ lines.push('✨ 本消息由 GitHub 热榜机器人自动生成');
131
+ lines.push('🔗 https://github.com/wy-ruby/openclaw-github-trending');
85
132
  return lines.join('\n');
86
133
  }
87
134
  /**
88
- * Format number with 'k' suffix for thousands
89
- * @param num Number to format
90
- * @returns Formatted string
135
+ * 文本自动换行
136
+ */
137
+ static wrapText(text, maxWidth = 60) {
138
+ const lines = [];
139
+ let currentLine = '';
140
+ const words = text.split(/(?<=[\u4e00-\u9fa5])|(?=[\u4e00-\u9fa5])|\s+/).filter(w => w);
141
+ for (const word of words) {
142
+ if ((currentLine + word).length <= maxWidth) {
143
+ currentLine += word;
144
+ }
145
+ else {
146
+ if (currentLine)
147
+ lines.push(currentLine.trim());
148
+ currentLine = word;
149
+ }
150
+ }
151
+ if (currentLine)
152
+ lines.push(currentLine.trim());
153
+ return lines;
154
+ }
155
+ /**
156
+ * 格式化数字(添加 k 后缀)
91
157
  */
92
158
  static formatNumberWithK(num) {
93
159
  if (num >= 1000) {
@@ -96,115 +162,245 @@ class WeChatChannel {
96
162
  return num.toString();
97
163
  }
98
164
  /**
99
- * Send message via OpenClaw WeChat plugin
100
- * The plugin should be installed and configured in OpenClaw
101
- *
102
- * @param markdownContent Markdown content to send
103
- * @param openclawApi OpenClaw API instance for invoking channels
104
- * @param config WeChat configuration
105
- * @returns Push result
165
+ * 发送消息到微信(通过 openclaw CLI)
106
166
  */
107
- static async send(markdownContent, openclawApi, config) {
108
- logger.info('Starting WeChat send', {
109
- contentLength: markdownContent.length
110
- });
111
- try {
112
- const startTime = Date.now();
113
- // 从配置文件中读取微信配置,如果没有则使用默认值
114
- const wechatReceiverId = config.receiver_id || process.env.OPENCLAW_WECHAT_RECEIVER_ID;
115
- const wechatBotAccountId = config.bot_account_id || process.env.OPENCLAW_WECHAT_BOT_ACCOUNT_ID;
116
- logger.info('WeChat configuration', {
117
- receiverId: wechatReceiverId,
118
- botAccountId: wechatBotAccountId
119
- });
120
- // 检查 openclawApi 是否包含 channels
121
- if (!openclawApi || !openclawApi.channels) {
122
- logger.error('openclawApi.channels not available');
123
- return {
124
- success: false,
125
- error: 'openclawApi.channels not available - WeChat plugin may not be installed'
126
- };
127
- }
128
- // 获取微信 channel 实例
129
- const wechatChannel = openclawApi.channels['openclaw-weixin'];
130
- if (!wechatChannel) {
131
- logger.error('WeChat channel "openclaw-weixin" not found');
132
- return {
133
- success: false,
134
- error: 'WeChat channel "openclaw-weixin" not found - please install and configure the plugin'
135
- };
136
- }
137
- // 直接调用微信 channel 的 send 方法
138
- // OpenClaw 的 channel API 通常有 send 方法
139
- logger.debug('Invoking WeChat channel send...', {
140
- receiverId: wechatReceiverId,
141
- botAccountId: wechatBotAccountId,
142
- messageLength: markdownContent.length
143
- });
144
- const sendResult = await wechatChannel.send({
145
- to: wechatReceiverId,
146
- accountId: wechatBotAccountId,
147
- message: markdownContent
148
- });
149
- const duration = Date.now() - startTime;
150
- logger.info('WeChat send completed', {
151
- durationMs: duration,
152
- messageId: sendResult?.message_id || sendResult?.id || 'unknown',
153
- success: true
154
- });
167
+ static async send(content, openclawApi, config) {
168
+ const startTime = Date.now();
169
+ const channelName = config.channel_name || 'openclaw-weixin';
170
+ // 检查微信插件是否已安装并启用
171
+ const wechatPluginEnabled = openclawApi?.config?.plugins?.entries?.['openclaw-weixin']?.enabled;
172
+ const wechatPluginInstalled = openclawApi?.config?.plugins?.installs?.['openclaw-weixin'];
173
+ if (!wechatPluginInstalled) {
174
+ logger.error('WeChat plugin not installed');
155
175
  return {
156
- success: true,
157
- messageId: sendResult?.message_id || sendResult?.id || 'unknown',
158
- error: undefined
176
+ success: false,
177
+ error: '微信插件未安装:请先运行 `openclaw plugins install @tencent-weixin/openclaw-weixin` 安装微信插件'
159
178
  };
160
179
  }
161
- catch (error) {
162
- logger.error('WeChat send failed', {
163
- error: error instanceof Error ? error.message : 'Unknown error',
164
- stack: error instanceof Error ? error.stack : undefined
165
- });
180
+ if (wechatPluginEnabled === false) {
181
+ logger.error('WeChat plugin is disabled');
166
182
  return {
167
183
  success: false,
168
- error: error instanceof Error ? error.message : 'Unknown error'
184
+ error: '微信插件已禁用:请在 openclaw.json 中设置 plugins.entries.openclaw-weixin.enabled = true'
185
+ };
186
+ }
187
+ // 尝试从多个来源获取 receiver_id
188
+ const receiverId = await this.resolveReceiverId(config, openclawApi);
189
+ if (!receiverId) {
190
+ logger.error('WeChat receiver_id not found');
191
+ return {
192
+ success: false,
193
+ error: '微信接收者 ID 未配置。\n\n' +
194
+ '📌 解决方案(选择其一):\n\n' +
195
+ '1️⃣ 在插件配置中添加 receiver_id(推荐):\n' +
196
+ ' 编辑 ~/.openclaw/openclaw.json\n' +
197
+ ' plugins.entries.openclaw-github-trending.config.channels.wechat.receiver_id = "your-wechat-id@im.wechat"\n\n' +
198
+ '2️⃣ 设置环境变量:\n' +
199
+ ' export OPENCLAW_WECHAT_RECEIVER_ID="your-wechat-id@im.wechat"\n\n' +
200
+ '3️⃣ 从微信发起一次对话:\n' +
201
+ ' 如果你在微信中给机器人发送过消息,插件会自动回复给发送者\n\n' +
202
+ '💡 如何获取你的微信 ID:\n' +
203
+ ' 运行命令:openclaw message channel list --channel openclaw-weixin\n' +
204
+ ' 或者查看会话历史:cat ~/.openclaw/agents/main/sessions/sessions.json | grep weixin\n\n' +
205
+ '提示:微信 ID 格式通常为:xxx@im.wechat'
169
206
  };
170
207
  }
208
+ const botAccountId = config.bot_account_id || process.env.OPENCLAW_WECHAT_BOT_ACCOUNT_ID;
209
+ logger.info('Sending WeChat message', {
210
+ receiverId: receiverId ? `${receiverId.substring(0, 4)}****` : 'not set',
211
+ contentLength: content.length
212
+ });
213
+ const result = await this.sendViaCli(content, receiverId, botAccountId, channelName);
214
+ const duration = Date.now() - startTime;
215
+ if (result.success) {
216
+ logger.info('WeChat send completed', { durationMs: duration });
217
+ }
218
+ else {
219
+ logger.error('WeChat send failed', {
220
+ durationMs: duration,
221
+ error: result.error
222
+ });
223
+ }
224
+ return result;
171
225
  }
172
226
  /**
173
- * Alternative method: Use OpenClaw's chat interface to send message
174
- * This sends the message as if the plugin itself is "chatting" to the user
175
- *
176
- * @param markdownContent Markdown content to send
177
- * @param openclawApi OpenClaw API instance
178
- * @returns Push result
227
+ * 从多个来源解析 receiver_id
228
+ * 优先级:1. 插件配置 2. 环境变量 3. 消息上下文 4. 会话历史 5. OpenClaw API
179
229
  */
180
- static async sendViaChat(markdownContent, openclawApi) {
181
- logger.info('Starting WeChat send via chat interface', {
182
- contentLength: markdownContent.length
183
- });
230
+ static async resolveReceiverId(config, openclawApi) {
231
+ // 1. 优先使用插件配置中的 receiver_id
232
+ if (config.receiver_id) {
233
+ logger.info('Using receiver_id from plugin config');
234
+ return config.receiver_id;
235
+ }
236
+ // 2. 尝试从环境变量获取
237
+ if (process.env.OPENCLAW_WECHAT_RECEIVER_ID) {
238
+ logger.info('Using receiver_id from environment variable');
239
+ return process.env.OPENCLAW_WECHAT_RECEIVER_ID;
240
+ }
241
+ // 3. 尝试从消息上下文获取(如果当前会话来自微信)
242
+ if (openclawApi?.context?.channel === 'openclaw-weixin') {
243
+ const fromUser = openclawApi?.context?.from;
244
+ if (fromUser) {
245
+ logger.info('Using receiver_id from message context (echo back to sender)');
246
+ return fromUser;
247
+ }
248
+ }
249
+ // 4. 尝试从 OpenClaw 会话历史中获取最近使用的微信接收者
250
+ // 检查 sessions.json 中的微信会话
184
251
  try {
185
- const startTime = Date.now();
186
- // Use OpenClaw's chat API to send message
187
- // This assumes the WeChat plugin is the active channel
188
- const result = await openclawApi.chat(markdownContent);
189
- const duration = Date.now() - startTime;
190
- logger.success('WeChat chat send completed', {
191
- durationMs: duration,
192
- messageId: result?.message_id || 'unknown'
252
+ const { readFileSync } = await Promise.resolve().then(() => __importStar(require('fs')));
253
+ const { join } = await Promise.resolve().then(() => __importStar(require('path')));
254
+ const { homedir } = await Promise.resolve().then(() => __importStar(require('os')));
255
+ const sessionsPath = join(homedir(), '.openclaw', 'agents', 'main', 'sessions', 'sessions.json');
256
+ const sessionsData = JSON.parse(readFileSync(sessionsPath, 'utf-8'));
257
+ // sessions.json 的结构是 { [sessionKey]: sessionData, ... }
258
+ // 查找包含 openclaw-weixin 的会话键
259
+ const sessionKeys = Object.keys(sessionsData);
260
+ for (const key of sessionKeys) {
261
+ if (key.includes('openclaw-weixin')) {
262
+ // session key 格式:agent:main:openclaw-weixin:direct:xxx@im.wechat
263
+ // 从 key 中提取 receiver_id(最后一部分)
264
+ const keyParts = key.split(':');
265
+ const potentialReceiverId = keyParts[keyParts.length - 1];
266
+ if (potentialReceiverId && potentialReceiverId.includes('@im.wechat')) {
267
+ // ⚠️ 重要:微信 ID 区分大小写!
268
+ // 如果 ID 是全小写,尝试从已知的发送记录中获取正确的大小写格式
269
+ const lowercaseId = potentialReceiverId.toLowerCase();
270
+ // 尝试从 sessions.json 的其他地方查找正确的大小写格式
271
+ // 检查所有消息记录中的 to/from 字段
272
+ for (const sessionKey of sessionKeys) {
273
+ const session = sessionsData[sessionKey];
274
+ if (session?.lastTo && session.lastTo.toLowerCase() === lowercaseId) {
275
+ logger.info(`Using receiver_id from session.lastTo (preserving case): ${session.lastTo.substring(0, 8)}****`);
276
+ return session.lastTo;
277
+ }
278
+ if (session?.lastFrom && session.lastFrom.toLowerCase() === lowercaseId) {
279
+ logger.info(`Using receiver_id from session.lastFrom (preserving case): ${session.lastFrom.substring(0, 8)}****`);
280
+ return session.lastFrom;
281
+ }
282
+ if (session?.label && session.label.toLowerCase() === lowercaseId) {
283
+ logger.info(`Using receiver_id from session.label (preserving case): ${session.label.substring(0, 8)}****`);
284
+ return session.label;
285
+ }
286
+ }
287
+ // 如果找不到正确的大小写格式,使用原始提取的 ID
288
+ logger.info(`Using receiver_id from session key: ${potentialReceiverId.substring(0, 8)}****`);
289
+ return potentialReceiverId;
290
+ }
291
+ }
292
+ }
293
+ }
294
+ catch (error) {
295
+ logger.warn('Failed to read session history', { error: error instanceof Error ? error.message : error });
296
+ }
297
+ // 5. 尝试通过 OpenClaw 获取微信联系人信息
298
+ try {
299
+ logger.info('Attempting to get WeChat receiver_id from OpenClaw...');
300
+ // 方法 A: 尝试从微信插件的配置文件中获取
301
+ const { readFileSync, existsSync } = await Promise.resolve().then(() => __importStar(require('fs')));
302
+ const { join } = await Promise.resolve().then(() => __importStar(require('path')));
303
+ const { homedir } = await Promise.resolve().then(() => __importStar(require('os')));
304
+ // 尝试读取微信插件的配置文件
305
+ const weixinConfigPaths = [
306
+ join(homedir(), '.openclaw', 'plugins', 'openclaw-weixin', 'config.json'),
307
+ join(homedir(), '.openclaw', 'extensions', 'openclaw-weixin', 'config.json'),
308
+ join(homedir(), '.openclaw', 'credentials.json')
309
+ ];
310
+ for (const configPath of weixinConfigPaths) {
311
+ if (existsSync(configPath)) {
312
+ try {
313
+ const configData = JSON.parse(readFileSync(configPath, 'utf-8'));
314
+ // 尝试从配置中提取 receiver_id
315
+ // 微信插件可能存储了联系人信息
316
+ if (configData?.accounts) {
317
+ const accountKeys = Object.keys(configData.accounts);
318
+ if (accountKeys.length > 0) {
319
+ logger.info(`Using receiver_id from WeChat plugin config: ${accountKeys[0].substring(0, 8)}****`);
320
+ return accountKeys[0];
321
+ }
322
+ }
323
+ }
324
+ catch (e) {
325
+ // 忽略读取错误,继续尝试其他方法
326
+ }
327
+ }
328
+ }
329
+ // 方法 B: 尝试从 openclaw-weixin 的 session 中获取
330
+ const sessionsPath = join(homedir(), '.openclaw', 'agents', 'main', 'sessions', 'sessions.json');
331
+ if (existsSync(sessionsPath)) {
332
+ const sessionsData = JSON.parse(readFileSync(sessionsPath, 'utf-8'));
333
+ const sessionKeys = Object.keys(sessionsData);
334
+ // 查找最近的微信 direct 会话
335
+ for (const key of sessionKeys) {
336
+ if (key.includes('openclaw-weixin:direct:')) {
337
+ // 从 key 中提取 receiver_id
338
+ const match = key.match(/openclaw-weixin:direct:([a-zA-Z0-9_-]+@im\.wechat)/i);
339
+ if (match && match[1]) {
340
+ logger.info(`Using receiver_id from WeChat direct session: ${match[1].substring(0, 8)}****`);
341
+ return match[1];
342
+ }
343
+ }
344
+ }
345
+ }
346
+ }
347
+ catch (error) {
348
+ logger.warn('Failed to get receiver_id from OpenClaw', { error: error instanceof Error ? error.message : error });
349
+ }
350
+ logger.warn('No receiver_id found in any source');
351
+ return null;
352
+ }
353
+ /**
354
+ * 通过 openclaw CLI 发送消息
355
+ */
356
+ static async sendViaCli(content, to, accountId, channelName) {
357
+ try {
358
+ const { execFile } = await Promise.resolve().then(() => __importStar(require('child_process')));
359
+ const args = [
360
+ 'message', 'send',
361
+ '--channel', channelName,
362
+ '--target', to,
363
+ '--message', content
364
+ ];
365
+ // if (accountId) {
366
+ // args.push('--account', accountId);
367
+ // }
368
+ logger.info('Executing CLI', {
369
+ channel: channelName,
370
+ to,
371
+ argsCount: args.length,
372
+ contentLength: content.length
373
+ });
374
+ const result = await new Promise((resolve, reject) => {
375
+ execFile('openclaw', args, {
376
+ maxBuffer: 10 * 1024 * 1024,
377
+ timeout: 30000
378
+ }, (error, stdout, stderr) => {
379
+ if (error) {
380
+ reject(error);
381
+ }
382
+ else {
383
+ resolve({ stdout, stderr });
384
+ }
385
+ });
386
+ });
387
+ logger.info('CLI send completed', {
388
+ stdout: result.stdout.substring(0, 200),
389
+ stderr: result.stderr ? result.stderr.substring(0, 200) : ''
193
390
  });
194
391
  return {
195
392
  success: true,
196
- messageId: result?.message_id || 'unknown',
393
+ messageId: 'sent-via-cli',
197
394
  error: undefined
198
395
  };
199
396
  }
200
397
  catch (error) {
201
- logger.error('WeChat chat send failed', {
202
- error: error instanceof Error ? error.message : 'Unknown error',
203
- stack: error instanceof Error ? error.stack : undefined
398
+ logger.error('CLI send failed', {
399
+ error: error instanceof Error ? error.message : 'Unknown error'
204
400
  });
205
401
  return {
206
402
  success: false,
207
- error: error instanceof Error ? error.message : 'Unknown error'
403
+ error: `CLI 发送失败:${error instanceof Error ? error.message : 'Unknown error'}`
208
404
  };
209
405
  }
210
406
  }
@@ -1 +1 @@
1
- {"version":3,"file":"wechat.js","sourceRoot":"","sources":["../../src/channels/wechat.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"wechat.js","sourceRoot":"","sources":["../../src/channels/wechat.ts"],"names":[],"mappings":"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"}
@@ -40,11 +40,11 @@ export declare class HistoryManager {
40
40
  /**
41
41
  * Determine if a repository should be pushed again
42
42
  */
43
- shouldPushAgain(repo: RepositoryInfo, history: RepositoryHistory, config: HistoryConfig): boolean;
43
+ shouldPushAgain(repo: RepositoryInfo, history: RepositoryHistory, config: HistoryConfig, since?: string): boolean;
44
44
  /**
45
45
  * Categorize repositories into new, should push, and already seen
46
46
  */
47
- categorizeRepositories(repositories: RepositoryInfo[], config: HistoryConfig): {
47
+ categorizeRepositories(repositories: RepositoryInfo[], config: HistoryConfig, since?: 'daily' | 'weekly' | 'monthly'): {
48
48
  newlySeen: RepositoryInfo[];
49
49
  shouldPush: RepositoryInfo[];
50
50
  alreadySeen: RepositoryInfo[];
@@ -1 +1 @@
1
- {"version":3,"file":"history.d.ts","sourceRoot":"","sources":["../../src/core/history.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAEtD,MAAM,WAAW,iBAAiB;IAChC,SAAS,EAAE,MAAM,CAAC;IAClB,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,WAAW;IAC1B,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC;IAChD,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,OAAO,CAAC;IACjB,cAAc,EAAE,MAAM,CAAC;CACxB;AAED;;;GAGG;AACH,qBAAa,cAAc;IACzB,OAAO,CAAC,IAAI,CAAc;;IAS1B;;OAEG;IACH,UAAU,CAAC,IAAI,EAAE,WAAW,GAAG,IAAI;IAInC;;OAEG;IACH,UAAU,IAAI,WAAW;IAKzB;;OAEG;IACH,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,iBAAiB,GAAG,SAAS;IAI3D;;OAEG;IACH,eAAe,CAAC,IAAI,EAAE,cAAc,EAAE,OAAO,EAAE,iBAAiB,EAAE,MAAM,EAAE,aAAa,GAAG,OAAO;IAejG;;OAEG;IACH,sBAAsB,CACpB,YAAY,EAAE,cAAc,EAAE,EAC9B,MAAM,EAAE,aAAa,GACpB;QACD,SAAS,EAAE,cAAc,EAAE,CAAC;QAC5B,UAAU,EAAE,cAAc,EAAE,CAAC;QAC7B,WAAW,EAAE,cAAc,EAAE,CAAC;KAC/B;IAyBD;;OAEG;IACH,UAAU,CAAC,YAAY,EAAE,cAAc,EAAE,GAAG,IAAI;IA+BhD;;OAEG;IACH,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI;IAOxD;;OAEG;IACH,QAAQ,IAAI;QACV,kBAAkB,EAAE,MAAM,CAAC;QAC3B,YAAY,EAAE,MAAM,CAAC;QACrB,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,YAAY,CAAC,EAAE,MAAM,CAAC;KACvB;CAaF;AAED,eAAe,cAAc,CAAC"}
1
+ {"version":3,"file":"history.d.ts","sourceRoot":"","sources":["../../src/core/history.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAEtD,MAAM,WAAW,iBAAiB;IAChC,SAAS,EAAE,MAAM,CAAC;IAClB,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,WAAW;IAC1B,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC;IAChD,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,OAAO,CAAC;IACjB,cAAc,EAAE,MAAM,CAAC;CACxB;AAED;;;GAGG;AACH,qBAAa,cAAc;IACzB,OAAO,CAAC,IAAI,CAAc;;IAS1B;;OAEG;IACH,UAAU,CAAC,IAAI,EAAE,WAAW,GAAG,IAAI;IAInC;;OAEG;IACH,UAAU,IAAI,WAAW;IAKzB;;OAEG;IACH,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,iBAAiB,GAAG,SAAS;IAI3D;;OAEG;IACH,eAAe,CAAC,IAAI,EAAE,cAAc,EAAE,OAAO,EAAE,iBAAiB,EAAE,MAAM,EAAE,aAAa,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO;IAwBjH;;OAEG;IACH,sBAAsB,CACpB,YAAY,EAAE,cAAc,EAAE,EAC9B,MAAM,EAAE,aAAa,EACrB,KAAK,CAAC,EAAE,OAAO,GAAG,QAAQ,GAAG,SAAS,GACrC;QACD,SAAS,EAAE,cAAc,EAAE,CAAC;QAC5B,UAAU,EAAE,cAAc,EAAE,CAAC;QAC7B,WAAW,EAAE,cAAc,EAAE,CAAC;KAC/B;IAyBD;;OAEG;IACH,UAAU,CAAC,YAAY,EAAE,cAAc,EAAE,GAAG,IAAI;IA+BhD;;OAEG;IACH,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI;IAOxD;;OAEG;IACH,QAAQ,IAAI;QACV,kBAAkB,EAAE,MAAM,CAAC;QAC3B,YAAY,EAAE,MAAM,CAAC;QACrB,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,YAAY,CAAC,EAAE,MAAM,CAAC;KACvB;CAaF;AAED,eAAe,cAAc,CAAC"}
@@ -34,14 +34,22 @@ class HistoryManager {
34
34
  /**
35
35
  * Determine if a repository should be pushed again
36
36
  */
37
- shouldPushAgain(repo, history, config) {
37
+ shouldPushAgain(repo, history, config, since) {
38
38
  // Never pushed before
39
39
  if (!history.last_pushed) {
40
40
  return true;
41
41
  }
42
42
  // Stars increased significantly
43
43
  const starGrowth = repo.stars - history.last_stars;
44
- if (starGrowth >= config.star_threshold) {
44
+ // 根据榜单周期调整阈值:今日×1,本周×2,本月×5
45
+ let adjustedThreshold = config.star_threshold;
46
+ if (since === 'weekly') {
47
+ adjustedThreshold *= 2;
48
+ }
49
+ else if (since === 'monthly') {
50
+ adjustedThreshold *= 5;
51
+ }
52
+ if (starGrowth >= adjustedThreshold) {
45
53
  return true;
46
54
  }
47
55
  return false;
@@ -49,7 +57,7 @@ class HistoryManager {
49
57
  /**
50
58
  * Categorize repositories into new, should push, and already seen
51
59
  */
52
- categorizeRepositories(repositories, config) {
60
+ categorizeRepositories(repositories, config, since) {
53
61
  const newlySeen = [];
54
62
  const shouldPush = [];
55
63
  const alreadySeen = [];
@@ -60,7 +68,7 @@ class HistoryManager {
60
68
  newlySeen.push(repo);
61
69
  shouldPush.push(repo);
62
70
  }
63
- else if (config.enabled && this.shouldPushAgain(repo, history, config)) {
71
+ else if (config.enabled && this.shouldPushAgain(repo, history, config, since)) {
64
72
  // Seen before, but should push again (star growth)
65
73
  shouldPush.push(repo);
66
74
  alreadySeen.push(repo);