2016-04-09 7 views
0

J'ai une instance de Hubot en cours d'exécution sur Heroku. Je n'ai pas besoin du comportement par défaut (par exemple, une commande d'aide). Au lieu de cela, j'aimerais choisir mes propres commandes et demander aux utilisateurs de saisir du texte avec des commandes. Dans ce cas, je veux juste exécuter pb avec chaque entrée de l'utilisateur.Hubot: utilisez la commande set pour toutes les entrées

Donc, si un utilisateur entre hello je voudrais que humbot exécute pb hello.

Le code que je suis en train basé sur la suggestion mshish est dans /scripts/example.cofee

module.exports = (robot) -> 
    robot.hear /.*/, (msg) -> 
    pb msg 

Répondre

1

On dirait que vous voulez entendre "quoi que ce soit". Utilisez la fonction de Hubot hear and respond (entendez pas répondre fera ce que vous voulez) et utilisez une expression régulière qui correspond à tout, .*

Pour désactiver les scripts par défaut, retirez-les à l'aide npm uninstall --save PACKAGE_NAME de la racine du repo. PACKAGE_NAME doit correspondre aux packages de script que vous souhaitez supprimer de package.json. Vous devrez peut-être également supprimer manuellement le script de external-scripts.json et hubot-scripts.json.

+0

Je mis à jour ma question de montrer ce que je suis en train maintenant en fonction de votre suggestion. Je ne sais toujours pas ce que je fais mal. –

+0

@PhilipKirkbride où définissez-vous 'pb'? – mshish

1

Donc, pour répondre à la première partie de votre question, la suppression des pièces que vous n'avez pas besoin. Editez simplement votre package.json et supprimez les lignes pour les commandes dont vous n'avez pas besoin. Relativement explicite, doit être sûr de supprimer les éléments suivants:

  • "Hubot-diagnostic": "0.0.1",
  • "Hubot-google-images": "^ 0.1.2",
  • "Hubot-help": "^ 0.1.1",
  • "Hubot-cartes": "0.0.1",
  • "Hubot-pugme": "^ 0.1.0",
  • « Hubot -Règles ": "^ 0.1.0",
  • "Hubot-scripts": "^ 2.5.16",
  • "Hubot-shipit": "^ 0.1.1",

Ensuite, pour la deuxième partie, vous avez partiellement raison.

robot.hear /.*/, (msg) -> 
    pb msg 

devrait être dans ce format:

robot.hear /.*/, (msg) -> 
    msg.send "pb #{msg.match[0]}" 

msg.send est la commande utilisée pour envoyer des messages à fait la salle de chat. et msg.match [0] contient tout ce que l'utilisateur a mis comme message.

EDIT: En outre, le besoin de supprimer les entrées de "-scripts.json externe".

+0

la partie de match est juste! pour exécuter des commandes shell vous pouvez utiliser cette https://www.npmjs.com/package/shelljs~~V~~singular~~3rd – rick

+0

Merci mon essai gratuit sortit en courant.Je vais essayer de faire un autre compte et exécuter le script pour confirmer. –

1

vous pouvez aussi le faire avec le middleware. J'ai écrit ceci pour noter chaque message que quelqu'un a jamais dit et où ils l'ont dit. mais vous pouvez avoir l'idée. vous pouvez exécuter un code où je courais les choses @robot.logger.info

module.exports = (robot) -> 
robot.listenerMiddleware (context, next, done) -> 
if context.listener.regex.source is /(.+)/i.source 
    @robot.logger.info("#{context.response.message.user.name} said: \"#{context.response.message.text}\" in Channel: #{context.response.message.room}") 
next()