1

すべての Hubot トリガー/応答をグローバルにインターセプトする方法はありますか? インターセプトは、送信前に Hubot の応答を検査、変更、転送、または拒否できる必要があります。

私が達成したいいくつかの目標:

  • フラッディングを防ぐために、(すべてのプラグイン/スクリプトから) Hubot によって送信されたすべてのメッセージを抑制します。
  • コマンドを使用できるユーザーを制限するには、何らかの ACL (アクセス制御リスト) を適用します。

Hubot の公式ドキュメントには記載されていません。足りないものがありますか?

4

2 に答える 2

1

これは、ロボットに向けられたメッセージをログに記録するために私が作成した単純なミドルウェアです。ユーザー名やルーム名などに応じて、別のことを行うように簡単に変更できます。

module.exports = (robot) ->
  robot.listenerMiddleware (context, next, done) ->
    #create a regex with the robots name in it
    robotName = new RegExp("#{context.listener.robot.name}", "i")
    #only log messages meant for the robot
    if robotName.test("#{context.response.message.text}")
      #only log messages once with the "everything" listener context
      if context.listener.regex.source is /(.+)/i.source
        console.log "User: #{context.response.message.user.name} asked me to \"#{context.response.message.text}\" in Channel: #{context.response.message.room}"
        #your code goes here
    next()

これにより、レート制限が可能になります

于 2015-09-30T16:45:09.523 に答える
1

リスナーへのアクセスを制御するには、リスナー ミドルウェアを確認してください コマンド

レート制限コマンドの実行については、hubot-rate-limit を確認してください: https://github.com/michaelansel/hubot-rate-limit

応答を制御するには、応答ミドルウェアの PR に注目してください: https://github.com/github/hubot/pull/1021

于 2015-09-29T18:13:25.330 に答える