Files
chatrebot_aireply_plug/scripts/qq_get_friends.py
Claw e1fbd31c64 完整 AgentSkill:词库外部化 + 全部脚本/Skill 脱敏上传
- 高危词库从 process.py 抽到 config.toml [security] section
- process.py 改为 _get_high_risk_words() 动态加载(配置优先)
- 新增 15 个 QQ 操作脚本(已脱敏:QQ号/IP/Token → 占位符)
- 新增 8 个 SKILL.md(qq-messenger/management/resolver/napcat-extras 等)
- 新增 SKILL.md 入口(完整部署方案文档)
- 保留 SDK 框架(plugin_modules.py, file_store_api.py, package.py 等)
2026-05-04 16:23:59 +08:00

89 lines
2.7 KiB
Python
Raw 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
"""
获取好友列表 - 通过 NapCat (OneBot) HTTP API
用法:
python3 qq_get_friends.py # 输出格式化好友列表
python3 qq_get_friends.py --json # 输出 JSON供 agent 使用)
python3 qq_get_friends.py --keyword 张三 # 搜索昵称/备注包含"张三"的好友
"""
import json
import sys
import argparse
import requests
CQHTTP_URL = "http://YOUR_NAP CAT_HOST:25570"
def get_friend_list():
"""获取好友列表,返回好友字典列表"""
url = f"{CQHTTP_URL}/get_friend_list"
resp = requests.post(url, json={}, timeout=10)
data = resp.json()
if data.get("status") == "ok":
return data.get("data", [])
raise Exception(f"API 返回异常: {json.dumps(data, ensure_ascii=False)}")
def format_friends(friends, keyword=None):
"""格式化为可读文本"""
if keyword:
keyword = keyword.lower()
filtered = []
for f in friends:
uid = str(f.get("user_id", ""))
nickname = f.get("nickname", "")
remark = f.get("remark", "")
if (keyword in uid or keyword in nickname.lower()
or keyword in remark.lower()):
filtered.append(f)
friends = filtered
if not friends:
return "暂无好友数据"
lines = [f"{len(friends)} 个好友\n"]
for f in friends:
uid = f.get("user_id", "?")
nickname = f.get("nickname", "?")
remark = f.get("remark", "")
remark_str = f"(备注:{remark}" if remark else ""
lines.append(f"{nickname} ({uid}){remark_str}")
return "\n".join(lines)
def main():
parser = argparse.ArgumentParser(description="获取 QQ 好友列表")
parser.add_argument("--json", action="store_true", help="输出 JSON 格式")
parser.add_argument("--keyword", type=str, help="按昵称/备注关键词筛选")
args = parser.parse_args()
try:
friends = get_friend_list()
if args.keyword:
kw = args.keyword.lower()
friends = [
f for f in friends
if kw in str(f.get("user_id", ""))
or kw in f.get("nickname", "").lower()
or kw in f.get("remark", "").lower()
]
if args.json:
print(json.dumps(friends, ensure_ascii=False, indent=2))
else:
print(format_friends(friends, args.keyword))
except requests.exceptions.ConnectionError:
print(f"❌ 连接失败: 无法连接到 NapCat ({CQHTTP_URL})")
sys.exit(1)
except Exception as e:
print(f"❌ 获取好友列表失败: {e}")
sys.exit(1)
if __name__ == "__main__":
main()