0
0

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.

Slackのpostを扱うアプリを作るときの考慮事項について

Last updated at Posted at 2021-12-22

ユーザーがSlack上でpostした内容に関するSlackアプリを作る場合にはいくつか考慮すべき事が発生するのでそのまとめ。

アプリ自身がpostした瞬間のみに作用する一過性のものであるなら関係ない話なのだが、これをDBに何らかの形で保存している場合には使えるTIPSだと思います。

メッセージイベントに何が入ってくるのか

@bolt_app.event("message")
def handle_message_events(client, event, body, logger, view, payload, context):
    print('---------------------------')
    print('event message--------------')
    print('---------------------------')

メッセージに関するイベントはこのような形で受けるのですが、そこには

  • postされたメッセージ
  • 編集されたメッセージ
  • 削除されたメッセージ

が入ってきます。

編集及び削除については以下のようにsubtypeで判定できます。

if event.get('subtype') == 'message_changed':#編集の場合
 #編集時の処理
if event.get('subtype') == 'message_deleted':#削除の場合
 #削除時の処理

アプリの開発したては編集時の事を考慮せずに書き始めると思いますが、最終的にはこういった分岐が必要になってきます。
気ままに書いていたら、重複処理が増えすぎてリファクタで死にました。

以下については @seratch さんのコメント前に書いていたことなので無視して下さい

編集及び削除については

if event.get('previous_message') is not None:#編集の場合

このように、previous_messageが存在するか否かで判定します。
更に、削除された場合はこのようにdeleted_tsの有無で判定できます。

if event.get('deleted_ts') is not None:#メッセージが削除された場合

~~

0
0
1

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?