【Python】slackにWebhook URLを利用した自動投稿

 ケイバ予想AIDOLプロジェクトでは、やり取りをslackを通じて行なっています。
 AIDOLには最初からtwitterに投稿させるのではなく、最初はslackに投稿するようにしていました。
 ここでは、slackに投稿するためのコードを載せたいと思います。
 slackに投稿する方法は2種類あります。
 Incoming Webhookを利用する方法と、Slack APIを利用する2種類があります。WebhookとAPIでは、Webhookの方が100倍くらい単純に書けるので、今回はこちらの説明をします。

WebhookとAPIの違い

・Webhook
 簡単
 テキストの投稿ができる。(※ファイル添付はできない)

・API
 設定がだるい。
 テキストだけでなくファイル添付もできる。
 やろうと思えばslackに投稿されたメッセージの収集とかもできる。
 やろうとしたことは大体できる。

手順

webhook urkを取得する。

取得の仕方はslackの公式に掲載されていますが、「slack webhook url取得」などで検索すると、クソ有能ブログがたくさん出てきますのでそちらを参照すると良いでしょう。
 チャンネルごとにURLがあるので、投稿したいチャンネルのURLを取得しましょう。
参考:https://slack.com/intl/ja-jp/help/articles/115005265063-Slack-での-Incoming-Webhook-の利用

※webhookurlが流出すると誰でも、slackに投稿できるようになりますので注意してください。

コード

import requests
import json

# WEB_HOOK_URLは下準備で発行したURLを設定しください
def slack_post(text):
    WEB_HOOK_URL = "https://hooks.slack.com/services/******/********/***************"
    #↑ここに取得したURLを記載してください。
    requests.post(WEB_HOOK_URL, data=json.dumps({
        # メッセージ内容
        "text" : text,
        # アイコン
        "icon_emoji" : ":horse:",
        # 投稿者名
        "username" : "umatan_bot"
    }))

実行するときは,

slack_post('任意のテキスト')

こちらでslackにテキスト投稿ができるようになります。
 プロジェクトでは、予測した結果を始めはこのコードを使用してslackに投稿していました。

Webhook URLの取得が一番だるいですが、あとはコピペでなんとかなるので非常に楽です。
処理に時間がかかるプログラムが終わったときに動かしたりすると、終了の通知に使えたりましす。
 pythonで時間をトリガーにするのはサーバーが必要だったり設定がだるいので、GASで書いてトリガー設定したりするとクソ便利です。

※エラーが出たら適宜pipなどでライブラリをインストールしてください。

参考:slack apiでファイル添付するやつを説明してくれているクソ有能記事
https://note.com/10mohi6/n/n0fd906a5f980