# 透過 Python 發 Line Notify
## 獲取權杖(Token)
到設定網址 https://notify-bot.line.me/zh_TW/ 進行登入

登入後在右上角自己的名字下拉選單點選「個人頁面」

進行後往下拉,會看到如圖,按下「發行權杖」

接著就是出現一堆你自己的群組讓你選,第一次請選「透過1對1聊天接受LINE Notify的通知」,
開發時用來進行測試,測完再開始發到各個群組去~
記得輸入權杖名稱(傳送訊息時會顯示)

填完後按下發行,這時候你會得到權杖(後續在程式裡我叫它 token)
他長的像底下這樣,要記下來,之後好像沒辦法查,只能刪掉重新發行
~~ifoEJEylSwuaBQhQC98qiR9p4AQyyzIvGL00MoBwf0u~~
得到權杖後,用 python 發送 line 訊息就簡單了
## 將LineNotify設為好友
搜尋步驟
1)於LINE應用程式內依序點選「加入好友」>「ID/電話號碼」後,輸入「@linenotify」並進行搜尋
2)點選「加入」

## **程式碼**(python3.6.6)
這邊分四個部分(傳送訊息、傳送貼圖、傳送網路圖片、本地圖片)
### 第一部分(傳送訊息)
#### 完整程式碼:
import requests
def lineNotify(token, msg):
#line伺服器位址
url = "https://notify-api.line.me/api/notify"
#token認證用
headers = {
"Authorization": "Bearer " + token
}
#宣告一個物件,裡面存放要傳送的訊息
payload = {'message': msg}
#將headers和data傳送至url,也就是將token和訊息傳送至line伺服器
r = requests.post(url, headers=headers, data=payload)
#status_code為requests除錯用,回傳錯誤代碼,不用理會
return r.status_code
if __name__ == '__main__':
#從linenotify申請的token
token = "token here"
#傳送的訊息
msg = "hello world!"
#呼叫函式
lineNotify(token, msg)

### 第二部分(傳送貼圖)
只要在payload裡多加兩行
payload = {
'message': msg,
'stickerPackageId':1,
'stickerId':106
}
#### 完整程式碼:
import requests
def lineNotify(token, msg):
#line伺服器位址
url = "https://notify-api.line.me/api/notify"
#token認證用
headers = {
"Authorization": "Bearer " + token
}
#宣告一個物件,裡面存放要傳送的訊息
payload = {
'message': msg,
'stickerPackageId':1,
'stickerId':106
}
#將headers和data傳送至url,也就是將token和訊息傳送至line伺服器
r = requests.post(url, headers=headers, data=payload)
#status_code為requests除錯用,回傳錯誤代碼,不用理會
return r.status_code
if __name__ == '__main__':
#從linenotify申請的token
token = "token here"
#傳送的訊息
msg = "hello world!"
#呼叫函式
lineNotify(token, msg)

參考資料,表情符號對照 ID 可參考此文件:
https://devdocs.line.me/files/sticker_list.pdf
### 第三部份(傳送網路圖片)
修改及新增以下幾行程式碼
def lineNotify(token, msg, picurl):
payload = {
'message': msg,
'imageThumbnail': picurl,
'imageFullsize': picurl,
}
if __name__ == '__main__':
picurl = "http://www.tianya999.com/uploads/allimg/180808/2295-1PPQ02028.jpg"
lineNotify(token, msg, picurl)
#### 完整程式碼:
import requests
# 這邊加上picurl
def lineNotify(token, msg, picurl):
# line伺服器位址
url = "https://notify-api.line.me/api/notify"
# token認證用
headers = {
"Authorization": "Bearer " + token
}
# 宣告一個物件,裡面存放要傳送的訊息
payload = {
'message': msg,
# 縮圖
'imageThumbnail': picurl,
# 全圖
'imageFullsize': picurl,
}
# 將headers和data傳送至url,也就是將token和訊息傳送至line伺服器
r = requests.post(url, headers=headers, data=payload)
# status_code為requests除錯用,回傳錯誤代碼,不用理會
return r.status_code
if __name__ == '__main__':
# 從linenotify申請的token
token = "token here"
# 傳送的訊息
msg = "hello world!"
# 照片網址
picurl = "http://www.tianya999.com/uploads/allimg/180808/2295-1PPQ02028.jpg"
# 呼叫函式
lineNotify(token, msg, picurl)

### 第四部份(傳送本地圖片)
修改及新增以下幾行程式碼
def lineNotify(token, msg, picurl):
files = {'imageFile': open(picurl, 'rb')}
r = requests.post(url, headers=headers, params=payload, files=files)
if __name__ == '__main__':
picurl = "test.jpg"
lineNotify(token, msg, picurl)
#### 完整程式碼:
import requests
# 這邊加上picurl
def lineNotify(token, msg, picurl):
# line伺服器位址
url = "https://notify-api.line.me/api/notify"
# token認證用
headers = {
"Authorization": "Bearer " + token
}
# 宣告一個物件,裡面存放要傳送的訊息
payload = {
'message': msg,
}
files = {'imageFile': open(picurl, 'rb')}
# 將headers和data傳送至url,也就是將token和訊息傳送至line伺服器
r = requests.post(url, headers=headers, data=payload, files=files)
# status_code為requests除錯用,回傳錯誤代碼,不用理會
return r.status_code
if __name__ == '__main__':
# 從linenotify申請的token
token = "token here"
# 傳送的訊息
msg = "hello world!"
# 照片存放位置
picurl = "test.jpg"
# 呼叫函式
lineNotify(token, msg, picurl)

#### 注意事項:
message為必要欄位,無法省略
參考資料:http://pythonorz.blogspot.com/2017/12/python-line-notify-line-notify-line.html
lineNotify API Document:https://notify-bot.line.me/doc/en/