Articles of hubot

Hubot启动时自动加载.env

我正在使用Heroku开发一个Hubot框架的应用程序。 我在Heroku上设置了一些configurationvariables,当我部署我的代码时,我的process.env引用工作正常。 但是,我在使用configurationvariables设置本地开发系统进行testing时遇到了麻烦。 我有一个.env文件,并从Heroku获取所有configurationvariables。 但是,当我在命令行启动我的应用程序时,.env文件似乎不会被加载。 我已经添加了hubot-env (就像Hubotbuild议的那样 – 从一个文件中加载环境variables ),并且可以每次使用命令启动我的应用程序时手动加载我的.env文件 hubot env load –filename=[filename] 我想自动化这个,所以这个命令会自动执行,当我启动我的机器人。 我可以在哪里configuration?

集成了Asana的Hubot脚本

我正在制作我的第一个Hubot脚本,它将为Asana添加一个快速任务。 我不是在看什么太疯狂,或者至less不认为我是。 目前我有 url = 'https://app.asana.com/api/1.0' WORKSPACE = "1111111111111" user = "xxxxxx.xxxxxxxxxxxxxxxx" pass = "" module.exports = (robot) -> robot.respond /task (.*)/i, (msg) -> params = {name: "#{msg.match[1]}", workspace: "#{WORKSPACE}"} stringParams = JSON.stringify params auth = 'Basic ' + new Buffer("#{user}:#{pass}").toString('base64') msg.http("#{url}/tasks") .headers("Authorization": auth, "Content-Length": stringParams.length, "Accept": "application/json") .query(params) .post() (err, res, body) -> console.log(err) […]

Hubot CronJobfunction

不能想出如何实现这一点。 我试图让Hubot定期在特定的时聊频道中调用一个函数。 目前,我可以通过让用户键入聊天“Hubot totalviewers”来完成此操作,而hubot将返回当前查看者的数量。 关键是让hubot自己做,而不必让用户键入命令(每分钟都会发生)。 任何文件,例子或帮助将不胜感激。

hubot脚本加载yml文件,不要使用相对path

我正在构build一个hubot脚本,我想在其中加载一个yml文件。 我正在使用yamljs npm包来读取YAML文件。 问题是,它总是说“没有这样的文件或目录”的错误。 如果我把绝对path的作品。 我错过了什么? 我正在像这样加载文件: feeds = YAML.load('../feeds.yml'); 这是我的目录结构:

Hubot入门

我只是从github 下载hubot 。 我从\d\projects\hubot运行了npm install ,结果出现错误。 第一个错误可能导致其余的: d:\ projects \ hubot \ node_modules \ hubot-hipchat \ node_modules \ node-xmpp \ node_modules \ node-xmpp-core \ node_modules \ node-stringprep> node“d:\ Program Files \ nodejs \ node_modules \ npm \ bin \ node -gyp-> bin \ …. \ node_modules \ node-gyp \ bin \ node-gyp.js“rebuild gyp ERR! configuration错误gyp […]

使用XMLHttpRequest标头调用Nodejs Ajax

我正在为Hubot编写一个脚本来对Strawpoll.me进行AJAX调用。 我有一个cURL命令,正是我想要的,但我有麻烦翻译成一个Node.js函数的麻烦。 curl –header "X-Requested-With: XMLHttpRequest" –request POST –data "options=1&options=2&options=3&options=4&options=5&title=Test&multi=false&permissive=false" http://strawpoll.me/api/v2/polls 这是我目前在我的脚本中。 QS = require 'querystring' module.exports = (robot) -> robot.respond /strawpoll "(.*)"/i, (msg) -> options = msg.match[1].split('" "') data = QS.stringify({ title: "Strawpoll " + Math.floor(Math.random() * 10000), options: options, multi: false, permissive: true }) req = robot.http("http://strawpoll.me/api/v2/polls").headers({"X-Requested-With": "XMLHttpRequest"}).post(data) (err, res, body) -> if […]

直接向机器人发送消息时,Hubot脚本只能在Slack中工作

现在,我的Hubot机器人正在娴熟地工作。 如果我将这条消息直接传递给Slack中的机器人: qbot !npm bower 它会回复这个链接: https://www.npmjs.com/package/bower 它也适用,如果我只是这样做: !npm bower 但是,如果我在通道中提到这两条消息中的任何一条,机器人就不会做任何事情。 任何帮助,将不胜感激! 这个脚本如果有帮助的话: # Description: # Get a link to an npm module # # Dependencies: # request # # Configuration: # None # # Commands: # qbot !npm <module> request = require "request" module.exports = (robot) -> robot.hear /\!npm (.*)/i, (res) -> module = […]

Hubot合stream综合

我用Heroku的适配器在Heroku中运行了一个Hubot实例,并且一切正常。 但是在安装脚本之后尝试searchconfluence时出现错误。 我能够执行从我的松弛通道合stream帮助命令,并返回与帮助function,但是当我执行hubotsearch它回来了以下 错误:错误:getaddrinfo ENOTFOUND 我相信这是一个DNS错误,我已经检查了,所有我的合stream细节是正确的,据我所知,我使用我的凭据,我login到合stream,所以我知道他们是正确的,我有主机设置为我们用来访问它的合stream云地址。 我对此感到不知所措

为什么require()会给我一个从不同位置加载的模块的新副本?

我很新的Node.JS发展,我试图创build一个Hubot适配器。 hubot模块导出一个名为TextMessage的类,我需要使用它。 在我的适配器中,我创build了一个实例并将其传递给运行的机器人,如下所示: {Adapter, TextMessage} = require 'hubot' class MyAdapter extends Adapter onNewMessage: (text) => @receive new TextMessage text 但是, 在Hubot自己的代码中,它检查我的消息是instanceof TextMessage一个instanceof TextMessage 。 当我运行一个bot并使用我的适配器时,这个检查总是失败。 项目结构如下所示: my-bot |- node_modules |- my-adapter | |- node_modules | | |- hubot |- hubot 因此,在my-adapter require('hubot')给我一个hubot模块的副本,就像给my-bot 。 我很确定我不了解Node模块的一些基本概念。 我究竟做错了什么?

指定由节点中的hubot创build的GET请求的callback函数

我们当地的Hubot(“Sparky”)运行大量的插件脚本,并且一般运行良好。 我正在写一个插件脚本,对Yahoo Pipes进行GET调用,并期待JSONP的结果。 但是,我不确定如何使用_callback参数。 码: module.exports = (robot) -> robot.hear /\bkeyword\b/i, (msg) -> robot.http("http://pipes.yahoo.com/pipes/pipe.run") .query({ _id: "legit-pipe-id-is-here", _render: "json", _callback: "?" }) .get() (err, res, body) -> if body? data = JSON.parse(body) 这得到的错误是: undefined:1 _({"count":10,"value":{"title":"correct title","description":"Pipes Output","lin ^ SyntaxError: Unexpected token _ at Object.parse (native) at e:\node\sparky\scripts\plugin-name.coffee:26:11, <js>:11:23 at IncomingMessage.<anonymous> (e:\node\sparky\node_modules\hubot\node_modules\scoped-http-client\lib\index.js:70:20) at IncomingMessage.EventEmitter.emit (events.js:117:20) at […]