前言
这是一个用于WordPress的附件密码下载,对接公众号 提供API 方便其他程序调用 支持多平台机器人 如 QQ官方机器人 TG机器人等 密码随机生成,支持ai大模型。程序永久免费且开源 开源地址 https://github.com/naigoucn/ngdown 前台下载样式参考 6KE论坛的子比下载插件 微信机器人参考http://github.com/wangvsa/wechat-robot 和 https://github.com/shiheme/wechat-robot-guoqing 图标样式采用开源icon库 remixicon 不对接公众号的版本 下载地址 https://www.123684.com/s/uXJuVv-mN4U3
支持功能
- 输入密码下载附件
- 对接微信公众号随机密码
- 公众号推送文章
- 单篇文章密码30分钟自动切换
- 对接AI大模型实现自动聊天
- 提供api接口 方便其他机器人框架调用
- 支持多平台机器人 如QQ/TG等 (取决于您的机器人框架)
- 后台设置页面 自定义回复设置 大模型设置 api密钥设置
- 自动识别网盘链接展示对应图标
- 支持选择开启或关闭密码下载
演示图




使用方法
文章页
新建文章后,如果想在文章底部加上密码下载就在编辑器底部找到下图设置

填写对应内容即可,选项留空前台不显示该内容,显示选项 选择隐藏前台也不显示该内容。
对接微信公众号


在这里输入你的微信公众号 开发者ID(AppID) 和 开发者密码(AppSecret)
如何获取开发者ID(AppID) 和 开发者密码(AppSecret)?
登录微信公众号平台 mp.weixin.qq.com 登录账号 找到 设置与开发 点击 开发接口管理 如下图

复制appid粘贴到上面的位置,密钥点击重置,扫码后重新获取 记得把服务器ip设置为IP白名单。

服务器地址改为 https://你的域名/?wechat token填写wechat 消息加解密方式选择明文模式。
对接AI大模型
后台找到微信机器人 AI模型 按要求填写

这个适配的是openai的,大部分大模型都支持,所以改接口 改密钥 改模型代码 理论支持所有大模型,例如腾讯混元 阿里通义千问 DeepSeek等。 预装了部分ai大模型 如通义千问 腾讯混元 deepseek kimi 模型记得选择正确 不然会失败。
API秘钥
插件提供api用来获取密码 采用post形式 API Token按你需要的设置。

接口请求方式
api_token就是你设置的token postid就是你开启密码下载的文章
URL: https://域名/wp-json/ngapi/v1/get-password
Method: POST
Headers: Content-Type: application/json
Body (JSON):
{
"api_token": "your_api_token_here",
"postid": your_post_id_here
}
对接其他机器人
QQ机器人
我使用的是 AstrBot 机器人框架 对接的QQ官方机器人 AstrBot安装教程 和使用教程 这里就不赘述 需要的请自行前往仓库获取。
插件代码及仓库地址
https://github.com/naigoucn/astrbot_plugin_ngdown
from astrbot.api.event import filter, AstrMessageEvent, MessageEventResult
from astrbot.api.star import Context, Star, register
from astrbot.api import logger
import requests
@register("article_password", "奶狗", "奶狗WordPress文章密码下载插件", "1.0.0", "repo url")
class ArticlePasswordPlugin(Star):
def __init__(self, context: Context):
super().__init__(context)
self.api_token = "966877" # 在这里配置 API Token
self.website_url = "https://www.naigou.cn" # 在这里配置网站 URL后面不要加/
# 注册指令的装饰器。指令名为 文章密码。注册成功后,发送 `/文章密码 xxx` 就会触发这个指令,并回复 密码信息
@filter.command("文章密码")
async def article_password(self, event: AstrMessageEvent):
'''这是一个获取文章密码的指令''' # 这是 handler 的描述,将会被解析方便用户了解插件内容。建议填写。
user_name = event.get_sender_name()
message_str = event.message_str.strip() # 用户发的纯文本消息字符串
# 解析命令参数
parts = message_str.split(maxsplit=1)
if len(parts) != 2:
yield event.plain_result(f"格式错误,请使用 `/文章密码 文章ID` 格式。")
return
command, post_id_str = parts
# 检查 post_id 是否为数字
if not post_id_str.isdigit():
yield event.plain_result(f"格式错误,请使用 `/文章密码 文章ID` 格式,文章ID必须是数字。")
return
post_id = int(post_id_str.strip())
if not post_id:
yield event.plain_result(f"无效的文章ID,请重新输入。")
return
# 构建API请求数据
data = {
"api_token": self.api_token,
"postid": post_id
}
# 调用API获取密码
api_url = f"{self.website_url}/wp-json/ngapi/v1/get-password"
try:
response = requests.post(api_url, json=data)
response.raise_for_status()
data = response.json()
# 统一返回 API 返回的消息内容
message = data["data"].get("message", "未知错误")
yield event.plain_result(f"{message}")
except requests.exceptions.HTTPError as e:
logger.error(f"HTTP 错误: {e}")
try:
data = response.json()
message = data["data"].get("message", "未知错误")
except (ValueError, KeyError):
message = "无法解析API响应"
yield event.plain_result(f"{message}")
except requests.exceptions.RequestException as e:
logger.error(f"请求API时发生错误: {e}")
yield event.plain_result(f"请求API时发生错误: {str(e)}")
TG机器人
部分框架提供对接其他平台的功能 参考QQ机器人的对接方式