Files
chatrebot_aireply_plug/scripts/qq_send_like.py
root 9dff73e7bc fix: 通过本地完整测试发现的 11 个 bug
🔴 致命(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 回复
2026-05-04 19:47:26 +08:00

82 lines
2.1 KiB
Python
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/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()