如何 intercept/hook 进入 Hubot 响应
How to intercept/hook into Hubot responses
有什么方法可以全局拦截所有Hubot triggers/response?拦截应该能够在发送前检查,修改,转发或拒绝Hubot响应。
我想实现的一些目标:
- 限制 Hubot 发送的所有消息(来自所有 plugins/scripts)以防止泛滥。
- 应用某种 ACL(访问控制列表)来限制谁可以使用命令。
- 等等
我在 Hubot 官方文档中找不到它。我错过了什么吗?
要控制对侦听器的访问,请查看侦听器中间件:https://hubot.github.com/docs/scripting/#listener-middleware
https://hubot.github.com/docs/patterns/#restricting-access-to-commands
对于速率限制命令的执行,查看 hubot-rate-limit: https://github.com/michaelansel/hubot-rate-limit
控制响应,关注响应中间件PR:https://github.com/github/hubot/pull/1021
这是我编写的一个简单的中间件,用于记录针对机器人的消息。它可以根据用户名或房间名称或其他任何内容轻松修改以执行其他操作。
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 事情将允许你速率限制
有什么方法可以全局拦截所有Hubot triggers/response?拦截应该能够在发送前检查,修改,转发或拒绝Hubot响应。
我想实现的一些目标:
- 限制 Hubot 发送的所有消息(来自所有 plugins/scripts)以防止泛滥。
- 应用某种 ACL(访问控制列表)来限制谁可以使用命令。
- 等等
我在 Hubot 官方文档中找不到它。我错过了什么吗?
要控制对侦听器的访问,请查看侦听器中间件:https://hubot.github.com/docs/scripting/#listener-middleware https://hubot.github.com/docs/patterns/#restricting-access-to-commands
对于速率限制命令的执行,查看 hubot-rate-limit: https://github.com/michaelansel/hubot-rate-limit
控制响应,关注响应中间件PR:https://github.com/github/hubot/pull/1021
这是我编写的一个简单的中间件,用于记录针对机器人的消息。它可以根据用户名或房间名称或其他任何内容轻松修改以执行其他操作。
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 事情将允许你速率限制