LoginSignup
4
3

More than 3 years have passed since last update.

LINE Notifyを使ってLINEへメッセージを送信するpythonプログラムを作ってみる

Posted at

目的

LINE上で動くプログラムを作成するにはLINEでの手続きとサーバーが必要だったり、初心者には煩わしい。
LINEへメッセージ送信を行うプログラムを作成したいだけなんでLINE Notifyを使ってみる。

参考にしたサイト

たったの2ステップでLINEにメッセージを通知する方法【python】

LINE側 設定手順

1.LINE Notifyにログインする。マイページを開く
https://notify-bot.line.me/ja/

2.アクセストークンを発行する
アクセストークンの発行(開発者向け)で「トークンを発行する」をクリック

  • トークン名:任意の文字列を入力
  • トークルーム:「1:1でLINE Notifyからの通知を受ける」にチェック
    他はグループトークから選択するみたい

3.作成したアクセストークンをコピーしておく→プログラム内で定義する

実際にやってみた

コーディング1回目

sendmessege.py
line_notify_token = "<ここにアクセストークンを定義する>"
line_notify_api = 'https://notify-api.line.me/api/notify'

def main():
    print("LINEへ送信するメッセージを入力してください。")
    message = input("送信メッセージ:")

    print('送信メッセージ:' + message)
    payload = {'message': message}
    headers = {'Authorization': 'Bearer ' + line_notify_token}
    requests.post(line_notify_api, data=payload, headers=headers)

if __name__== '__main__':
    main()

気付き・感想

  • メッセージ送信だけならこんなに簡単だと思わなかった。
  • 自分のLINEへメッセージ送信できたが、ここから利用価値をつけくわえたい
  • requestsモジュールは事前に"pip install"しておく
    コマンド:pip install requests
  • アクセストークンをソースにハードコーディングしないといけない←Java屋さんだから設定情報をDIできないの嫌だな。

コーディング2回目

変更内容
- DI対応:configparserを使って外出ししたアクセストークンを読み込む

sendmessege.py
# -*- coding: utf-8 -*-
import requests
import configparser

# 設定ファイル情報
config = ""
line_notify_token = ""
line_notify_api = ""

# iniファイルを読み込み
def iniread():
    global config
    global line_notify_token
    global line_notify_api
    config = configparser.ConfigParser()
    config.read('setting.ini')
    line_notify_token = config['LINENotify']['line_notify_token']
    line_notify_api = config['LINENotify']['line_notify_api']

def main():
    # 設定ファイル読み込み
    iniread()

    print("LINEへ送信するメッセージを入力してください。")
    message = input("送信メッセージ:")

    print('送信メッセージ:' + message)
    payload = {'message': message}
    headers = {'Authorization': 'Bearer ' + line_notify_token}
    requests.post(line_notify_api, data=payload, headers=headers)

if __name__== '__main__':
    main()

気付き・感想

  • 今回はiniファイルにしたが、定義内容をディクショナリでアクセスできる。configparserモジュールいい感じ。
  • もう少しオブジェクト指向で関心を区別しながらクラスをちゃんと設計せねば。
  • configparser用のテストがデバッグ用になっている。ユニットテスト用のライブラリ使わねば。
4
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
3