#ZeroBot Hackerthon
##준비
- 리눅스를 추천합니다.
- 윈도우는 환경설정이 귀찮아요.
- git은 기본입니다.
- github에 아이디가 있어야 합니다.
- 저장 공간을 사용하기 위해서는 redis가 깔려 있어야 합니다.
###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을 셋팅 해봅시다.
- http://github.com/zeropage/zerobot 에 접속합니다.
- 우측 상단에 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
- https://zeropage.slack.com/services/new 에 접속
- hubot 검색후 선택합니다.
- 이름을 넣을수 있는 창이 나타납니다.
- 이름에는 zerobot-test.<팀 번호> 를 씁니다. ex) zerobot-test.0
- 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
- in bluemir’s DM
[hubot] dm test
###참조 * http://www.icicletech.com/blog/automate-your-development-activities-with-hubot * https://github.com/github/hubot/blob/master/docs/scripting.md * http://coffeedoc.info/github/github/hubot/master/classes/Robot.html * https://github.com/slackhq/hubot-slack/issues/132 * https://github.com/slackhq/hubot-slack/issues/136 * https://github.com/slackhq/hubot-slack/issues/159
##제출 테스트가 완료된 코드는 pull request를 통해 제출하면 됩니다. pull request는 다음과 같은 순서로 이루어 집니다.
- 자신의 코드를 push 합니다.
git push
- https://github.com/[your-id]/zerobot 에 접속
- pull request 버튼을 누릅니다.
- zeropage:master 으로 pull request를 보내야 합니다.
- 자신의 코드가 잘 있는지 확인 합니다.
- 메세지를 잘 적어서 제출합니다.
다음 문서를 참고하면 좋습니다. * github help * 분산-환경에서의-Git-프로젝트에-기여하기 * GitHub로 남의 프로젝트에 감놓고 배놓기