83 lines
2.3 KiB
Python
83 lines
2.3 KiB
Python
#!/usr/bin/env python3
|
||
"""
|
||
工作手机SDK · 开发进度复盘 → 飞书工作手机开发群
|
||
|
||
注意:这个脚本专门发到【工作手机开发进度群】,不是卡若AI日志群。
|
||
两个群的 webhook 不同:
|
||
- 工作手机开发进度群: d0f607da-ae26-43a0-9dbe-2c2c0b90743d ← 本脚本用这个
|
||
- 卡若AI复盘群: 8b7f996e-2892-4075-989f-aa5593ea4fbc ← 卡若AI那边的
|
||
|
||
用法:
|
||
python3 send_to_feishu.py "复盘文本内容"
|
||
python3 send_to_feishu.py --rich "标题" "正文内容"
|
||
"""
|
||
import argparse
|
||
import json
|
||
import sys
|
||
|
||
import requests
|
||
|
||
WEBHOOK_URL = (
|
||
"https://open.feishu.cn/open-apis/bot/v2/hook/"
|
||
"d0f607da-ae26-43a0-9dbe-2c2c0b90743d"
|
||
)
|
||
|
||
|
||
def send_text(text: str) -> bool:
|
||
payload = {"msg_type": "text", "content": {"text": text[:4000]}}
|
||
return _post(payload)
|
||
|
||
|
||
def send_rich(title: str, body: str) -> bool:
|
||
lines = body.strip().split("\n")
|
||
content = [[{"tag": "text", "text": line + "\n"}] for line in lines]
|
||
payload = {
|
||
"msg_type": "post",
|
||
"content": {
|
||
"post": {
|
||
"zh_cn": {
|
||
"title": title,
|
||
"content": content,
|
||
}
|
||
}
|
||
},
|
||
}
|
||
return _post(payload)
|
||
|
||
|
||
def _post(payload: dict) -> bool:
|
||
try:
|
||
r = requests.post(WEBHOOK_URL, json=payload, timeout=10)
|
||
body = r.json()
|
||
if body.get("code") != 0:
|
||
print(f"飞书返回错误: {body}", file=sys.stderr)
|
||
return False
|
||
print("✅ 已发送到工作手机开发进度群")
|
||
return True
|
||
except Exception as e:
|
||
print(f"发送失败: {e}", file=sys.stderr)
|
||
return False
|
||
|
||
|
||
def main():
|
||
ap = argparse.ArgumentParser(description="工作手机SDK 复盘发飞书")
|
||
ap.add_argument("text", nargs="?", default="", help="纯文本内容")
|
||
ap.add_argument("--rich", nargs=2, metavar=("TITLE", "BODY"),
|
||
help="富文本模式: --rich '标题' '正文'")
|
||
args = ap.parse_args()
|
||
|
||
if args.rich:
|
||
ok = send_rich(args.rich[0], args.rich[1])
|
||
elif args.text:
|
||
ok = send_text(args.text)
|
||
else:
|
||
text = sys.stdin.read().strip()
|
||
ok = send_text(text) if text else False
|
||
|
||
if not ok:
|
||
sys.exit(1)
|
||
|
||
|
||
if __name__ == "__main__":
|
||
main()
|