feat: 工作手机开发群专用飞书发送脚本
独立webhook(d0f607da),与卡若AI日志群(8b7f996e)分离 支持纯文本和富文本(带表情/链接)两种模式 Made-with: Cursor
This commit is contained in:
82
sdk/scripts/send_to_feishu.py
Normal file
82
sdk/scripts/send_to_feishu.py
Normal file
@@ -0,0 +1,82 @@
|
||||
#!/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()
|
||||
Reference in New Issue
Block a user