tsg-ut/slack-patron

リアクションをリアルタイムで収集する機能

hakatashi opened this issue · 2 comments

現在、slack-patronにメッセージにつけられたリアクションを収集する機能はない。slacklog上で見られるリアクションは全て、Slackが出力するダンプファイルからインポートした際にデータとして付属しているものを表示している。なのでリアクションが反映されるまでに長くて数ヶ月程度かかることもある。

messageイベントと同様にreaction_addedイベントを監視し、リアクションもリアルタイムで収集されるようにしたい。MongoDBのatomicなアップデートを行うことが必要。

やります

現在、Slackのメッセージは付けられたリアクションの一覧を

[
  {
    "count": 3,
    "name": "koresuki",
    "users": [
      "U0AAAAAAA",
      "U0BBBBBBB",
      "U0CCCCCCC"
    ]
  },
  {
    "count": 1,
    "name": "fu",
    "users": [
      "U0AAAAAAA"
    ]
  },
]

のような形で持っているが、これを

[
  {
    "name": "koresuki",
    "user": "U0AAAAAAA"
  },
  {
    "name": "koresuki",
    "user": "U0BBBBBBB"
  },
  {
    "name": "koresuki",
    "user": "U0CCCCCCC"
  },
  {
    "name": "fu",
    "user": "U0AAAAAAA"
  },
]

という形で非正規化して持つようにする。

DBのアップデートは$addToSet$pullを用いることで1アクセスでアップデートする。

天才