🔴 致命(5个): - Bug1: onebot11.json 格式错误(旧 {http:{},ws:{}} → network.httpServers/httppClients) - Bug2: 端口映射错位(WebUI 6099, OneBot API 6097 独立端口) - Bug3: 变量名含空格 NAP CAT_HOST → NAPCAT_HOST(14脚本+2SKILL+README) - Bug4: heredoc 单引号阻止变量展开 - Bug5: process.py 缺失 _get_high_risk_words() 方法 🟡 重要(3个): - Bug6: onebot11.json 默认不存在(cat > 而非 edit) - Bug7: API 须登录后才响应(新增扫码引导步骤) - Bug8: qqrebot systemd 依赖 napcat 服务 🟢 中等(3个): - Bug9: Skills 占位符缺 YOUR_NAPCAT_HOST sed 覆盖 - Bug10: venv 不可用需降级方案 - Bug11: 端口 25580 冲突处理 已验证全链路:NapCat + qqrebot + 插件 + OpenClaw Gateway + AI 回复
82 lines
2.1 KiB
Python
82 lines
2.1 KiB
Python
#!/usr/bin/env python3
|
||
"""
|
||
QQ 好友点赞 — 通过 NapCat (OneBot) HTTP API
|
||
|
||
调用 NapCat 的 /send_like 端点给好友点赞。
|
||
|
||
用法:
|
||
python3 qq_send_like.py <user_id> # 给指定 QQ 号点赞
|
||
python3 qq_send_like.py <user_id> <times> # 点赞指定次数(最大20)
|
||
|
||
示例:
|
||
python3 qq_send_like.py YOUR_ADMIN_QQ # 给老板点个赞
|
||
python3 qq_send_like.py 12345678 10 # 给好友点10个赞
|
||
|
||
返回:
|
||
JSON: {"status": "ok", "retcode": 0, ...} 或错误信息
|
||
"""
|
||
|
||
import json
|
||
import sys
|
||
import argparse
|
||
import requests
|
||
|
||
CQHTTP_URL = "http://YOUR_NAPCAT_HOST:25570"
|
||
|
||
|
||
def send_like(user_id: int, times: int = 1) -> dict:
|
||
"""
|
||
给好友点赞
|
||
|
||
Args:
|
||
user_id: 目标 QQ 号
|
||
times: 点赞次数,1-20,默认为1
|
||
|
||
Returns:
|
||
API 响应 JSON
|
||
"""
|
||
resp = requests.post(
|
||
f"{CQHTTP_URL}/send_like",
|
||
json={"user_id": user_id, "times": times},
|
||
timeout=10
|
||
)
|
||
return resp.json()
|
||
|
||
|
||
def main():
|
||
parser = argparse.ArgumentParser(description="给 QQ 好友点赞")
|
||
parser.add_argument("user_id", type=int, help="目标 QQ 号")
|
||
parser.add_argument("times", type=int, nargs="?", default=1,
|
||
help="点赞次数 (1-20, 默认1)")
|
||
|
||
args = parser.parse_args()
|
||
|
||
if args.times < 1 or args.times > 20:
|
||
print(json.dumps({
|
||
"status": "failed",
|
||
"message": f"点赞次数必须在 1-20 之间, 当前: {args.times}"
|
||
}))
|
||
sys.exit(1)
|
||
|
||
try:
|
||
result = send_like(args.user_id, args.times)
|
||
print(json.dumps(result, ensure_ascii=False))
|
||
if result.get("status") != "ok":
|
||
sys.exit(1)
|
||
except requests.exceptions.Timeout:
|
||
print(json.dumps({
|
||
"status": "failed",
|
||
"message": "请求超时,NapCat 可能未运行"
|
||
}))
|
||
sys.exit(1)
|
||
except requests.exceptions.ConnectionError as e:
|
||
print(json.dumps({
|
||
"status": "failed",
|
||
"message": f"无法连接到 NapCat: {e}"
|
||
}))
|
||
sys.exit(1)
|
||
|
||
|
||
if __name__ == "__main__":
|
||
main()
|