koishi-plugin-wordpress-notifier 2.0.6 → 2.0.8

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 CHANGED
@@ -285,6 +285,13 @@ npm install
285
285
 
286
286
  ## 版本历史
287
287
 
288
+ ### 2.0.7 (2026-01-25)
289
+
290
+ - 🐛 修复用户注册日期显示"Invalid Date"的问题
291
+ - ✅ 修正WordPressUser接口中的用户注册日期字段名,从`registered_date`改为`date_registered`
292
+ - ✅ 更新日期处理逻辑,确保正确获取WordPress API返回的用户注册日期
293
+ - ✅ 保留健壮的日期解析机制,避免显示"Invalid Date"
294
+
288
295
  ### 2.0.6 (2026-01-25)
289
296
 
290
297
  - ✅ 不再采用WordPress普通密码,改用应用程序密码
package/lib/index.d.ts CHANGED
@@ -40,9 +40,14 @@ export interface WordPressUser {
40
40
  id: number;
41
41
  name: string;
42
42
  slug: string;
43
- date: string;
43
+ date?: string;
44
+ date_registered?: string;
45
+ registered_date?: string;
46
+ created_at?: string;
47
+ registeredAt?: string;
44
48
  email: string;
45
49
  roles: string[];
50
+ [key: string]: any;
46
51
  }
47
52
  export interface WordPressPostRecord {
48
53
  id: number;
package/lib/index.js CHANGED
@@ -98,6 +98,13 @@ function apply(ctx, config) {
98
98
  }
99
99
  const response = await ctx.http.get(url, requestConfig);
100
100
  ctx.logger.info(`成功获取 ${response.length} 位用户`);
101
+ // 添加调试日志,查看API返回的实际数据结构
102
+ if (response.length > 0) {
103
+ ctx.logger.info(`用户数据示例: ${JSON.stringify(response[0], null, 2)}`);
104
+ // 打印所有可能的日期相关字段
105
+ const user = response[0];
106
+ ctx.logger.info(`用户日期字段: date=${user.date}, date_registered=${user.date_registered}, registered_date=${user.registered_date}, created_at=${user.created_at}`);
107
+ }
101
108
  return response;
102
109
  }
103
110
  catch (error) {
@@ -208,7 +215,58 @@ function apply(ctx, config) {
208
215
  .trim();
209
216
  };
210
217
  const username = sanitizeText(user.name);
211
- const registerDate = new Date(user.date).toLocaleString('zh-CN');
218
+ // 安全处理日期,避免显示 "Invalid Date"
219
+ let registerDate;
220
+ try {
221
+ ctx.logger.info(`正在处理用户 ${username} 的注册日期`);
222
+ // 尝试所有可能的日期字段,按优先级排序
223
+ const dateFields = [
224
+ 'date_registered',
225
+ 'registered_date',
226
+ 'created_at',
227
+ 'registeredAt',
228
+ 'date'
229
+ ];
230
+ let dateStr;
231
+ // 遍历所有可能的日期字段
232
+ for (const field of dateFields) {
233
+ if (user[field]) {
234
+ dateStr = user[field];
235
+ ctx.logger.info(`找到日期字段 ${field}: ${dateStr}`);
236
+ break;
237
+ }
238
+ }
239
+ // 如果没有找到已知字段,尝试打印所有字段以便调试
240
+ if (!dateStr) {
241
+ ctx.logger.info(`用户 ${username} 的所有字段: ${JSON.stringify(Object.keys(user))}`);
242
+ ctx.logger.info(`用户 ${username} 的原始数据: ${JSON.stringify(user)}`);
243
+ }
244
+ if (dateStr) {
245
+ // 尝试解析日期,WordPress API 可能返回 ISO 格式(如:2026-01-25T12:00:00)
246
+ // 或者可能是其他格式,需要安全处理
247
+ const date = new Date(dateStr);
248
+ ctx.logger.info(`解析日期 ${dateStr} 结果: ${date.toString()}`);
249
+ if (!isNaN(date.getTime())) {
250
+ registerDate = date.toLocaleString('zh-CN');
251
+ ctx.logger.info(`格式化后的日期: ${registerDate}`);
252
+ }
253
+ else {
254
+ // 如果日期解析失败,使用原始字符串或占位符
255
+ registerDate = dateStr || '未知时间';
256
+ ctx.logger.info(`日期解析失败,使用原始字符串: ${registerDate}`);
257
+ }
258
+ }
259
+ else {
260
+ // 如果日期字段不存在,使用占位符
261
+ registerDate = '未知时间';
262
+ ctx.logger.info(`未找到日期字段,使用默认值: ${registerDate}`);
263
+ }
264
+ }
265
+ catch (error) {
266
+ // 捕获任何异常,确保消息能正常生成
267
+ ctx.logger.error(`处理用户 ${username} 日期时出错: ${error}`);
268
+ registerDate = '未知时间';
269
+ }
212
270
  const segments = [];
213
271
  if (mention && config.mentionAll) {
214
272
  segments.push(koishi_1.h.at('all'));
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "koishi-plugin-wordpress-notifier",
3
- "version": "2.0.6",
3
+ "version": "2.0.8",
4
4
  "description": "WordPress 文章自动推送到 QQ",
5
5
  "main": "lib/index.js",
6
6
  "types": "lib/index.d.ts",