#ZeroBot Hackerthon

##준비

###Node.Js 다음 방법중 하나를 택하세요. * https://nodejs.org/ * https://github.com/creationix/nvm * apt-get install node.js * yum install node.js

node와 npm이 잘 동작하는지 확인합시다.

###Set Up Test Bot

github에서 코드를 받아 TestBot을 셋팅 해봅시다.

  1. http://github.com/zeropage/zerobot 에 접속합니다.
  2. 우측 상단에 fork를 누릅니다.
    • 이 과정은 후에 코드 제출을 편하게 할수 있게 도와 줍니다.
    • 오픈 소스는 보통 이런식으로 코드를 제출합니다. git clone git@github.com:<자신의 id>/zerobot.git npm install

또는

git clone https://github.com/<자신의 id>/zerobot.git

npm install

github에 이미 자신의 기기가 등록되어 있다면 첫번째 방법을 아니라면 두번째 방법으로 clone 받으면 됩니다.

###Set Up Slack Intergration

  1. https://zeropage.slack.com/services/new 에 접속
  2. hubot 검색후 선택합니다.
  3. 이름을 넣을수 있는 창이 나타납니다.
    • 이름에는 zerobot-test.<팀 번호> 를 씁니다. ex) zerobot-test.0
  4. API Token을 소중히 여기세요 비밀번호와 동일한것입니다.

##실행

###리눅스

export HUBOT_SLACK_TOKEN=<API TOKEN>
./bin/hubot --adapter slack

###윈도우

SET HUBOT_SLACK_TOKEN=<API TOKEN>
.\bin\hubot --adapter slack

###주의점 & FAQ * 코드를 수정 하고 나면 반드시 다시 실행해야 합니다. * redis가 접속불가라면 localhost:6379에 접속하지 못했다는 메세지가 나옵니다.

##개발 example.coffee나 example.js 파일을 참조하여 scripts폴더 안에 자신이 작성하고자 하는 스크립트를 작성하면 됩니다.

주의! 반드시 주석을 작성해야 zerobot help에 커맨드 도움말이 나오게 됩니다.

###언어 * JavaScript * https://developer.mozilla.org/ko/docs/Web/JavaScript * Coffee Script * http://coffeescript.org/

###Quick references

####robot.messageRoom([roomName], [message]) * 특정 방에 메세지를 보냅니다. * roomName에 UserName 을 넣으면 DM으로 전송됩니다. * 단, 이전에 hubot과 DM을 주고 받은 적이 있어야 합니다.

####robot.respond(patten, callback) * hubot을 호출하면서 쓴 특정 패턴에 대해 반응합니다. * 예를 들어 hubot test-command 에 대해 hubot이 반응하도록 할려면 res.respond(/test-command/i, function(res){})으로 작성하면 됩니다. * 패턴은 regexp(정규표현식)으로 동작합니다.

####robot.hear(patten, callback) * hubot이 호출당하지 않아도 패턴에 반응하게끔 합니다. * 예를 들어 “배고파” 라고 치기만 해도 반응하게끔 만든다면 * res.hear(/배고파/i, function(res){}) 을 사용해서 작성하면 됩니다. * 트롤링이 될 소지가 높으므로 조심해서 사용해 주세요.

####robot.brain[key] * hubot에 Persistence 계층입니다. * 저장 : robot.brain[key] = <value> * 읽기 : var someValue = robot.brain[key]

####res.envelope * 메세지를 보낸 곳에 대한 정보 * res.envelope.user : 보낸 사람 * res.envelope.room : 메세지가 쓰여진 채널

####res.reply(text) * hubot을 동작하게 한 대상을 호출하면서 응답합니다. * 주로 특정 대상에게 응답을 할때 사용합니다.

####res.send(text) * hubot을 동작하게 한 채널에 응답을 합니다.

###example

####Code

module.exports = function(robot){
	robot.messageRoom("random", "Hi, there?");
	robot.respond(/test-command/i, function(res){
		res.reply("reply test");
		res.send("send test");
		robot.messageRoom(res.envelope.user.name, "dm test");
	});
	robot.hear(/who's there\?/i, function(res){
 		res.send("nothing here.");
	});
});

####실행결과 * in random

[hubot]   Hi, there?
[bluemir] hubot test-command
[hubot]   bluemir: reply test
[hubot]   send test
[bluemir] who's there?
[hubot]   nothing here