2015-09-28 2 views
1

Existe-t-il un moyen d'intercepter globalement tous les déclencheurs/réponses Hubot? L'interception doit pouvoir inspecter, modifier, transférer ou rejeter la réponse de Hubot avant d'être envoyée.Comment intercepter/se connecter aux réponses Hubot

Certains objectifs que je voudrais atteindre:

  • Throttle tout message envoyé par Hubot (de tous les plugins/scripts) pour éviter les inondations.
  • Appliquez une sorte de listes de contrôle d'accès (liste de contrôle d'accès) pour limiter les utilisateurs autorisés à utiliser une commande.
  • etc.

Je ne peux pas le trouver dans la documentation Hubot officielle. Est-ce que je manque des choses?

Répondre

1

Ceci est un middleware simple que j'ai écrit pour enregistrer les messages qui sont dirigés vers le robot. il peut facilement être modifié pour faire autre chose en fonction du nom d'utilisateur ou du nom de la pièce ou autre.

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 chose vous permettra de limitons