npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

koishi-plugin-wordpress-notifier

v2.7.1

Published

WordPress 文章自动推送到 QQ

Readme

WordPress 文章自动推送插件

自动从 WordPress 网站获取最新文章并推送到指定 QQ 群或私聊。

功能特性

  • ✅ 自动从 WordPress REST API 获取最新文章
  • ✅ 定时推送新文章到指定 QQ 群或私聊
  • ✅ 支持文章更新推送
  • ✅ 支持新用户注册推送
  • ✅ 支持手动查询最新文章和文章列表
  • ✅ 支持 @全体成员
  • ✅ 完善的去重机制,避免重复推送
  • ✅ 按群聊标记推送记录,确保每个群只收到一次相同内容
  • ✅ 数据库持久化存储,机器人重启不丢失记录
  • ✅ 采用服务模式架构,便于扩展和维护
  • ✅ 支持自动推送开关
  • ✅ 支持文章更新推送开关
  • ✅ 支持新用户注册推送开关

安装

通过 npm 安装

npm install koishi-plugin-wordpress-notifier

通过 Koishi 控制台安装

  1. 打开 Koishi 控制台
  2. 进入「插件市场」
  3. 搜索 wordpress-notifier
  4. 点击安装按钮

配置

koishi.yml 中配置插件:

plugins:
  wordpress-notifier:
    wordpressUrl: 'https://your-wordpress-site.com'  # WordPress 网站地址
    interval: 3600000  # 检查间隔(毫秒,默认 1 小时)
    targets:
      - '2801323326'  # 推送目标(群号或 QQ 号)
    enableAutoPush: true  # 是否启用自动推送
    enableUpdatePush: false  # 是否启用文章更新推送
    enableUserPush: false  # 是否启用新用户注册推送
    mentionAll: false  # 是否 @全体成员
    maxArticles: 5  # 每次最多推送的文章数量
    # 可选:WordPress API 认证配置
    # 使用应用程序密码,更安全
    # username: 'your-wordpress-username'
    # applicationPassword: 'your-application-password'  # 例如:hGR2 sPFu Yncl xHc4 AvJq cUtB

