PythonでLINE、Slack、Discordへメッセージ、通知を送る

Pythonでアプリにメッセージや通知を送るためのサンプルコードです。

PythonでLINE、Slack、Discordへメッセージ、通知を送る

LINE、Slack、Discordといったアプリにメッセージや通知を送るには、Pythonプログラムから各アプリのメッセージ受信アドレス(URL)へHTTPリクエスト(https)を送信します。

今回は下記のモジュールを利用して、HTTPリクエストを送信します。

# requestsをインストール
pip install requests

今回は、requestsモジュールを利用しますが、標準モジュールのurllibを利用するなど、他の方法でもメッセージを送ることが可能です。

PythonでLINE、Slack、Discordへメッセージ、通知を送る

では、先にサンプルコードを掲載します。

サンプルコード


解説

では、それぞれ解説です。

LINEにPythonでメッセージ、通知を送る

LINEへメッセージを送るためには、LINE notifyというサービスを利用する必要があります。

LINE notifyの公式URLはこちら

このサービスを登録すると、LINE notifyのURLにメッセージ(HTTPリクエスト)を送信すると、送ったメッセージをLINE通知として転送してくれます。LINEの通知先は、LINE notifyの公式URLからログインし、設定画面から登録します。※グループのみ登録可能だったはずです

LINEにPythonでメッセージ、通知を送るサンプルコード

def line_notify(token, message):
    """
    LINE send message.

    Args:
        token (str): line notify token.
        message (str): message.
    """
    LINE_NOTIFY_URL = 'https://notify-api.line.me/api/notify'
    if token:
        requests.post(LINE_NOTIFY_URL,
                      headers={'Authorization': 'Bearer {}'.format(token)},
                      data={'message': '\n{}'.format(message)})

line_notifyメソッドでLINEにメッセージを送信します。引数1には、LINE notfyで取得したトークン、引数2には、送信するメッセージを設定します。

「LINE_NOTIFY_URL 」には、LINE notifyのURLを固定で指定しています。
「if token」でトークンが設定されているかを判定しています。
「requests.post」メソッドで、LINE notifyのURLにHTTPリクエスト(POST)を送信します。headersには、LINE notfyで取得したTokenを設定し、dataにはメッセージを設定しています。


SlackにPythonでメッセージ、通知を送る

Slackにメッセージを送るには、slack incoming-webhookを利用します。

Webhookとは、外部システムからSlack送られてくるHTTPリクエストのことで、今回の場合、PythonプログラムからSlackへ送るメッセージのことを指します。

Slackのincoming-webhookを利用するにはこちらのページにアクセスし、「Create a Slack app」をクリックします。

前述のLINEでもそうでしたが、Slack、Discordにメッセージを送るということは、いずれの場合も、こちらのプログラム(PythonじゃなくてもOK)から各サービスの受信用URLにHTTPリクエストを送信し、リクエストを受信したサービス側で自動的にそれぞれのアプリの形式でメッセージ通知してくれるという処理の流れになります。

SlackにPythonでメッセージ、通知を送るサンプルコード

def slack_notify(url, message):
    """
    Slack send message.

    Args:
        url (str): slack incoming-webhook url.
        message (str): message.
    """
    if url:
        requests.post(url,
                      data=json.dumps({'text': message}))

slack_notifyメソッドでSlackにメッセージを送信します。引数1には、slack incoming-webhookで取得したURL、引数2には、送信するメッセージを設定します。

「if url」でurlが設定されているかを判定しています。
「requests.post」メソッドで、slack incoming-webhookのURLにHTTPリクエスト(POST)を送信します。urlにslack incoming-webhookを設定し、dataにはJSON形式でメッセージを設定しています。


DiscordにPythonでメッセージ、通知を送る

Discordにメッセージを送るには、Discord webhookを利用します。

Discordのwebhookを利用するには、チャンネルの編集からWebhookの設定を行います。

DiscordにPythonでメッセージ、通知を送るサンプルコード

def discord_notify(url, message):
    """
    Discord send message.

    Args:
        url (str): discord webhook url.
        message (str): message.
    """
    if url:
        requests.post(url,
                      data={'content': message})

discord_notifyメソッドでDiscordにメッセージを送信します。引数1には、discord webhookで取得したURL、引数2には、送信するメッセージを設定します。

「if url」でurlが設定されているかを判定しています。
「requests.post」メソッドで、discord webhookのURLにHTTPリクエスト(POST)を送信します。urlにdiscord webhookを設定し、dataにはJSON形式でメッセージを設定しています。