traPtitech/traQ

DMを除く全チャンネルのメッセージを購読するBOTイベントの追加

ras0q opened this issue · 3 comments

ras0q commented

一般ユーザーに対しては/wsのtimeline_streamingコマンドでアクティビティの流量を管理することができる
https://apis.trap.jp/#/notification/ws

現状BOTで全メッセージを購読するためには以下の方法がある

  • 全チャンネルを購読する
  • 一定期間ごとにGET /messagesを取得する

どちらもworkaroundっぽいのでBOTに対しても/bot/wsにtimeline_streamingコマンドを追加するかANY_MESSAGE_CREATEDのようなイベントを追加したい

ras0q commented

timeline_streamingコマンドの場合HTTPモードは対応しないことになる?

ras0q commented
対象BOTのfilter→一斉送信処理→この段階で初めてHTTP/WSモードを確認してそれぞれの送信方法で送信

の流れになってるからここに「任意のBOT(filter段階で弾かれる可能性がある)のうちtimeline_streamingonにした特定のWebsocketセッションに送信」の処理を含めるのが厳しそう

なのでセッション単位ではなくてBOT単位で実装する(ANY_MESSAGE_CREATED方式)がいいかも

関係ないけどBOTに対してtimelineという言葉を使うのも違和感がある

現在の「参加チャンネルを設定して、そこからのみイベントを受け取る」という概念を壊してしまうので、慎重になったほうが良い
→「ユーザーがどのbotが反応可能かを見ることができる」
→「最小限の負荷を自然に設定することができる」
という利点を壊してしまう懸念がある

作るとしても、ユースケースが少ないなら、特権botのみへの実装が良いと思う