如何获取WordPress应用程序密码

  1. 登录WordPress后台
  2. 进入用户 > 个人资料
  3. 滚动到"应用程序密码"部分
  4. 输入应用程序名称(例如:"Koishi 推送插件")
  5. 点击"添加新应用程序密码"
  6. 复制生成的应用程序密码(例如:hGR2 sPFu Yncl xHc4 AvJq cUtB
  7. 在插件配置中使用此密码,无需删除空格,插件会自动处理

应用程序密码是WordPress生成的安全密码,适合API访问,比普通密码更安全,可以随时撤销,不会影响您的主密码。插件已不再支持普通密码,必须使用应用程序密码。

配置参数说明

| 参数 | 类型 | 默认值 | 说明 | |------|------|--------|------| | wordpressUrl | string | 必填 | WordPress 网站地址(例如:https://example.com) | | interval | number | 3600000 | 检查间隔,单位毫秒(默认 1 小时 = 3600000 毫秒) | | targets | array | 必填 | 推送目标列表,可以是群号或 QQ 号 | | enableAutoPush | boolean | true | 是否启用自动推送 | | enableUpdatePush | boolean | false | 是否启用文章更新推送 | | enableUserPush | boolean | false | 是否启用新用户注册推送 | | mentionAll | boolean | false | 是否在推送时 @全体成员 | | maxArticles | number | 5 | 每次最多推送的文章数量 | | username | string | 可选 | WordPress 用户名(用于 Basic 基础认证,与应用程序密码配合使用) | | applicationPassword | string | 可选 | WordPress 应用程序密码(用于 Basic 基础认证,例如:hGR2sPFuYnclxHc4AvJqcUtB) |

使用命令

查看最新文章

/wordpress.latest

显示最新的 WordPress 文章列表,包含标题、日期和链接。

查看文章列表

/wordpress.list

显示文章 ID 和标题的简洁列表。

手动推送最新文章

/wordpress.push

立即检查并推送最新文章(即使自动推送已关闭)。

查看插件状态

/wordpress.status

显示当前插件配置状态,包括网站地址、检查间隔、推送目标等。

切换自动推送开关

/wordpress.toggle

开启或关闭自动推送功能。

切换 @全体成员 开关

/wordpress.mention

开启或关闭 @全体成员 功能。

切换文章更新推送开关

/wordpress.toggle-update

开启或关闭文章更新推送功能。

切换新用户注册推送开关

/wordpress.toggle-user

开启或关闭新用户注册推送功能。

修改 WordPress 站点地址

/wordpress.set-url <url>

修改 WordPress 站点地址。

查看已推送文章列表

/wordpress.pushed

查看已推送的文章列表,按推送时间倒序排列,显示文章 ID 和推送时间。

清理旧推送记录

/wordpress.clean [days]

清理指定天数前的推送记录,默认清理 30 天前的记录,仅超级管理员可用。

插件菜单

/wordpress

显示插件菜单和所有可用命令。

工作原理

  1. 插件启动时会自动创建以下数据库表:

    • wordpress_posts:记录已推送的新文章
    • wordpress_post_updates:记录文章更新情况
    • wordpress_user_registrations:记录已推送的新用户
    • wordpress_group_pushes:按群聊标记推送记录,确保每个群只收到一次相同内容
  2. 定时器每隔指定时间(默认 1 小时)检查一次 WordPress 网站:

    • 检查最新文章
    • 检查文章更新
    • 检查新用户注册
  3. 推送逻辑:

    • 对于新文章,检查每个群聊是否已推送过
    • 对于文章更新,检查是否有更新且该群聊已收到过原文
    • 对于新用户,检查是否已推送过
    • 格式化消息并推送到所有配置的目标
    • 推送成功后,更新相应的数据库记录

注意事项

  • WordPress 网站必须启用 REST API(默认启用)
  • 确保机器人有权限向目标群或私聊发送消息
  • @全体成员 功能需要机器人有相应权限
  • 建议设置合理的检查间隔,避免频繁请求 WordPress 网站
  • 插件使用数据库持久化存储,机器人重启后不会重复推送已推送的文章

常见问题

为什么文章没有推送?

可能原因:

  • WordPress 网站的 REST API 未启用
  • 机器人没有向目标群或私聊发送消息的权限
  • 文章已经被推送过(数据库中有记录)
  • 自动推送功能已关闭

解决方法:

  • 检查 WordPress 网站设置,确保 REST API 已启用
  • 确认机器人在目标群中有发送消息权限
  • 使用 /wordpress.push 命令手动触发推送
  • 使用 /wordpress.status 检查插件状态

如何修改检查间隔?

在配置文件中修改 interval 参数:

plugins:
  wordpress-notifier:
    interval: 1800000  # 30 分钟

建议:

  • 频繁更新的网站:设置较短间隔(如 30 分钟)
  • 更新较少的网站:设置较长间隔(如 2-4 小时)
  • 避免设置过短间隔,以免频繁请求 WordPress 网站

@全体成员 功能不生效?

可能原因:

  • 机器人没有 @全体成员 的权限
  • mentionAll 配置设置为 false

解决方法:

  • 在群设置中授予机器人 @全体成员 权限
  • 使用 /wordpress.mention 命令开启功能
  • 或在配置文件中设置 mentionAll: true

支持推送到多个群吗?

支持!在配置文件中添加多个目标:

targets:
  - '群号1'
  - '群号2'
  - 'QQ号'

机器人重启后会重复推送吗?

不会!插件使用数据库持久化存储已推送的文章记录,机器人重启后不会重复推送。

如何获取用户注册日期

WordPress REST API默认可能不会返回用户注册日期字段。您可以通过以下两种方式之一来启用:

方式 1:修改当前主题「函数文件(functions.php)」

  1. 登录 WordPress 后台 → 外观 → 主题文件编辑器 → 选择当前使用的主题 → 打开「函数文件(functions.php)」;
  2. 在文件末尾粘贴以下代码,点击「更新文件」保存:
/** 
 * 为WordPress REST API /wp/v2/users接口添加注册时间字段 
 * 映射为registered_date,兼容代码中的字段读取逻辑 
 */ 
add_filter('rest_prepare_user', 'add_user_registered_date_to_rest', 10, 3); 
function add_user_registered_date_to_rest($response, $user, $request) { 
    // 获取WordPress原生注册时间(数据库字段user_registered,格式为Y-m-d H:i:s) 
    $register_time = $user->user_registered; 
    // 将注册时间添加到API返回数据中,同时保留原生字段和代码中使用的registered_date 
    $response->data['user_registered'] = $register_time; // 原生字段名 
    $response->data['registered_date'] = $register_time; // 代码中尝试读取的字段名 
    return $response; 
}

方式 2:创建自定义插件(推荐,避免主题更换丢失代码)

  1. 新建一个文本文件,命名为 add-rest-user-registered-date.php(注意后缀为 .php);
  2. 将以下代码粘贴到文件中(包含插件头注释,WordPress 可识别):
<?php 
/** 
 * 插件名称:REST API 用户注册时间字段扩展 
 * 插件URI:https://www.rutua.cn/ 
 * 描述:为/wp/v2/users接口添加注册时间(registered_date)字段,适配wordpress-notifier工具 
 * 版本:1.0 
 * 作者:kate522 
 * 作者URI:https://www.rutua.cn/archives/author/kate522/ 
 */ 

// 过滤REST API用户响应,添加注册时间字段 
add_filter('rest_prepare_user', 'add_user_registered_date_to_rest', 10, 3); 
function add_user_registered_date_to_rest($response, $user, $request) { 
    $register_time = $user->user_registered; 
    $response->data['user_registered'] = $register_time; 
    $response->data['registered_date'] = $register_time; 
    return $response; 
}
  1. 将文件上传到 WordPress 服务器的 wp-content/plugins/ 目录;
  2. 登录 WordPress 后台 → 插件 → 已安装插件 → 找到「REST API 用户注册时间字段扩展」→ 点击「启用」。

添加上述代码后,插件将能够正确获取并显示用户注册日期。

开发

插件位于 external/wordpress-notifier/ 目录。

编译插件

cd external/wordpress-notifier
npm run build

重新安装依赖

cd external/wordpress-notifier
npm install

版本历史

2.7.1 (2026-01-25)

  • ✅ 优化 /wordpress.latest 命令,不再固定只显示前3篇文章
  • ✅ 实现动态消息长度控制,在500字符限制内显示尽可能多的文章
  • ✅ 显示实际显示的文章数量和总文章数量

2.7.0 (2026-01-25)

  • ✅ 将所有消息长度限制从390字符提升到500字符
  • ✅ 优化消息格式,提供更长的内容展示
  • ✅ 保持消息格式兼容QQ接口规范
  • ✅ 修复TypeScript编译错误,确保代码质量

2.6.0 (2026-01-25)

  • 🐛 修复命令返回消息过长导致的Bad Request错误
  • ✅ 为wordpress.latest命令添加长度控制,只返回前3篇文章
  • ✅ 为wordpress.list命令添加标题截断和消息长度控制
  • ✅ 统一将所有命令的消息长度限制调整为390字符
  • ✅ 优化wordpress.pushed命令的消息长度验证
  • ✅ 确保wordpress.status命令符合QQ接口长度限制
  • ✅ 修复TypeScript编译错误,确保代码质量

2.5.9 (2026-01-25)

  • 🐛 彻底修复11255错误,严格遵循QQ接口规范
  • ✅ 移除所有非必要特殊符号,只保留1个极简表情
  • ✅ 自定义时间格式:年-月-日 时:分,避免本地化特殊字符
  • ✅ 使用encodeURI强制编码WordPress链接
  • ✅ 双级长度控制:标题60字符,整体300字符
  • ✅ 严格限制换行:仅2次换行,无连续或尾部换行
  • ✅ 强化清洗规则:标准化所有空白符为单个半角空格

2.5.8 (2026-01-25)

  • 🐛 修复推送失败的11255错误
  • ✅ 修正消息发送逻辑,确保正确处理单个消息段
  • ✅ 统一变量命名,将segments改为message
  • ✅ 确保bot.sendMessage接收正确的消息类型

2.5.7 (2026-01-25)

  • 🔧 适配QQ官方bot,优化bot获取逻辑
  • ✅ 优先选择QQ官方bot(platform === 'qq')
  • ✅ 优化消息格式,确保兼容QQ官方bot要求
  • ✅ 调整消息长度限制,更严格控制在350字符内
  • ✅ 简化消息格式,使用更兼容的分隔符
  • ✅ 确保@全体成员格式符合QQ官方bot规范

2.5.6 (2026-01-25)

  • 🔧 修复11255错误,重构消息构造函数
  • ✅ 移除多段消息拼接,改为单段纯文本
  • ✅ 强制截断长文本,控制消息长度
  • ✅ 标准化特殊符号,使用|分隔关键信息
  • ✅ 直接返回h.text()封装的单段消息

2.5.5 (2026-01-25)

  • 🔧 修复wordpress.status命令Bad Request错误
  • ✅ 为所有命令添加h.text()封装
  • ✅ 精简字段描述,缩短消息长度
  • ✅ 添加消息长度验证
  • ✅ 优化消息格式,确保兼容Satorijs QQ适配器

2.3.0 (2026-01-25)

  • 🔧 增强命令权限管理,限制敏感命令仅超级管理员可用
  • ✅ 为wordpress.set-url命令添加超级管理员权限检查
  • ✅ 为wordpress.clean [days]命令添加超级管理员权限检查
  • ✅ 为wordpress.toggle命令添加超级管理员权限检查
  • ✅ 为wordpress.toggle-update命令添加超级管理员权限检查
  • ✅ 为wordpress.toggle-user命令添加超级管理员权限检查
  • ✅ 为wordpress.mention命令添加超级管理员权限检查
  • ✅ 添加了详细的日志记录,便于追踪非授权访问尝试

2.2.0 (2026-01-25)

  • 🐛 修复重复推送问题,清理未使用的数据库表
  • ✅ 移除了未使用的wordpress_posts表,统一使用wordpress_group_pushes表进行推送记录管理
  • ✅ 修复了wordpress.pushed命令,使用wordpress_group_pushes表获取已推送记录
  • ✅ 修复了wordpress.clean命令,移除了对wordpress_posts表的引用
  • ✅ 增强了推送日志,添加了详细的调试信息,便于追踪推送流程
  • ✅ 优化了isGroupPushedmarkGroupAsPushed函数,添加了更多日志

2.1.0 (2026-01-25)

  • 🔧 更新文档结构,将"如何获取用户注册日期"内容从版本历史移至常见问题部分
  • ✅ 优化文档组织,提高用户查找信息的便利性
  • ✅ 保持原有详细说明和代码示例不变

2.0.9 (2026-01-25)

  • 🔧 增强用户注册日期处理,支持多种日期字段格式
  • ✅ 支持WordPress主题中添加的user_registeredregistered_date字段
  • ✅ 在API请求中添加_fields参数,明确请求注册日期相关字段
  • ✅ 请求字段包括:id,name,slug,date,date_registered,registered_date,user_registered,created_at,registeredAt,email,roles,url,description,link,avatar_urls
  • ✅ 确保API返回完整的用户信息,包括注册日期
  • ✅ 优化日期字段优先级顺序,优先使用registered_dateuser_registered字段

2.0.8 (2026-01-25)

  • 🔧 增强用户注册日期处理逻辑,尝试所有可能的日期字段
  • ✅ 添加调试日志,便于排查日期获取问题
  • ✅ 扩展WordPressUser接口,支持更多日期字段和未知字段
  • ✅ 按优先级遍历所有可能的日期字段,确保找到正确的注册日期
  • ✅ 添加详细的日志记录,便于调试和问题定位
  • ✅ 改进日期解析错误处理,确保不会显示"Invalid Date"

2.0.7 (2026-01-25)

  • 🐛 修复用户注册日期显示"Invalid Date"的问题
  • ✅ 修正WordPressUser接口中的用户注册日期字段名,从registered_date改为date_registered
  • ✅ 更新日期处理逻辑,确保正确获取WordPress API返回的用户注册日期
  • ✅ 保留健壮的日期解析机制,避免显示"Invalid Date"

2.0.6 (2026-01-25)

  • ✅ 不再采用WordPress普通密码,改用应用程序密码
  • ✅ 配置页面添加应用程序密码字段,移除普通密码字段
  • ✅ 优化认证逻辑,专门处理应用程序密码
  • ✅ 支持自动处理带有空格的应用程序密码
  • 🔧 更新了文档,详细说明如何使用应用程序密码
  • 🔧 提高了API访问的安全性

2.0.5 (2026-01-25)

  • ✅ 支持WordPress应用程序密码(Application Password)
  • ✅ 自动处理带有空格的应用程序密码,无需手动删除空格
  • ✅ 优化认证逻辑,确保应用程序密码能正确工作
  • 🔧 更新了文档,详细说明如何获取和使用应用程序密码
  • 🔧 推荐使用应用程序密码,提高安全性

2.0.4 (2026-01-25)

  • ✅ 修复插件配置页面无法添加WordPress账号和密码的问题
  • ✅ 在Schema配置中添加了username和password字段,支持在插件配置页面设置
  • ✅ 支持Basic基础认证,请求头携带认证信息
  • 🔧 优化了配置页面的用户体验
  • 🔧 更新了文档,说明如何在配置页面添加认证信息

2.0.3 (2026-01-25)

  • ✨ 新增 WordPress API 认证支持
  • ✅ 支持配置 username 和 password 访问受保护的 API 端点
  • ✅ 特别是解决了 users 端点需要认证才能访问的问题
  • 🔧 更新了配置文档,添加了认证配置说明和示例
  • 🔧 优化了 HTTP 请求逻辑,支持基本认证

2.0.2 (2026-01-25)

  • 🐛 修复每次重载时重新推送的问题
  • 🔧 优化推送去重机制,只使用群聊记录跟踪推送状态
  • 🔧 确保每个群聊只会收到一次相同的文章推送
  • 🔧 优化错误处理,确保插件核心功能正常工作

2.0.1 (2026-01-25)

  • 📝 更新文档,完善新功能说明
  • 🔧 优化代码结构

2.0.0 (2026-01-25)

  • ✨ 新增文章更新推送功能
  • ✨ 新增新用户注册推送功能
  • ✨ 实现按群聊标记推送记录,确保每个群只收到一次相同内容
  • ✅ 支持开启/关闭文章更新推送
  • ✅ 支持开启/关闭新用户注册推送
  • ✅ 修改 wordpress.status 命令,仅显示当前群的推送目标
  • 🔧 优化数据库表结构,添加多张数据表
  • 🔧 优化清理命令,支持清理所有类型的推送记录

1.8.2 (2026-01-25)

  • 🐛 修复 Bot 实例获取方式,使用 Object.values(ctx.bots) 正确处理 Bot 对象
  • 🐛 修复消息格式不兼容问题,使用标准 Segment 构造兼容消息
  • 🐛 修复推送目标类型问题,确保目标是有效的数字字符串
  • 🔧 简化消息构造逻辑,将多次 h.text() 调用合并为单段文本
  • 🔧 增强消息内容安全性,彻底过滤 HTML 标签和非法字符
  • ✅ 兼容多款适配器:adapter-milky, adapter-qq, adapter-onebot, adapter-satori

1.8.1 (2026-01-20)

  • 🔧 优化代码结构

1.8.0 (2026-01-19)

  • ✨ 新增超级管理员功能,允许修改 WordPress 站点地址
  • ✅ 添加 superAdmins 配置项,支持指定超级管理员
  • ✅ 添加 /wordpress.set-url <url> 命令,仅超级管理员可用
  • 🐛 修复角色显示问题,移除不可靠的 roles 字段
  • 📝 更新 README.md 文档,添加超级管理员功能说明

1.7.1 (2026-01-19)

  • 🐛 修复用户查询功能中 roles 字段为 undefined 的错误
  • 📝 更新 README.md 文档,添加用户查询功能说明

1.7.0 (2026-01-19)

  • ✨ 新增查询 WordPress 站点用户信息功能
  • ✅ 添加 /wordpress.users 命令,查看站点用户列表
  • ✅ 添加 /wordpress.user <id> 命令,查看特定用户信息
  • 📝 更新主菜单,添加新命令选项
  • 🔧 优化数据库表定义

1.6.0 (2026-01-15)

  • 🐛 修复消息发送问题,使用 bot.sendMessage 替代 broadcast
  • 🔧 优化消息发送逻辑

1.5.0 (2026-01-15)

  • 🐛 修复数据库主键问题,添加 id 字段作为主键
  • 🔧 优化数据库表结构

1.3.0 (2024-01-14)

  • 📝 更新作者邮箱为 [email protected]
  • 🔗 更新仓库地址为正确的 GitHub URL
  • 📝 优化 README.md 文档和链接

1.2.0 (2024-01-14)

  • 📝 优化 README.md 文档,添加详细的安装说明和常见问题
  • 📦 优化 npm 包结构,只包含必要文件

1.1.0 (2024-01-14)

  • ✨ 新增数据库持久化存储功能
  • 🐛 修复推送目标配置问题,使用 ctx.broadcast([target], message) 正确发送到指定目标
  • 🐛 修复 HTTP 服务注入问题,添加 'http' 到 inject 数组
  • 📝 添加 .npmignore 文件,确保 npm 发布时只包含必要文件
  • 📦 更新依赖项

1.0.0 (初始版本)

  • 🎉 首次发布
  • ✅ 基础推送功能
  • ✅ 命令系统
  • ✅ 去重机制

许可证

MIT

相关链接

  • 插件仓库:https://github.com/Lexo0522/koishi-plugin-wordpress-notifier
  • Koishi 官方文档:https://koishi.js.org/
  • WordPress REST API 文档:https://developer.wordpress.com/rest-api/

安装(Install)

npm i koishi-plugin-wordpress-notifier