---
# System prepended metadata

title: 透過 Python 發 Line Notify

---

# 透過 Python 發 Line Notify

## 獲取權杖(Token)
 到設定網址  https://notify-bot.line.me/zh_TW/  進行登入
 ![](https://i.imgur.com/brQqVWL.jpg)
 登入後在右上角自己的名字下拉選單點選「個人頁面」
 ![](https://i.imgur.com/EkECOma.jpg)
 進行後往下拉，會看到如圖，按下「發行權杖」
 ![](https://i.imgur.com/BjQ4f3l.jpg)
 接著就是出現一堆你自己的群組讓你選，第一次請選「透過1對1聊天接受LINE Notify的通知」，
 開發時用來進行測試，測完再開始發到各個群組去~
 記得輸入權杖名稱(傳送訊息時會顯示)
![](https://i.imgur.com/rVhmMiC.jpg)

填完後按下發行，這時候你會得到權杖(後續在程式裡我叫它 token) 
他長的像底下這樣，要記下來，之後好像沒辦法查，只能刪掉重新發行
~~ifoEJEylSwuaBQhQC98qiR9p4AQyyzIvGL00MoBwf0u~~

得到權杖後，用 python 發送 line 訊息就簡單了

## 將LineNotify設為好友
搜尋步驟
1）於LINE應用程式內依序點選「加入好友」＞「ID／電話號碼」後，輸入「@linenotify」並進行搜尋
2）點選「加入」
![](https://i.imgur.com/2XQ1Q1o.jpg)


## **程式碼**(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)
        
![](https://i.imgur.com/RPNpa9J.jpg)

        
### 第二部分(傳送貼圖)
只要在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)
            
![](https://i.imgur.com/roKsNjc.jpg)

            
參考資料，表情符號對照 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)
        
![](https://i.imgur.com/sGJUAlp.jpg)


### 第四部份(傳送本地圖片)

修改及新增以下幾行程式碼

    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)
        
![](https://i.imgur.com/T2tkO2c.jpg)



#### 注意事項:
message為必要欄位，無法省略



參考資料：http://pythonorz.blogspot.com/2017/12/python-line-notify-line-notify-line.html
lineNotify API Document：https://notify-bot.line.me/doc/en/