[Python3+Line] 使用 line notify 傳送訊息、圖片和貼圖

URL Link //n.sfs.tw/15847

2022-05-26 12:32:00 By 張○○

LINE Notify 是 LINE 所提供的服務,用戶可以透過 LINE Notify 的api,傳送資料給 「LINE Notify 」這個角色,他會幫你發布在他所屬的群組中。你要做的事就是:

1. 申請權杖

2. 申請權杖選擇想要傳送訊息的群組

3. 到該群組把LINE Notify 加入

4. 寫程式

申請權杖及選擇想要傳送的群組

LINE Notify 網址:https://notify-bot.line.me/zh_TW/

申請的過程請參考[1] 的說明,最重要的是你可以領到一個權杖,英文叫token。

 

到該群組把LINE Notify 加入

開啟 line,到該群組中把一個叫作「LINE Notify 」的好友加入,換句話說,你沒辦法直接指定要把訊息傳給個人。

 

PYTHONE程式傳送訊息和貼圖、檔案

LINE Notify 的api url = 'https://notify-api.line.me/api/notify'

python的程式如下,可傳送一個訊息一張貼圖和一個檔案。

import requests

token="3VCeJhzwonGAENjAR5L2BIaToA5m1Wgk4LXgDbUJqz1"

url = 'https://notify-api.line.me/api/notify'
headers = {
    'Authorization': 'Bearer ' + token
}
data = {
    'message':'測試一下!',   # 設定要發送的訊息
    'stickerPackageId':'1',   # 貼圖編號
    'stickerId':'100',   # 貼圖序號
}

with open('img1333.jpg', 'rb') as f:
    files={'imageFile':f}
    data = requests.post(url, headers=headers, data=data, files=files)

實際範例:

注意事項

1。貼圖編號必須是 line notify 這個人有的貼圖才行,你不能亂填其它數字。否則會出現報錯:

{"status":400,"message":"LINE Notify account doesn't join group which you want to send."}

print(data.text)   #印出回應

2. 訊息字串最大長度為1000字元

3. 每小時最大可傳送訊息數 1000

4. imageFullsize/imageThumbnail 這個欄位可以帶出圖片,但是只能傳圖片的url,不能傳出你電腦裡的圖片。可參考[1]裡的範例。

5. 可以使用的貼圖列表清單:

   https://developers.line.biz/en/docs/messaging-api/sticker-list/

python 查看該通知的狀態

import requests

token="3VCeJhzwonGAENjAR5L2BIaToA5m1Wgk4LXgDbUJqz1"
st=  "https://notify-api.line.me/api/status"
headers = {
    'Authorization': 'Bearer ' + token
}
res = requests.get(st, headers=headers)
print(res.text)
執行結果:
{"status":200,"message":"ok","targetType":"GROUP","target":"張〇 ‧●○°ⓞ∅◎o.芭樂長"}

剩餘可傳送訊息數

在命令列中如果直接使用 -v 參數,可以看到以下內容

$ curl -X GET https://notify-api.line.me/api/status -H 'Authorization: Bearer 3VCeJhzwonGAENjAR5L2BIaToA5m1Wgk4LXgDbUJqz1' -v
...
< X-RateLimit-Limit: 1000  <== 每小時最大量
< X-RateLimit-ImageLimit: 50  <== 每小時圖片上傳最大量
< X-RateLimit-Remaining: 985  <== 目前剩餘量
< X-RateLimit-ImageRemaining: 50    <== 圖片上傳剩餘量
< X-RateLimit-Reset: 1653548258  <== 計數器重設時間

 

參考資料

[1] https://steam.oxxostudio.tw/category/python/spider/line-notify.html
[2] https://engineering.linecorp.com/ja/blog/using-line-notify-to-send-stickers-and-upload-images/
[3] LINE 官方文件 https://notify-bot.line.me/doc/en/