Бот на CoffeeScript от разработчиков Github: Hubot
Разработчики Github на работе занимаются не только основным делом, но и посторонними проектами. Один из таких проектов — бот Hubot, программа для автоматизации различных действий в онлайне (изначально чат-бот).
Уникальными особенностями Hubot является поддержка любых Javascript-библиотек через менеджер пакетов npm и скрипты для бота, которые выкладываются на github'е во всеобщее пользование (см. каталог скриптов на CoffeeScript).
Программирование чат-бота осуществляется простыми командами.
robot.hear /problem\??/i, (msg) ->
msg.send "http://cl.ly/BG7R/trollface.jpg"
Например, этот скрипт ожидает появление в чате слова “problems?” и публикует в ответ классическую картинку.
Или вот такой скрипт ищет в Google Image Search картинку по заданному ключевому слову и публикует в чат первый результат со страницы поисковой выдачи.
imageMe = (msg, query, cb) ->
msg.http('http://ajax.googleapis.com/ajax/services/search/images')
.query(v: "1.0", rsz: '8', q: query)
.get() (err, res, body) ->
images = JSON.parse(body)
images = images.responseData.results
image = msg.random images
cb "#{image.unescapedUrl}#.png"
Hubot можно подключить к любому каналу IRC и настроить на свой вкус. Однако, на этом его возможности не исчерпываются. Например, внутри компании Github его научили отпирать двери в офисе, составлять список сотрудников в комнате на базе их WiFi-статусов, находить съёмное жилье по заданным параметрам, устанавливать Github, говорить произвольные фразы через колонки в офисе и т.д.