1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Python3でSlackへチャット送信する〜セキュリティリスクを無視して〜

Last updated at Posted at 2021-01-29

日記の部分

義理の姉が桃太郎電鉄の新作をやりたいらしく購入を検討しているどうも私です。

AmazonでDL版買おうと思ったんだけど一向に見つからず。
どうやらニンテンドーeショップでしかDL版は売ってないようね。
価格が崩れないので悩んでいます。

最近仕事が忙しく過去の自分がどんなコードを書いていたか忘却の彼方です。

BluetoothでSwitchの自動操作をする記事を書くんや、という思いだけがあっても手は全く動かしてなかったので週末は頑張ります。

空想では、

  • 自動操作をして
  • 孵化したポケモンが色違いかを画像処理で判定したり
  • 個体値チェック&特性チェックをOCRを駆使して判定して
  • 該当したらSlackで通知して処理を終了する

みたいなことを考えています。

その中の

「該当したらSlackで通知」

この処理、私が仕事やプライベートで使い回しのお決まりロジックがあります。
シンプルな内容ですが、公開して残しておこうと思います。

本題の部分

表題にある通り、「セキュリティリスクを無視して」います。
個人の開発端末に入れているだけなので良しとします。いいですね。

SlackのAPIを使った送信の仕組みは以前投稿しています↓
https://qiita.com/smd877/items/3254dacab77b9bcc8e53

これと同じ仕組みを使います。違う箇所は

「Add an OAuth Scope」を押下し「files:write」を選択します。

の部分で、ココは「files:write」ではなく「chat:write」を選択します。

チャット送信するためのアクセストークンと送信先のチャンネルIDを用意したら、

$ sudo vi /etc/environment

// 末尾に以下追加
POST_SLACK_TOKEN_ID=取得したアクセストークン
POST_SLACK_CHANNEL_ID=送信先のチャンネルID

このようにenvironmentに入れてしまいます。(これがリスクポイント。)
あとはこの2つの環境変数を使ってメッセージを送信するコードを用意します。

slack-post.py
import os
import urllib.request, urllib.parse

MESSAGE = 'sample message.'
POST_SLACK_TOKEN_ID = os.environ.get('POST_SLACK_TOKEN_ID')
POST_SLACK_CHANNEL_ID = os.environ.get('POST_SLACK_CHANNEL_ID')

URL = 'https://slack.com/api/chat.postMessage'
headers = {
    'Authorization': 'Bearer ' + POST_SLACK_TOKEN_ID
}
message = {
    'text' : MESSAGE,
    'channel' : POST_SLACK_CHANNEL_ID
}
data = urllib.parse.urlencode(message).encode()
req = urllib.request.Request(URL,data=data,headers=headers,method='POST')
urllib.request.urlopen(req)

で、pythonを実行して対象のチャンネルにメッセージが投稿されていることを確認
img0129.png
こんな感じに。

以上です。
ではまた。

1
1
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
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?