Spaces:
Sleeping
Sleeping
import requests | |
import json | |
# === 替換成你自己的 LINE Channel Access Token === | |
LINE_ACCESS_TOKEN = 'V8aLCQMfD56NjZbLyPVHynCC49rE5gr4cP4PbhuIRp8AS3VbkGKlkYlnTk7XSo/ivFpE/x346fAdFG7c0tj8rLtI5sY5tmLhUY+aV3mysJ2wAndAlDpvh3wJ6FXB1ebdadJxuqXjsEzmJuU6fQszJwdB04t89/1O/w1cDnyilFU=' | |
# === 讀取 Rich Menu JSON === | |
richmenu_json = { | |
"size": {"width": 2500, "height": 1124}, | |
"selected": True, | |
"name": "健身五功能選單", | |
"chatBarText": "打開健身選單", | |
"areas": [ | |
{"bounds": {"x": 0, "y": 0, "width": 1250, "height": 281}, "action": {"type": "message", "text": "菜單 胸肌"}}, | |
{"bounds": {"x": 1250, "y": 0, "width": 1250, "height": 281}, "action": {"type": "message", "text": "飲食 減脂"}}, | |
{"bounds": {"x": 0, "y": 281, "width": 1250, "height": 281}, "action": {"type": "message", "text": "紀錄 深蹲 60kg"}}, | |
{"bounds": {"x": 1250, "y": 281, "width": 1250, "height": 281}, "action": {"type": "message", "text": "補給品推薦"}}, | |
{"bounds": {"x": 0, "y": 562, "width": 2500, "height": 562}, "action": {"type": "message", "text": "登入"}} | |
] | |
} | |
# === 1. 建立 Rich Menu === | |
headers = { | |
'Authorization': f'Bearer {LINE_ACCESS_TOKEN}', | |
'Content-Type': 'application/json' | |
} | |
response = requests.post( | |
'https://api.line.me/v2/bot/richmenu', | |
headers=headers, | |
data=json.dumps(richmenu_json) | |
) | |
if response.status_code != 200: | |
print("建立 Rich Menu 失敗:", response.text) | |
exit() | |
richmenu_id = response.json()['richMenuId'] | |
print(f"✅ Rich Menu 建立成功,ID:{richmenu_id}") | |
# === 2. 上傳圖片 === | |
with open("介面設置.png", "rb") as f: | |
image_headers = { | |
'Authorization': f'Bearer {LINE_ACCESS_TOKEN}', | |
'Content-Type': 'image/png' | |
} | |
image_response = requests.post( | |
f"https://api.line.me/v2/bot/richmenu/{richmenu_id}/content", | |
headers=image_headers, | |
data=f.read() | |
) | |
if image_response.status_code != 200: | |
print("上傳圖片失敗:", image_response.text) | |
exit() | |
print("✅ 圖片上傳成功") | |
# === 3. 指定為所有用戶預設選單 === | |
default_headers = { | |
'Authorization': f'Bearer {LINE_ACCESS_TOKEN}' | |
} | |
default_response = requests.post( | |
f"https://api.line.me/v2/bot/user/all/richmenu/{richmenu_id}", | |
headers=default_headers | |
) | |
if default_response.status_code != 200: | |
print("設定預設 Rich Menu 失敗:", default_response.text) | |
else: | |
print("🎉 Rich Menu 已設定為預設選單!") | |