2015-09-28 6 views
1

Есть ли способ перехватить все триггеры/ответ Hubot по всему миру? Перехват должен быть способен проверять, изменять, пересылать или отклонять ответ Hubot перед отправкой.Как перехватывать/захватывать ответы Hubot

Некоторые цели, я хотел бы достичь:

  • дроссельной заслонки все сообщение, отправленное Hubot (из всех скриптов/плагинов) для предотвращения затопления.
  • Примените какой-либо ACL (список контроля доступа), чтобы ограничить, кто может использовать команду.
  • т.д.

Я не могу найти его в официальной документации Hubot. Я что-то пропустил?

ответ

1

Для управления доступом к слушателям, проверить слушатель межплатформенное: https://hubot.github.com/docs/scripting/#listener-middleware https://hubot.github.com/docs/patterns/#restricting-access-to-commands

Для ограничения скорости выполнения команд, проверьте hubot-скорость-предел: https://github.com/michaelansel/hubot-rate-limit

Для контроля ответов, следить на ответное ПО PR: https://github.com/github/hubot/pull/1021

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() 

this вещь позволит ограничить скорость

Смежные вопросы