├── .editorconfig ├── .gitignore ├── Dockerfile ├── LICENSE ├── README.md ├── bin ├── hubot └── hubot.cmd ├── data └── bday.json ├── external-scripts.json ├── package-lock.json ├── package.json ├── run.sh ├── scripts ├── apbdoor.coffee ├── btc.coffee ├── drsommer.coffee ├── elbe.coffee ├── example.coffee ├── firat.coffee ├── fsr.coffee ├── geruecht.coffee ├── maintain.coffee ├── mensa.coffee ├── porn.coffee ├── random.coffee ├── simpleresponses.coffee ├── stoll.coffee ├── sudo_ger.coffee └── version.coffee └── util.coffee /.editorconfig: -------------------------------------------------------------------------------- 1 | # http://editorconfig.org 2 | root = true 3 | 4 | [*] 5 | indent_style = space 6 | indent_size = 2 7 | charset = utf-8 8 | trim_trailing_whitespace = true 9 | insert_final_newline = true 10 | 11 | [*.md] 12 | trim_trailing_whitespace = false 13 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # hubot 2 | .hubot_history 3 | 4 | # config files 5 | config.sh 6 | matthias.service 7 | 8 | node_modules 9 | -------------------------------------------------------------------------------- /Dockerfile: -------------------------------------------------------------------------------- 1 | FROM node:9.4-alpine 2 | 3 | COPY . ./ 4 | 5 | RUN npm install 6 | 7 | ENTRYPOINT ["./bin/hubot"] 8 | CMD ["-a", "shell"] 9 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2017 Contributors to Matthias 4 | https://github.com/fsr/matthias/graphs/contributors 5 | 6 | Permission is hereby granted, free of charge, to any person obtaining a copy 7 | of this software and associated documentation files (the "Software"), to deal 8 | in the Software without restriction, including without limitation the rights 9 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 10 | copies of the Software, and to permit persons to whom the Software is 11 | furnished to do so, subject to the following conditions: 12 | 13 | The above copyright notice and this permission notice shall be included in all 14 | copies or substantial portions of the Software. 15 | 16 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 17 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 18 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 19 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 20 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 21 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 22 | SOFTWARE. 23 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # 🤖 matthias 2 | 3 | [![Docker Build Status](https://img.shields.io/docker/build/ifsr/matthias.svg?style=flat-square)](https://hub.docker.com/r/ifsr/matthias/) 4 | 5 | Matthias is a chat bot (currently) built on top of the fantastic [hubot](https://hubot.github.com) framework. He should be online in our Slack team. 6 | 7 | ### Running matthias locally 8 | 9 | Choose between running matthias directly or via docker. 10 | 11 | **Warning:** Several of matthias' capabilities require a few env vars to be set. Please refer to `run.sh` for a list of them. 12 | 13 | #### Using your dev environment 14 | 15 | You can start matthias locally by running: 16 | 17 | ```shell 18 | $ npm install 19 | $ ./bin/hubot 20 | ``` 21 | Then you can interact with matthias by typing `matthias help`. 22 | 23 | matthias> matthias help 24 | matthias animate me - The same thing as `image me`, except adds [snip] 25 | matthias help - Displays all of the help commands that matthias knows about. 26 | ... 27 | 28 | Matthias' name can also be substituted with a `!` at the beginning of commands. If you're messaging matthias directly, use just the command without a name prefix, e.g. `help` 29 | 30 | #### Using Docker 31 | 32 | ```shell 33 | $ docker pull ifsr/matthias 34 | $ docker run --rm -it ifsr/matthias 35 | ``` 36 | 37 | This pulls matthias' latest image (automatically built by Docker Hub from this repo) and starts a new ephemeral container with the shell adapter. 38 | -------------------------------------------------------------------------------- /bin/hubot: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | set -e 4 | 5 | npm install 6 | export PATH="node_modules/.bin:node_modules/hubot/node_modules/.bin:$PATH" 7 | 8 | exec node_modules/.bin/hubot --name "matthias" "$@" 9 | -------------------------------------------------------------------------------- /bin/hubot.cmd: -------------------------------------------------------------------------------- 1 | @echo off 2 | 3 | call npm install 4 | SETLOCAL 5 | SET PATH=node_modules\.bin;node_modules\hubot\node_modules\.bin;%PATH% 6 | 7 | node_modules\.bin\hubot.cmd --name "matthias" %* 8 | -------------------------------------------------------------------------------- /data/bday.json: -------------------------------------------------------------------------------- 1 | { 2 | "katja": "1994-02-06", 3 | "philipp": "1989-02-21", 4 | "soenke": "1994-03-27", 5 | "lucasv": "1996-04-30", 6 | "marc": "1993-06-25", 7 | "kilian": "1992-07-17", 8 | "matthias": "2014-04-02", 9 | "justus": "1992-11-17", 10 | "felix": "1995-11-30" 11 | } 12 | -------------------------------------------------------------------------------- /external-scripts.json: -------------------------------------------------------------------------------- 1 | [ 2 | "hubot-diagnostics", 3 | "hubot-help", 4 | "hubot-google-images", 5 | "hubot-maps", 6 | "hubot-dvb", 7 | "hubot-urban", 8 | "hubot-flip" 9 | ] 10 | -------------------------------------------------------------------------------- /package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "matthias", 3 | "version": "0.0.0", 4 | "lockfileVersion": 1, 5 | "requires": true, 6 | "dependencies": { 7 | "@slack/client": { 8 | "version": "3.6.0", 9 | "resolved": "https://registry.npmjs.org/@slack/client/-/client-3.6.0.tgz", 10 | "integrity": "sha1-rVTAOY5TLQQ+JiyatkzHSLc/T3U=", 11 | "requires": { 12 | "async": "1.5.2", 13 | "bluebird": "3.4.6", 14 | "eventemitter3": "1.2.0", 15 | "https-proxy-agent": "1.0.0", 16 | "inherits": "2.0.3", 17 | "lodash": "4.16.6", 18 | "request": "2.76.0", 19 | "retry": "0.9.0", 20 | "url-join": "0.0.1", 21 | "winston": "2.3.0", 22 | "ws": "1.1.1" 23 | }, 24 | "dependencies": { 25 | "async": { 26 | "version": "1.5.2", 27 | "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", 28 | "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=" 29 | }, 30 | "lodash": { 31 | "version": "4.16.6", 32 | "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.16.6.tgz", 33 | "integrity": "sha1-0iyaxmAojzhD4Wun0rXQbMon13c=" 34 | } 35 | } 36 | }, 37 | "accepts": { 38 | "version": "1.2.13", 39 | "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.2.13.tgz", 40 | "integrity": "sha1-5fHzkoxtlf2WVYw27D2dDeSm7Oo=", 41 | "requires": { 42 | "mime-types": "2.1.12", 43 | "negotiator": "0.5.3" 44 | }, 45 | "dependencies": { 46 | "mime-db": { 47 | "version": "1.24.0", 48 | "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.24.0.tgz", 49 | "integrity": "sha1-4tE/k58AFsbk6a0lqGUvEmxGfww=" 50 | }, 51 | "mime-types": { 52 | "version": "2.1.12", 53 | "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.12.tgz", 54 | "integrity": "sha1-FSuiVndwIN1GY/VMLnvCY4HnFyk=", 55 | "requires": { 56 | "mime-db": "1.24.0" 57 | } 58 | } 59 | } 60 | }, 61 | "agent-base": { 62 | "version": "2.0.1", 63 | "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-2.0.1.tgz", 64 | "integrity": "sha1-vY+ehqjrIh//oHvRS+/VXfFCgV4=", 65 | "requires": { 66 | "extend": "3.0.0", 67 | "semver": "5.0.3" 68 | } 69 | }, 70 | "ansi-regex": { 71 | "version": "2.0.0", 72 | "resolved": "http://registry.npmjs.org/ansi-regex/-/ansi-regex-2.0.0.tgz", 73 | "integrity": "sha1-xQYbbg74qBd15Q9dZhUb9r83EQc=" 74 | }, 75 | "ansi-styles": { 76 | "version": "2.2.1", 77 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", 78 | "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" 79 | }, 80 | "asn1": { 81 | "version": "0.2.3", 82 | "resolved": "http://registry.npmjs.org/asn1/-/asn1-0.2.3.tgz", 83 | "integrity": "sha1-2sh4dxPJlmhJ/IGAd36+nB3fO4Y=" 84 | }, 85 | "assert-plus": { 86 | "version": "0.2.0", 87 | "resolved": "http://registry.npmjs.org/assert-plus/-/assert-plus-0.2.0.tgz", 88 | "integrity": "sha1-104bh+ev/A24qttwIfP+SBAasjQ=" 89 | }, 90 | "async": { 91 | "version": "0.9.2", 92 | "resolved": "https://registry.npmjs.org/async/-/async-0.9.2.tgz", 93 | "integrity": "sha1-rqdNXmHB+JlhO/ZL2mbUx48v0X0=" 94 | }, 95 | "asynckit": { 96 | "version": "0.4.0", 97 | "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", 98 | "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=" 99 | }, 100 | "aws-sign2": { 101 | "version": "0.6.0", 102 | "resolved": "http://registry.npmjs.org/aws-sign2/-/aws-sign2-0.6.0.tgz", 103 | "integrity": "sha1-FDQt0428yU0OW4fXY81jYSwOeU8=" 104 | }, 105 | "aws4": { 106 | "version": "1.5.0", 107 | "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.5.0.tgz", 108 | "integrity": "sha1-Cin/t5wxyecS7rCH6OemS0pW11U=" 109 | }, 110 | "base64-url": { 111 | "version": "1.2.2", 112 | "resolved": "https://registry.npmjs.org/base64-url/-/base64-url-1.2.2.tgz", 113 | "integrity": "sha1-kK8m74sLZ7yAGwXsz5QzRWSQCLM=" 114 | }, 115 | "basic-auth": { 116 | "version": "1.0.4", 117 | "resolved": "https://registry.npmjs.org/basic-auth/-/basic-auth-1.0.4.tgz", 118 | "integrity": "sha1-Awk1sB3nyblKgksp8/zLdQ06UpA=" 119 | }, 120 | "basic-auth-connect": { 121 | "version": "1.0.0", 122 | "resolved": "https://registry.npmjs.org/basic-auth-connect/-/basic-auth-connect-1.0.0.tgz", 123 | "integrity": "sha1-/bC0OWLKe0BFanwrtI/hc9otISI=" 124 | }, 125 | "batch": { 126 | "version": "0.5.3", 127 | "resolved": "https://registry.npmjs.org/batch/-/batch-0.5.3.tgz", 128 | "integrity": "sha1-PzQU84AyF0O/wQQvmoP/HVgk1GQ=" 129 | }, 130 | "bcrypt-pbkdf": { 131 | "version": "1.0.0", 132 | "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.0.tgz", 133 | "integrity": "sha1-PKdrhSQccXC/fZcD57mqdGMAQNQ=", 134 | "optional": true, 135 | "requires": { 136 | "tweetnacl": "0.14.3" 137 | } 138 | }, 139 | "bluebird": { 140 | "version": "3.4.6", 141 | "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.4.6.tgz", 142 | "integrity": "sha1-AdqNgh2HgT0ViWfnQ9X+bGLPjA8=" 143 | }, 144 | "body-parser": { 145 | "version": "1.13.3", 146 | "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.13.3.tgz", 147 | "integrity": "sha1-wIzzMMM1jhUQFqBXRvE/ApyX+pc=", 148 | "requires": { 149 | "bytes": "2.1.0", 150 | "content-type": "1.0.2", 151 | "debug": "2.2.0", 152 | "depd": "1.0.1", 153 | "http-errors": "1.3.1", 154 | "iconv-lite": "0.4.11", 155 | "on-finished": "2.3.0", 156 | "qs": "4.0.0", 157 | "raw-body": "2.1.7", 158 | "type-is": "1.6.13" 159 | }, 160 | "dependencies": { 161 | "ee-first": { 162 | "version": "1.1.1", 163 | "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", 164 | "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=" 165 | }, 166 | "mime-db": { 167 | "version": "1.24.0", 168 | "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.24.0.tgz", 169 | "integrity": "sha1-4tE/k58AFsbk6a0lqGUvEmxGfww=" 170 | }, 171 | "mime-types": { 172 | "version": "2.1.12", 173 | "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.12.tgz", 174 | "integrity": "sha1-FSuiVndwIN1GY/VMLnvCY4HnFyk=", 175 | "requires": { 176 | "mime-db": "1.24.0" 177 | } 178 | }, 179 | "on-finished": { 180 | "version": "2.3.0", 181 | "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", 182 | "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", 183 | "requires": { 184 | "ee-first": "1.1.1" 185 | } 186 | }, 187 | "qs": { 188 | "version": "4.0.0", 189 | "resolved": "https://registry.npmjs.org/qs/-/qs-4.0.0.tgz", 190 | "integrity": "sha1-wx2bdOwn33XlQ6hseHKO2NRiNgc=" 191 | }, 192 | "type-is": { 193 | "version": "1.6.13", 194 | "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.13.tgz", 195 | "integrity": "sha1-boO6e8MM0zp7sLf7AHN6IIW/nQg=", 196 | "requires": { 197 | "media-typer": "0.3.0", 198 | "mime-types": "2.1.12" 199 | } 200 | } 201 | } 202 | }, 203 | "boolbase": { 204 | "version": "1.0.0", 205 | "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", 206 | "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24=" 207 | }, 208 | "boom": { 209 | "version": "2.10.1", 210 | "resolved": "http://registry.npmjs.org/boom/-/boom-2.10.1.tgz", 211 | "integrity": "sha1-OciRjO/1eZ+D+UkqhI9iWt0Mdm8=", 212 | "requires": { 213 | "hoek": "2.16.3" 214 | } 215 | }, 216 | "buffer-shims": { 217 | "version": "1.0.0", 218 | "resolved": "https://registry.npmjs.org/buffer-shims/-/buffer-shims-1.0.0.tgz", 219 | "integrity": "sha1-mXjOMXOIxkmth5MCjDR37wRKi1E=" 220 | }, 221 | "bytes": { 222 | "version": "2.1.0", 223 | "resolved": "https://registry.npmjs.org/bytes/-/bytes-2.1.0.tgz", 224 | "integrity": "sha1-rJPEEOL/ycx89LRks4KJBn9eR7Q=" 225 | }, 226 | "caseless": { 227 | "version": "0.11.0", 228 | "resolved": "http://registry.npmjs.org/caseless/-/caseless-0.11.0.tgz", 229 | "integrity": "sha1-cVuW6phBWTzDMGeSP17GDr2k99c=" 230 | }, 231 | "chalk": { 232 | "version": "1.1.3", 233 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", 234 | "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", 235 | "requires": { 236 | "ansi-styles": "2.2.1", 237 | "escape-string-regexp": "1.0.5", 238 | "has-ansi": "2.0.0", 239 | "strip-ansi": "3.0.1", 240 | "supports-color": "2.0.0" 241 | } 242 | }, 243 | "cheerio": { 244 | "version": "0.22.0", 245 | "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-0.22.0.tgz", 246 | "integrity": "sha1-qbqoYKP5tZWmuBsahocxIe06Jp4=", 247 | "requires": { 248 | "css-select": "1.2.0", 249 | "dom-serializer": "0.1.0", 250 | "entities": "1.1.1", 251 | "htmlparser2": "3.9.2", 252 | "lodash.assignin": "4.2.0", 253 | "lodash.bind": "4.2.1", 254 | "lodash.defaults": "4.2.0", 255 | "lodash.filter": "4.6.0", 256 | "lodash.flatten": "4.4.0", 257 | "lodash.foreach": "4.5.0", 258 | "lodash.map": "4.6.0", 259 | "lodash.merge": "4.6.0", 260 | "lodash.pick": "4.4.0", 261 | "lodash.reduce": "4.6.0", 262 | "lodash.reject": "4.6.0", 263 | "lodash.some": "4.6.0" 264 | } 265 | }, 266 | "cline": { 267 | "version": "0.8.2", 268 | "resolved": "https://registry.npmjs.org/cline/-/cline-0.8.2.tgz", 269 | "integrity": "sha1-6RHnQaCtLiTSnm+rLPifoyLVnHY=" 270 | }, 271 | "coffee-script": { 272 | "version": "1.6.3", 273 | "resolved": "https://registry.npmjs.org/coffee-script/-/coffee-script-1.6.3.tgz", 274 | "integrity": "sha1-Y1XTLPGwTN/2tITl5xF4Ky8MOb4=" 275 | }, 276 | "colors": { 277 | "version": "1.0.3", 278 | "resolved": "https://registry.npmjs.org/colors/-/colors-1.0.3.tgz", 279 | "integrity": "sha1-BDP0TYCWgP3rYO0mDxsMJi6CpAs=" 280 | }, 281 | "combined-stream": { 282 | "version": "1.0.5", 283 | "resolved": "http://registry.npmjs.org/combined-stream/-/combined-stream-1.0.5.tgz", 284 | "integrity": "sha1-k4NwpXtKUd6ix3wV1cX9+JUWQAk=", 285 | "requires": { 286 | "delayed-stream": "1.0.0" 287 | } 288 | }, 289 | "commander": { 290 | "version": "2.6.0", 291 | "resolved": "https://registry.npmjs.org/commander/-/commander-2.6.0.tgz", 292 | "integrity": "sha1-nfflL7Kgyw+4kFjugMMQQiXzfh0=" 293 | }, 294 | "compressible": { 295 | "version": "2.0.9", 296 | "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.9.tgz", 297 | "integrity": "sha1-baq04rWZwncN2eIeeokbHFp1VCU=", 298 | "requires": { 299 | "mime-db": "1.24.0" 300 | }, 301 | "dependencies": { 302 | "mime-db": { 303 | "version": "1.24.0", 304 | "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.24.0.tgz", 305 | "integrity": "sha1-4tE/k58AFsbk6a0lqGUvEmxGfww=" 306 | } 307 | } 308 | }, 309 | "compression": { 310 | "version": "1.5.2", 311 | "resolved": "https://registry.npmjs.org/compression/-/compression-1.5.2.tgz", 312 | "integrity": "sha1-sDuNhub4rSloPLqN+R3cb/x3s5U=", 313 | "requires": { 314 | "accepts": "1.2.13", 315 | "bytes": "2.1.0", 316 | "compressible": "2.0.9", 317 | "debug": "2.2.0", 318 | "on-headers": "1.0.1", 319 | "vary": "1.0.1" 320 | } 321 | }, 322 | "connect": { 323 | "version": "2.30.2", 324 | "resolved": "https://registry.npmjs.org/connect/-/connect-2.30.2.tgz", 325 | "integrity": "sha1-jam8vooFTT0xjXTf7JA7XDmhtgk=", 326 | "requires": { 327 | "basic-auth-connect": "1.0.0", 328 | "body-parser": "1.13.3", 329 | "bytes": "2.1.0", 330 | "compression": "1.5.2", 331 | "connect-timeout": "1.6.2", 332 | "content-type": "1.0.2", 333 | "cookie": "0.1.3", 334 | "cookie-parser": "1.3.5", 335 | "cookie-signature": "1.0.6", 336 | "csurf": "1.8.3", 337 | "debug": "2.2.0", 338 | "depd": "1.0.1", 339 | "errorhandler": "1.4.3", 340 | "express-session": "1.11.3", 341 | "finalhandler": "0.4.0", 342 | "fresh": "0.3.0", 343 | "http-errors": "1.3.1", 344 | "method-override": "2.3.6", 345 | "morgan": "1.6.1", 346 | "multiparty": "3.3.2", 347 | "on-headers": "1.0.1", 348 | "parseurl": "1.3.1", 349 | "pause": "0.1.0", 350 | "qs": "4.0.0", 351 | "response-time": "2.3.1", 352 | "serve-favicon": "2.3.0", 353 | "serve-index": "1.7.3", 354 | "serve-static": "1.10.3", 355 | "type-is": "1.6.13", 356 | "utils-merge": "1.0.0", 357 | "vhost": "3.0.2" 358 | }, 359 | "dependencies": { 360 | "mime-db": { 361 | "version": "1.24.0", 362 | "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.24.0.tgz", 363 | "integrity": "sha1-4tE/k58AFsbk6a0lqGUvEmxGfww=" 364 | }, 365 | "mime-types": { 366 | "version": "2.1.12", 367 | "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.12.tgz", 368 | "integrity": "sha1-FSuiVndwIN1GY/VMLnvCY4HnFyk=", 369 | "requires": { 370 | "mime-db": "1.24.0" 371 | } 372 | }, 373 | "qs": { 374 | "version": "4.0.0", 375 | "resolved": "https://registry.npmjs.org/qs/-/qs-4.0.0.tgz", 376 | "integrity": "sha1-wx2bdOwn33XlQ6hseHKO2NRiNgc=" 377 | }, 378 | "type-is": { 379 | "version": "1.6.13", 380 | "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.13.tgz", 381 | "integrity": "sha1-boO6e8MM0zp7sLf7AHN6IIW/nQg=", 382 | "requires": { 383 | "media-typer": "0.3.0", 384 | "mime-types": "2.1.12" 385 | } 386 | } 387 | } 388 | }, 389 | "connect-multiparty": { 390 | "version": "1.2.5", 391 | "resolved": "https://registry.npmjs.org/connect-multiparty/-/connect-multiparty-1.2.5.tgz", 392 | "integrity": "sha1-L6vs/cGop3S6GUhNzmYMgYqFVec=", 393 | "requires": { 394 | "multiparty": "3.3.2", 395 | "on-finished": "2.1.1", 396 | "qs": "2.2.5", 397 | "type-is": "1.5.7" 398 | } 399 | }, 400 | "connect-timeout": { 401 | "version": "1.6.2", 402 | "resolved": "https://registry.npmjs.org/connect-timeout/-/connect-timeout-1.6.2.tgz", 403 | "integrity": "sha1-3ppexh4zoStu2qt7XwYumMWZuI4=", 404 | "requires": { 405 | "debug": "2.2.0", 406 | "http-errors": "1.3.1", 407 | "ms": "0.7.1", 408 | "on-headers": "1.0.1" 409 | } 410 | }, 411 | "content-disposition": { 412 | "version": "0.5.0", 413 | "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.0.tgz", 414 | "integrity": "sha1-QoT+auBjCHRjnkToCkGMKTQTXp4=" 415 | }, 416 | "content-type": { 417 | "version": "1.0.2", 418 | "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.2.tgz", 419 | "integrity": "sha1-t9ETrueo3Se9IRM8TcJSnfFyHu0=" 420 | }, 421 | "cookie": { 422 | "version": "0.1.3", 423 | "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.1.3.tgz", 424 | "integrity": "sha1-5zSlwUF/zkctWu+Cw4HKu2TRpDU=" 425 | }, 426 | "cookie-parser": { 427 | "version": "1.3.5", 428 | "resolved": "https://registry.npmjs.org/cookie-parser/-/cookie-parser-1.3.5.tgz", 429 | "integrity": "sha1-nXVVcPtdF4kHcSJ6AjFNm+fPg1Y=", 430 | "requires": { 431 | "cookie": "0.1.3", 432 | "cookie-signature": "1.0.6" 433 | } 434 | }, 435 | "cookie-signature": { 436 | "version": "1.0.6", 437 | "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", 438 | "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=" 439 | }, 440 | "core-util-is": { 441 | "version": "1.0.2", 442 | "resolved": "http://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", 443 | "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" 444 | }, 445 | "crc": { 446 | "version": "3.3.0", 447 | "resolved": "https://registry.npmjs.org/crc/-/crc-3.3.0.tgz", 448 | "integrity": "sha1-+mIuG8OIvyVzCQgta2UgDOZwkLo=" 449 | }, 450 | "cron": { 451 | "version": "1.1.1", 452 | "resolved": "https://registry.npmjs.org/cron/-/cron-1.1.1.tgz", 453 | "integrity": "sha1-AnGdTvSA38juJNgaNgNGC6OQE84=", 454 | "requires": { 455 | "moment-timezone": "0.5.7" 456 | } 457 | }, 458 | "cryptiles": { 459 | "version": "2.0.5", 460 | "resolved": "http://registry.npmjs.org/cryptiles/-/cryptiles-2.0.5.tgz", 461 | "integrity": "sha1-O9/s3GCBR8HGcgL6KR59ylnqo7g=", 462 | "requires": { 463 | "boom": "2.10.1" 464 | } 465 | }, 466 | "csrf": { 467 | "version": "3.0.3", 468 | "resolved": "https://registry.npmjs.org/csrf/-/csrf-3.0.3.tgz", 469 | "integrity": "sha1-adEyIN6VdigIuxIPdTOplPxCk7U=", 470 | "requires": { 471 | "base64-url": "1.2.2", 472 | "rndm": "1.2.0", 473 | "tsscmp": "1.0.5", 474 | "uid-safe": "2.1.1" 475 | } 476 | }, 477 | "css-select": { 478 | "version": "1.2.0", 479 | "resolved": "https://registry.npmjs.org/css-select/-/css-select-1.2.0.tgz", 480 | "integrity": "sha1-KzoRBTnFNV8c2NMUYj6HCxIeyFg=", 481 | "requires": { 482 | "boolbase": "1.0.0", 483 | "css-what": "2.1.0", 484 | "domutils": "1.5.1", 485 | "nth-check": "1.0.1" 486 | } 487 | }, 488 | "css-what": { 489 | "version": "2.1.0", 490 | "resolved": "https://registry.npmjs.org/css-what/-/css-what-2.1.0.tgz", 491 | "integrity": "sha1-lGfQMsOM+u+58teVASUwYvh/ob0=" 492 | }, 493 | "csurf": { 494 | "version": "1.8.3", 495 | "resolved": "https://registry.npmjs.org/csurf/-/csurf-1.8.3.tgz", 496 | "integrity": "sha1-I/KhO/HY/OHQyZZYg5RELLqGpWo=", 497 | "requires": { 498 | "cookie": "0.1.3", 499 | "cookie-signature": "1.0.6", 500 | "csrf": "3.0.3", 501 | "http-errors": "1.3.1" 502 | } 503 | }, 504 | "cycle": { 505 | "version": "1.0.3", 506 | "resolved": "https://registry.npmjs.org/cycle/-/cycle-1.0.3.tgz", 507 | "integrity": "sha1-IegLK+hYD5i0aPN5QwZisEbDStI=" 508 | }, 509 | "dashdash": { 510 | "version": "1.14.0", 511 | "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.0.tgz", 512 | "integrity": "sha1-KeSGxUGL8PNWA0qZPVFoajPoQUE=", 513 | "requires": { 514 | "assert-plus": "1.0.0" 515 | }, 516 | "dependencies": { 517 | "assert-plus": { 518 | "version": "1.0.0", 519 | "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", 520 | "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=" 521 | } 522 | } 523 | }, 524 | "debug": { 525 | "version": "2.2.0", 526 | "resolved": "http://registry.npmjs.org/debug/-/debug-2.2.0.tgz", 527 | "integrity": "sha1-+HBX6ZWxofauaklgZkE3vFbwOdo=", 528 | "requires": { 529 | "ms": "0.7.1" 530 | } 531 | }, 532 | "delayed-stream": { 533 | "version": "1.0.0", 534 | "resolved": "http://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", 535 | "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=" 536 | }, 537 | "depd": { 538 | "version": "1.0.1", 539 | "resolved": "https://registry.npmjs.org/depd/-/depd-1.0.1.tgz", 540 | "integrity": "sha1-gK7GTJ1tl+ZcwqnKqTwKpqv3Oqo=" 541 | }, 542 | "destroy": { 543 | "version": "1.0.4", 544 | "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", 545 | "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=" 546 | }, 547 | "dom-serializer": { 548 | "version": "0.1.0", 549 | "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.1.0.tgz", 550 | "integrity": "sha1-BzxpdUbOB4DOI75KKOKT5AvDDII=", 551 | "requires": { 552 | "domelementtype": "1.1.3", 553 | "entities": "1.1.1" 554 | }, 555 | "dependencies": { 556 | "domelementtype": { 557 | "version": "1.1.3", 558 | "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.1.3.tgz", 559 | "integrity": "sha1-vSh3PiZCiBrsUVRJJCmcXNgiGFs=" 560 | } 561 | } 562 | }, 563 | "domelementtype": { 564 | "version": "1.3.0", 565 | "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.0.tgz", 566 | "integrity": "sha1-sXrtguirWeUt2cGbF1bg/BhyBMI=" 567 | }, 568 | "domhandler": { 569 | "version": "2.3.0", 570 | "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.3.0.tgz", 571 | "integrity": "sha1-LeWaCCLVAn+r/28DLCsloqir5zg=", 572 | "requires": { 573 | "domelementtype": "1.3.0" 574 | } 575 | }, 576 | "domutils": { 577 | "version": "1.5.1", 578 | "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.5.1.tgz", 579 | "integrity": "sha1-3NhIiib1Y9YQeeSMn3t+Mjc2gs8=", 580 | "requires": { 581 | "dom-serializer": "0.1.0", 582 | "domelementtype": "1.3.0" 583 | } 584 | }, 585 | "dvbjs": { 586 | "version": "3.2.1", 587 | "resolved": "https://registry.npmjs.org/dvbjs/-/dvbjs-3.2.1.tgz", 588 | "integrity": "sha1-PDgo8MVjBrRr8RBUjqqwsWI5K3I=", 589 | "requires": { 590 | "lodash": "3.10.1", 591 | "request-promise": "0.4.3" 592 | } 593 | }, 594 | "ecc-jsbn": { 595 | "version": "0.1.1", 596 | "resolved": "http://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz", 597 | "integrity": "sha1-D8c6ntXw1Tw4GTOYUj735UN3dQU=", 598 | "optional": true, 599 | "requires": { 600 | "jsbn": "0.1.0" 601 | } 602 | }, 603 | "ee-first": { 604 | "version": "1.1.0", 605 | "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.0.tgz", 606 | "integrity": "sha1-ag18YiHkkP7v2S7D9EHJzozQl/Q=" 607 | }, 608 | "entities": { 609 | "version": "1.1.1", 610 | "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.1.tgz", 611 | "integrity": "sha1-blwtClYhtdra7O+AuQ7ftc13cvA=" 612 | }, 613 | "errorhandler": { 614 | "version": "1.4.3", 615 | "resolved": "https://registry.npmjs.org/errorhandler/-/errorhandler-1.4.3.tgz", 616 | "integrity": "sha1-t7cO2PNZ6duICS8tIMD4MUIK2D8=", 617 | "requires": { 618 | "accepts": "1.3.3", 619 | "escape-html": "1.0.3" 620 | }, 621 | "dependencies": { 622 | "accepts": { 623 | "version": "1.3.3", 624 | "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.3.tgz", 625 | "integrity": "sha1-w8p0NJOGSMPg2cHjKN1otiLChMo=", 626 | "requires": { 627 | "mime-types": "2.1.12", 628 | "negotiator": "0.6.1" 629 | } 630 | }, 631 | "escape-html": { 632 | "version": "1.0.3", 633 | "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", 634 | "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=" 635 | }, 636 | "mime-db": { 637 | "version": "1.24.0", 638 | "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.24.0.tgz", 639 | "integrity": "sha1-4tE/k58AFsbk6a0lqGUvEmxGfww=" 640 | }, 641 | "mime-types": { 642 | "version": "2.1.12", 643 | "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.12.tgz", 644 | "integrity": "sha1-FSuiVndwIN1GY/VMLnvCY4HnFyk=", 645 | "requires": { 646 | "mime-db": "1.24.0" 647 | } 648 | }, 649 | "negotiator": { 650 | "version": "0.6.1", 651 | "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.1.tgz", 652 | "integrity": "sha1-KzJxhOiZIQEXeyhWP7XnECrNDKk=" 653 | } 654 | } 655 | }, 656 | "escape-html": { 657 | "version": "1.0.2", 658 | "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.2.tgz", 659 | "integrity": "sha1-130y+pjjjC9BroXpJ44ODmuhAiw=" 660 | }, 661 | "escape-string-regexp": { 662 | "version": "1.0.5", 663 | "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", 664 | "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" 665 | }, 666 | "etag": { 667 | "version": "1.7.0", 668 | "resolved": "https://registry.npmjs.org/etag/-/etag-1.7.0.tgz", 669 | "integrity": "sha1-A9MLX2fdbmMtKUXTDWZScxo01dg=" 670 | }, 671 | "eventemitter3": { 672 | "version": "1.2.0", 673 | "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-1.2.0.tgz", 674 | "integrity": "sha1-HIaZHYFq0eUEdQ5zh0Ik7PO+xQg=" 675 | }, 676 | "express": { 677 | "version": "3.21.2", 678 | "resolved": "https://registry.npmjs.org/express/-/express-3.21.2.tgz", 679 | "integrity": "sha1-DCkD7lxU5j1lqWFwdkcDVQZlo94=", 680 | "requires": { 681 | "basic-auth": "1.0.4", 682 | "commander": "2.6.0", 683 | "connect": "2.30.2", 684 | "content-disposition": "0.5.0", 685 | "content-type": "1.0.2", 686 | "cookie": "0.1.3", 687 | "cookie-signature": "1.0.6", 688 | "debug": "2.2.0", 689 | "depd": "1.0.1", 690 | "escape-html": "1.0.2", 691 | "etag": "1.7.0", 692 | "fresh": "0.3.0", 693 | "merge-descriptors": "1.0.0", 694 | "methods": "1.1.2", 695 | "mkdirp": "0.5.1", 696 | "parseurl": "1.3.1", 697 | "proxy-addr": "1.0.10", 698 | "range-parser": "1.0.3", 699 | "send": "0.13.0", 700 | "utils-merge": "1.0.0", 701 | "vary": "1.0.1" 702 | } 703 | }, 704 | "express-session": { 705 | "version": "1.11.3", 706 | "resolved": "https://registry.npmjs.org/express-session/-/express-session-1.11.3.tgz", 707 | "integrity": "sha1-XMmPP1/4Ttg1+Ry/CqvQxxB0AK8=", 708 | "requires": { 709 | "cookie": "0.1.3", 710 | "cookie-signature": "1.0.6", 711 | "crc": "3.3.0", 712 | "debug": "2.2.0", 713 | "depd": "1.0.1", 714 | "on-headers": "1.0.1", 715 | "parseurl": "1.3.1", 716 | "uid-safe": "2.0.0", 717 | "utils-merge": "1.0.0" 718 | }, 719 | "dependencies": { 720 | "base64-url": { 721 | "version": "1.2.1", 722 | "resolved": "https://registry.npmjs.org/base64-url/-/base64-url-1.2.1.tgz", 723 | "integrity": "sha1-GZ/WYXAqDnt9yubgaYuwicUvbXg=" 724 | }, 725 | "uid-safe": { 726 | "version": "2.0.0", 727 | "resolved": "https://registry.npmjs.org/uid-safe/-/uid-safe-2.0.0.tgz", 728 | "integrity": "sha1-p/PGymSh9qXQTsDvPkw9U2cxcTc=", 729 | "requires": { 730 | "base64-url": "1.2.1" 731 | } 732 | } 733 | } 734 | }, 735 | "extend": { 736 | "version": "3.0.0", 737 | "resolved": "http://registry.npmjs.org/extend/-/extend-3.0.0.tgz", 738 | "integrity": "sha1-WkdDU7nzNT3dgXbf03uRyDpG8dQ=" 739 | }, 740 | "extsprintf": { 741 | "version": "1.0.2", 742 | "resolved": "http://registry.npmjs.org/extsprintf/-/extsprintf-1.0.2.tgz", 743 | "integrity": "sha1-4QgOBljjALBilJkMxw4VAiNf1VA=" 744 | }, 745 | "eyes": { 746 | "version": "0.1.8", 747 | "resolved": "https://registry.npmjs.org/eyes/-/eyes-0.1.8.tgz", 748 | "integrity": "sha1-Ys8SAjTGg3hdkCNIqADvPgzCC8A=" 749 | }, 750 | "finalhandler": { 751 | "version": "0.4.0", 752 | "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-0.4.0.tgz", 753 | "integrity": "sha1-llpS2ejQXSuFdUhUH7ibU6JJfZs=", 754 | "requires": { 755 | "debug": "2.2.0", 756 | "escape-html": "1.0.2", 757 | "on-finished": "2.3.0", 758 | "unpipe": "1.0.0" 759 | }, 760 | "dependencies": { 761 | "ee-first": { 762 | "version": "1.1.1", 763 | "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", 764 | "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=" 765 | }, 766 | "on-finished": { 767 | "version": "2.3.0", 768 | "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", 769 | "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", 770 | "requires": { 771 | "ee-first": "1.1.1" 772 | } 773 | } 774 | } 775 | }, 776 | "flip": { 777 | "version": "1.0.0", 778 | "resolved": "https://registry.npmjs.org/flip/-/flip-1.0.0.tgz", 779 | "integrity": "sha1-itYMY4Z1hWly5K5NjWFXjQsm1z8=" 780 | }, 781 | "forever-agent": { 782 | "version": "0.6.1", 783 | "resolved": "http://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", 784 | "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=" 785 | }, 786 | "form-data": { 787 | "version": "2.1.1", 788 | "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.1.1.tgz", 789 | "integrity": "sha1-St8DQuGnmvoehMjDIKn/yCOSofM=", 790 | "requires": { 791 | "asynckit": "0.4.0", 792 | "combined-stream": "1.0.5", 793 | "mime-types": "2.1.12" 794 | }, 795 | "dependencies": { 796 | "mime-db": { 797 | "version": "1.24.0", 798 | "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.24.0.tgz", 799 | "integrity": "sha1-4tE/k58AFsbk6a0lqGUvEmxGfww=" 800 | }, 801 | "mime-types": { 802 | "version": "2.1.12", 803 | "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.12.tgz", 804 | "integrity": "sha1-FSuiVndwIN1GY/VMLnvCY4HnFyk=", 805 | "requires": { 806 | "mime-db": "1.24.0" 807 | } 808 | } 809 | } 810 | }, 811 | "forwarded": { 812 | "version": "0.1.0", 813 | "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.0.tgz", 814 | "integrity": "sha1-Ge+YdMSuHCl7zweP3mOgm2aoQ2M=" 815 | }, 816 | "fresh": { 817 | "version": "0.3.0", 818 | "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.3.0.tgz", 819 | "integrity": "sha1-ZR+DjiJCTnVm3hYdg1jKoZn4PU8=" 820 | }, 821 | "generate-function": { 822 | "version": "2.0.0", 823 | "resolved": "http://registry.npmjs.org/generate-function/-/generate-function-2.0.0.tgz", 824 | "integrity": "sha1-aFj+fAlpt9TpCTM3ZHrHn2DfvnQ=" 825 | }, 826 | "generate-object-property": { 827 | "version": "1.2.0", 828 | "resolved": "http://registry.npmjs.org/generate-object-property/-/generate-object-property-1.2.0.tgz", 829 | "integrity": "sha1-nA4cQDCM6AT0eDYYuTf6iPmdUNA=", 830 | "requires": { 831 | "is-property": "1.0.2" 832 | } 833 | }, 834 | "getpass": { 835 | "version": "0.1.6", 836 | "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.6.tgz", 837 | "integrity": "sha1-KD/9n8ElaECHUxHBtg6MQBhxEOY=", 838 | "requires": { 839 | "assert-plus": "1.0.0" 840 | }, 841 | "dependencies": { 842 | "assert-plus": { 843 | "version": "1.0.0", 844 | "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", 845 | "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=" 846 | } 847 | } 848 | }, 849 | "git-rev": { 850 | "version": "0.2.1", 851 | "resolved": "https://registry.npmjs.org/git-rev/-/git-rev-0.2.1.tgz", 852 | "integrity": "sha1-jMvSCSs0W8LJFJVIOW31SWRspj8=" 853 | }, 854 | "graceful-readlink": { 855 | "version": "1.0.1", 856 | "resolved": "http://registry.npmjs.org/graceful-readlink/-/graceful-readlink-1.0.1.tgz", 857 | "integrity": "sha1-TK+tdrxi8C+gObL5Tpo906ORpyU=" 858 | }, 859 | "har-validator": { 860 | "version": "2.0.6", 861 | "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-2.0.6.tgz", 862 | "integrity": "sha1-zcvAgYgmWtEZtqWnyKtw7s+10n0=", 863 | "requires": { 864 | "chalk": "1.1.3", 865 | "commander": "2.9.0", 866 | "is-my-json-valid": "2.15.0", 867 | "pinkie-promise": "2.0.1" 868 | }, 869 | "dependencies": { 870 | "commander": { 871 | "version": "2.9.0", 872 | "resolved": "http://registry.npmjs.org/commander/-/commander-2.9.0.tgz", 873 | "integrity": "sha1-nJkJQXbhIkDLItbFFGCYQA/g99Q=", 874 | "requires": { 875 | "graceful-readlink": "1.0.1" 876 | } 877 | } 878 | } 879 | }, 880 | "has-ansi": { 881 | "version": "2.0.0", 882 | "resolved": "http://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", 883 | "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", 884 | "requires": { 885 | "ansi-regex": "2.0.0" 886 | } 887 | }, 888 | "hawk": { 889 | "version": "3.1.3", 890 | "resolved": "https://registry.npmjs.org/hawk/-/hawk-3.1.3.tgz", 891 | "integrity": "sha1-B4REvXwWQLD+VA0sm3PVlnjo4cQ=", 892 | "requires": { 893 | "boom": "2.10.1", 894 | "cryptiles": "2.0.5", 895 | "hoek": "2.16.3", 896 | "sntp": "1.0.9" 897 | } 898 | }, 899 | "hoek": { 900 | "version": "2.16.3", 901 | "resolved": "http://registry.npmjs.org/hoek/-/hoek-2.16.3.tgz", 902 | "integrity": "sha1-ILt0A9POo5jpHcRxCo/xuCdKJe0=" 903 | }, 904 | "htmlparser2": { 905 | "version": "3.9.2", 906 | "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.9.2.tgz", 907 | "integrity": "sha1-G9+HrMoPP55T+k/M6w9LTLsAszg=", 908 | "requires": { 909 | "domelementtype": "1.3.0", 910 | "domhandler": "2.3.0", 911 | "domutils": "1.5.1", 912 | "entities": "1.1.1", 913 | "inherits": "2.0.3", 914 | "readable-stream": "2.1.5" 915 | }, 916 | "dependencies": { 917 | "isarray": { 918 | "version": "1.0.0", 919 | "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", 920 | "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" 921 | }, 922 | "readable-stream": { 923 | "version": "2.1.5", 924 | "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.1.5.tgz", 925 | "integrity": "sha1-ZvqLcg4UOLNkaB8q0aY8YYRIydA=", 926 | "requires": { 927 | "buffer-shims": "1.0.0", 928 | "core-util-is": "1.0.2", 929 | "inherits": "2.0.3", 930 | "isarray": "1.0.0", 931 | "process-nextick-args": "1.0.7", 932 | "string_decoder": "0.10.31", 933 | "util-deprecate": "1.0.2" 934 | } 935 | } 936 | } 937 | }, 938 | "http-errors": { 939 | "version": "1.3.1", 940 | "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.3.1.tgz", 941 | "integrity": "sha1-GX4izevUGYWF6GlO9nhhl7ke2UI=", 942 | "requires": { 943 | "inherits": "2.0.3", 944 | "statuses": "1.3.0" 945 | } 946 | }, 947 | "http-signature": { 948 | "version": "1.1.1", 949 | "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.1.1.tgz", 950 | "integrity": "sha1-33LiZwZs0Kxn+3at+OE0qPvPkb8=", 951 | "requires": { 952 | "assert-plus": "0.2.0", 953 | "jsprim": "1.3.1", 954 | "sshpk": "1.10.1" 955 | } 956 | }, 957 | "https-proxy-agent": { 958 | "version": "1.0.0", 959 | "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-1.0.0.tgz", 960 | "integrity": "sha1-NffabEjOTdv6JkiRrFk+5f+GceY=", 961 | "requires": { 962 | "agent-base": "2.0.1", 963 | "debug": "2.2.0", 964 | "extend": "3.0.0" 965 | } 966 | }, 967 | "hubot": { 968 | "version": "2.19.0", 969 | "resolved": "https://registry.npmjs.org/hubot/-/hubot-2.19.0.tgz", 970 | "integrity": "sha1-h8Vy0hD7DV+J91YXeuACDUn/ujY=", 971 | "requires": { 972 | "async": "0.9.2", 973 | "chalk": "1.1.3", 974 | "cline": "0.8.2", 975 | "coffee-script": "1.6.3", 976 | "connect-multiparty": "1.2.5", 977 | "express": "3.21.2", 978 | "log": "1.4.0", 979 | "optparse": "1.0.4", 980 | "scoped-http-client": "0.11.0" 981 | } 982 | }, 983 | "hubot-diagnostics": { 984 | "version": "0.0.1", 985 | "resolved": "https://registry.npmjs.org/hubot-diagnostics/-/hubot-diagnostics-0.0.1.tgz", 986 | "integrity": "sha1-aa6gGuTb3PBRISDE4z6WWt5VJiw=" 987 | }, 988 | "hubot-dvb": { 989 | "version": "1.0.0", 990 | "resolved": "https://registry.npmjs.org/hubot-dvb/-/hubot-dvb-1.0.0.tgz", 991 | "integrity": "sha1-ua+8RSZjS+BeQvgxUIBiSCiLJwQ=", 992 | "requires": { 993 | "dvbjs": "3.2.1" 994 | } 995 | }, 996 | "hubot-flip": { 997 | "version": "2.17.1", 998 | "resolved": "https://registry.npmjs.org/hubot-flip/-/hubot-flip-2.17.1.tgz", 999 | "integrity": "sha1-Lb9EJGK5HWBaPXicBgbTO69G1dc=", 1000 | "requires": { 1001 | "flip": "1.0.0" 1002 | } 1003 | }, 1004 | "hubot-google-images": { 1005 | "version": "0.2.6", 1006 | "resolved": "https://registry.npmjs.org/hubot-google-images/-/hubot-google-images-0.2.6.tgz", 1007 | "integrity": "sha1-3Z9wMrgkLilcQy3b6R5Dijx8q1Q=" 1008 | }, 1009 | "hubot-help": { 1010 | "version": "0.2.0", 1011 | "resolved": "https://registry.npmjs.org/hubot-help/-/hubot-help-0.2.0.tgz", 1012 | "integrity": "sha1-N1sP16Hq+ypxzy5Ui8sia/fmZkI=" 1013 | }, 1014 | "hubot-maps": { 1015 | "version": "0.0.2", 1016 | "resolved": "https://registry.npmjs.org/hubot-maps/-/hubot-maps-0.0.2.tgz", 1017 | "integrity": "sha1-4nGbAQYeX9ozYxx5+ttrhX0fnjY=" 1018 | }, 1019 | "hubot-scripts": { 1020 | "version": "2.17.2", 1021 | "resolved": "https://registry.npmjs.org/hubot-scripts/-/hubot-scripts-2.17.2.tgz", 1022 | "integrity": "sha1-mwjpB9XPq6cteDIEBnp4zp3zriQ=", 1023 | "requires": { 1024 | "redis": "0.8.4" 1025 | } 1026 | }, 1027 | "hubot-slack": { 1028 | "version": "4.2.1", 1029 | "resolved": "https://registry.npmjs.org/hubot-slack/-/hubot-slack-4.2.1.tgz", 1030 | "integrity": "sha1-U1SjM7lZVgxZuklLGF5w+7ok6hA=", 1031 | "requires": { 1032 | "@slack/client": "3.6.0", 1033 | "lodash": "3.10.1" 1034 | } 1035 | }, 1036 | "hubot-urban": { 1037 | "version": "1.0.1", 1038 | "resolved": "https://registry.npmjs.org/hubot-urban/-/hubot-urban-1.0.1.tgz", 1039 | "integrity": "sha1-waa9JKj1V03NHlxs5XEBUmNx1Jw=" 1040 | }, 1041 | "iconv-lite": { 1042 | "version": "0.4.11", 1043 | "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.11.tgz", 1044 | "integrity": "sha1-LstC/SlHRJIiCaLnxATayHk9it4=" 1045 | }, 1046 | "inherits": { 1047 | "version": "2.0.3", 1048 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", 1049 | "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" 1050 | }, 1051 | "ipaddr.js": { 1052 | "version": "1.0.5", 1053 | "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.0.5.tgz", 1054 | "integrity": "sha1-X6eM8wG4JceKvDBC2BJyMEnqI8c=" 1055 | }, 1056 | "is-my-json-valid": { 1057 | "version": "2.15.0", 1058 | "resolved": "https://registry.npmjs.org/is-my-json-valid/-/is-my-json-valid-2.15.0.tgz", 1059 | "integrity": "sha1-k27do8o8IR/ZjzstPgjaQ/eykVs=", 1060 | "requires": { 1061 | "generate-function": "2.0.0", 1062 | "generate-object-property": "1.2.0", 1063 | "jsonpointer": "4.0.0", 1064 | "xtend": "4.0.1" 1065 | } 1066 | }, 1067 | "is-property": { 1068 | "version": "1.0.2", 1069 | "resolved": "http://registry.npmjs.org/is-property/-/is-property-1.0.2.tgz", 1070 | "integrity": "sha1-V/4cTkhHTt1lsJkR8msc1Ald2oQ=" 1071 | }, 1072 | "is-typedarray": { 1073 | "version": "1.0.0", 1074 | "resolved": "http://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", 1075 | "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=" 1076 | }, 1077 | "isarray": { 1078 | "version": "0.0.1", 1079 | "resolved": "http://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", 1080 | "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=" 1081 | }, 1082 | "isstream": { 1083 | "version": "0.1.2", 1084 | "resolved": "http://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", 1085 | "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=" 1086 | }, 1087 | "jodid25519": { 1088 | "version": "1.0.2", 1089 | "resolved": "http://registry.npmjs.org/jodid25519/-/jodid25519-1.0.2.tgz", 1090 | "integrity": "sha1-BtSRIlUJNBlHfUJWM2BuDpB4KWc=", 1091 | "optional": true, 1092 | "requires": { 1093 | "jsbn": "0.1.0" 1094 | } 1095 | }, 1096 | "jsbn": { 1097 | "version": "0.1.0", 1098 | "resolved": "http://registry.npmjs.org/jsbn/-/jsbn-0.1.0.tgz", 1099 | "integrity": "sha1-ZQmH2g3XT06/WhE3eiqi0nPpff0=", 1100 | "optional": true 1101 | }, 1102 | "json-schema": { 1103 | "version": "0.2.3", 1104 | "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", 1105 | "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=" 1106 | }, 1107 | "json-stringify-safe": { 1108 | "version": "5.0.1", 1109 | "resolved": "http://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", 1110 | "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=" 1111 | }, 1112 | "jsonpointer": { 1113 | "version": "4.0.0", 1114 | "resolved": "https://registry.npmjs.org/jsonpointer/-/jsonpointer-4.0.0.tgz", 1115 | "integrity": "sha1-ZmHhYdL8RF8Z+YQwIxNDci4fy9U=" 1116 | }, 1117 | "jsprim": { 1118 | "version": "1.3.1", 1119 | "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.3.1.tgz", 1120 | "integrity": "sha1-KnJW9wQSop7jZwqspiWZTE3P8lI=", 1121 | "requires": { 1122 | "extsprintf": "1.0.2", 1123 | "json-schema": "0.2.3", 1124 | "verror": "1.3.6" 1125 | } 1126 | }, 1127 | "lodash": { 1128 | "version": "3.10.1", 1129 | "resolved": "https://registry.npmjs.org/lodash/-/lodash-3.10.1.tgz", 1130 | "integrity": "sha1-W/Rejkm6QYnhfUgnid/RW9FAt7Y=" 1131 | }, 1132 | "lodash.assignin": { 1133 | "version": "4.2.0", 1134 | "resolved": "https://registry.npmjs.org/lodash.assignin/-/lodash.assignin-4.2.0.tgz", 1135 | "integrity": "sha1-uo31+4QesKPoBEIysOJjqNxqKKI=" 1136 | }, 1137 | "lodash.bind": { 1138 | "version": "4.2.1", 1139 | "resolved": "https://registry.npmjs.org/lodash.bind/-/lodash.bind-4.2.1.tgz", 1140 | "integrity": "sha1-euMBfpOWIqwxt9fX3LGzTbFpDTU=" 1141 | }, 1142 | "lodash.defaults": { 1143 | "version": "4.2.0", 1144 | "resolved": "https://registry.npmjs.org/lodash.defaults/-/lodash.defaults-4.2.0.tgz", 1145 | "integrity": "sha1-0JF4cW/+pN3p5ft7N/bwgCJ0WAw=" 1146 | }, 1147 | "lodash.filter": { 1148 | "version": "4.6.0", 1149 | "resolved": "https://registry.npmjs.org/lodash.filter/-/lodash.filter-4.6.0.tgz", 1150 | "integrity": "sha1-ZosdSYFgOuHMWm+nYBQ+SAtMSs4=" 1151 | }, 1152 | "lodash.flatten": { 1153 | "version": "4.4.0", 1154 | "resolved": "https://registry.npmjs.org/lodash.flatten/-/lodash.flatten-4.4.0.tgz", 1155 | "integrity": "sha1-8xwiIlqWMtK7+OSt2+8kCqdlph8=" 1156 | }, 1157 | "lodash.foreach": { 1158 | "version": "4.5.0", 1159 | "resolved": "https://registry.npmjs.org/lodash.foreach/-/lodash.foreach-4.5.0.tgz", 1160 | "integrity": "sha1-Gmo16s5AEoDH8G3d7DUWWrJ+PlM=" 1161 | }, 1162 | "lodash.map": { 1163 | "version": "4.6.0", 1164 | "resolved": "https://registry.npmjs.org/lodash.map/-/lodash.map-4.6.0.tgz", 1165 | "integrity": "sha1-dx7Hg540c9nEzeKLGTlMNWL09tM=" 1166 | }, 1167 | "lodash.merge": { 1168 | "version": "4.6.0", 1169 | "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.0.tgz", 1170 | "integrity": "sha1-aYhLoUSsM/5plzemCG3v+t0PicU=" 1171 | }, 1172 | "lodash.pick": { 1173 | "version": "4.4.0", 1174 | "resolved": "https://registry.npmjs.org/lodash.pick/-/lodash.pick-4.4.0.tgz", 1175 | "integrity": "sha1-UvBWEP/53tQiYRRB7R/BI6AwAbM=" 1176 | }, 1177 | "lodash.reduce": { 1178 | "version": "4.6.0", 1179 | "resolved": "https://registry.npmjs.org/lodash.reduce/-/lodash.reduce-4.6.0.tgz", 1180 | "integrity": "sha1-8atrg5KZrUj3hKu/R2WW8DuRTTs=" 1181 | }, 1182 | "lodash.reject": { 1183 | "version": "4.6.0", 1184 | "resolved": "https://registry.npmjs.org/lodash.reject/-/lodash.reject-4.6.0.tgz", 1185 | "integrity": "sha1-gNZJLcFHCGS79YNTO2UfQqn1JBU=" 1186 | }, 1187 | "lodash.some": { 1188 | "version": "4.6.0", 1189 | "resolved": "https://registry.npmjs.org/lodash.some/-/lodash.some-4.6.0.tgz", 1190 | "integrity": "sha1-G7nzFO9ri63tE7VJFpsqlF62jk0=" 1191 | }, 1192 | "log": { 1193 | "version": "1.4.0", 1194 | "resolved": "https://registry.npmjs.org/log/-/log-1.4.0.tgz", 1195 | "integrity": "sha1-S6HYkP3iSbAx3KA7w36q8yVlbxw=" 1196 | }, 1197 | "media-typer": { 1198 | "version": "0.3.0", 1199 | "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", 1200 | "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=" 1201 | }, 1202 | "merge-descriptors": { 1203 | "version": "1.0.0", 1204 | "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.0.tgz", 1205 | "integrity": "sha1-IWnPdTjhsMyH+4jhUC2EdLv3mGQ=" 1206 | }, 1207 | "method-override": { 1208 | "version": "2.3.6", 1209 | "resolved": "https://registry.npmjs.org/method-override/-/method-override-2.3.6.tgz", 1210 | "integrity": "sha1-IJJhzFiNRdnVoCL/INfV646SF54=", 1211 | "requires": { 1212 | "debug": "2.2.0", 1213 | "methods": "1.1.2", 1214 | "parseurl": "1.3.1", 1215 | "vary": "1.1.0" 1216 | }, 1217 | "dependencies": { 1218 | "vary": { 1219 | "version": "1.1.0", 1220 | "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.0.tgz", 1221 | "integrity": "sha1-4eWv+70WrnaN0mdDlLmtMCJlMUA=" 1222 | } 1223 | } 1224 | }, 1225 | "methods": { 1226 | "version": "1.1.2", 1227 | "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", 1228 | "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=" 1229 | }, 1230 | "mime": { 1231 | "version": "1.3.4", 1232 | "resolved": "https://registry.npmjs.org/mime/-/mime-1.3.4.tgz", 1233 | "integrity": "sha1-EV+eO2s9rylZmDyzjxSaLUDrXVM=" 1234 | }, 1235 | "mime-db": { 1236 | "version": "1.12.0", 1237 | "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.12.0.tgz", 1238 | "integrity": "sha1-PQxjGA9FjrENMlqqN9fFiuMS6dc=" 1239 | }, 1240 | "mime-types": { 1241 | "version": "2.0.14", 1242 | "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.0.14.tgz", 1243 | "integrity": "sha1-MQ4VnbI+B3+Lsit0jav6SVcUCqY=", 1244 | "requires": { 1245 | "mime-db": "1.12.0" 1246 | } 1247 | }, 1248 | "minimist": { 1249 | "version": "0.0.8", 1250 | "resolved": "http://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", 1251 | "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=" 1252 | }, 1253 | "mkdirp": { 1254 | "version": "0.5.1", 1255 | "resolved": "http://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", 1256 | "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", 1257 | "requires": { 1258 | "minimist": "0.0.8" 1259 | } 1260 | }, 1261 | "moment": { 1262 | "version": "2.15.2", 1263 | "resolved": "https://registry.npmjs.org/moment/-/moment-2.15.2.tgz", 1264 | "integrity": "sha1-G/3t9qbjRfMi/pVtXfW9CKjOhNw=" 1265 | }, 1266 | "moment-timezone": { 1267 | "version": "0.5.7", 1268 | "resolved": "https://registry.npmjs.org/moment-timezone/-/moment-timezone-0.5.7.tgz", 1269 | "integrity": "sha1-EwW8raFvBG27x6yJq/Zu//+IbLU=", 1270 | "requires": { 1271 | "moment": "2.15.2" 1272 | } 1273 | }, 1274 | "morgan": { 1275 | "version": "1.6.1", 1276 | "resolved": "https://registry.npmjs.org/morgan/-/morgan-1.6.1.tgz", 1277 | "integrity": "sha1-X9gYOYxoGcuiinzWZk8pL+HAu/I=", 1278 | "requires": { 1279 | "basic-auth": "1.0.4", 1280 | "debug": "2.2.0", 1281 | "depd": "1.0.1", 1282 | "on-finished": "2.3.0", 1283 | "on-headers": "1.0.1" 1284 | }, 1285 | "dependencies": { 1286 | "ee-first": { 1287 | "version": "1.1.1", 1288 | "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", 1289 | "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=" 1290 | }, 1291 | "on-finished": { 1292 | "version": "2.3.0", 1293 | "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", 1294 | "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", 1295 | "requires": { 1296 | "ee-first": "1.1.1" 1297 | } 1298 | } 1299 | } 1300 | }, 1301 | "ms": { 1302 | "version": "0.7.1", 1303 | "resolved": "http://registry.npmjs.org/ms/-/ms-0.7.1.tgz", 1304 | "integrity": "sha1-nNE8A62/8ltl7/3nzoZO6VIBcJg=" 1305 | }, 1306 | "multiparty": { 1307 | "version": "3.3.2", 1308 | "resolved": "https://registry.npmjs.org/multiparty/-/multiparty-3.3.2.tgz", 1309 | "integrity": "sha1-Nd5oBNwZZD5SSfPT473GyM4wHT8=", 1310 | "requires": { 1311 | "readable-stream": "1.1.14", 1312 | "stream-counter": "0.2.0" 1313 | } 1314 | }, 1315 | "negotiator": { 1316 | "version": "0.5.3", 1317 | "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.5.3.tgz", 1318 | "integrity": "sha1-Jp1cR2gQ7JLtvntsLygxY4T5p+g=" 1319 | }, 1320 | "node-uuid": { 1321 | "version": "1.4.7", 1322 | "resolved": "http://registry.npmjs.org/node-uuid/-/node-uuid-1.4.7.tgz", 1323 | "integrity": "sha1-baWhdmjEs91ZYjvaEc9/pMH2Cm8=" 1324 | }, 1325 | "nth-check": { 1326 | "version": "1.0.1", 1327 | "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-1.0.1.tgz", 1328 | "integrity": "sha1-mSms32KPwsQQmN6rgqxYDPFJquQ=", 1329 | "requires": { 1330 | "boolbase": "1.0.0" 1331 | } 1332 | }, 1333 | "oauth-sign": { 1334 | "version": "0.8.2", 1335 | "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.8.2.tgz", 1336 | "integrity": "sha1-Rqarfwrq2N6unsBWV4C31O/rnUM=" 1337 | }, 1338 | "on-finished": { 1339 | "version": "2.1.1", 1340 | "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.1.1.tgz", 1341 | "integrity": "sha1-+CyhyeOk8yhrG5k4YQ5bhja9PLI=", 1342 | "requires": { 1343 | "ee-first": "1.1.0" 1344 | } 1345 | }, 1346 | "on-headers": { 1347 | "version": "1.0.1", 1348 | "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.1.tgz", 1349 | "integrity": "sha1-ko9dD0cNSTQmUepnlLCFfBAGk/c=" 1350 | }, 1351 | "options": { 1352 | "version": "0.0.6", 1353 | "resolved": "https://registry.npmjs.org/options/-/options-0.0.6.tgz", 1354 | "integrity": "sha1-7CLTEoBrtT5zF3Pnza788cZDEo8=" 1355 | }, 1356 | "optparse": { 1357 | "version": "1.0.4", 1358 | "resolved": "https://registry.npmjs.org/optparse/-/optparse-1.0.4.tgz", 1359 | "integrity": "sha1-wGJXnS0F0kPCIaMEpx4Ml5YjzPE=" 1360 | }, 1361 | "parseurl": { 1362 | "version": "1.3.1", 1363 | "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.1.tgz", 1364 | "integrity": "sha1-yKuMkiO6NIiKpkopeyiFO+wY2lY=" 1365 | }, 1366 | "pause": { 1367 | "version": "0.1.0", 1368 | "resolved": "https://registry.npmjs.org/pause/-/pause-0.1.0.tgz", 1369 | "integrity": "sha1-68ikqGGf8LioGsFRPDQ0/0af23Q=" 1370 | }, 1371 | "pinkie": { 1372 | "version": "2.0.4", 1373 | "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", 1374 | "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=" 1375 | }, 1376 | "pinkie-promise": { 1377 | "version": "2.0.1", 1378 | "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", 1379 | "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", 1380 | "requires": { 1381 | "pinkie": "2.0.4" 1382 | } 1383 | }, 1384 | "process-nextick-args": { 1385 | "version": "1.0.7", 1386 | "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz", 1387 | "integrity": "sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M=" 1388 | }, 1389 | "proxy-addr": { 1390 | "version": "1.0.10", 1391 | "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-1.0.10.tgz", 1392 | "integrity": "sha1-DUCoL4Afw1VWfS7LZe/j8HfxIcU=", 1393 | "requires": { 1394 | "forwarded": "0.1.0", 1395 | "ipaddr.js": "1.0.5" 1396 | } 1397 | }, 1398 | "punycode": { 1399 | "version": "1.4.1", 1400 | "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", 1401 | "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=" 1402 | }, 1403 | "qs": { 1404 | "version": "2.2.5", 1405 | "resolved": "https://registry.npmjs.org/qs/-/qs-2.2.5.tgz", 1406 | "integrity": "sha1-EIirr53MCuWuRbcJ5sa1iIsjkjw=" 1407 | }, 1408 | "random-bytes": { 1409 | "version": "1.0.0", 1410 | "resolved": "https://registry.npmjs.org/random-bytes/-/random-bytes-1.0.0.tgz", 1411 | "integrity": "sha1-T2ih3Arli9P7lYSMMDJNt11kNgs=" 1412 | }, 1413 | "range-parser": { 1414 | "version": "1.0.3", 1415 | "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.0.3.tgz", 1416 | "integrity": "sha1-aHKCNTXGkuLCoBA4Jq/YLC4P8XU=" 1417 | }, 1418 | "raw-body": { 1419 | "version": "2.1.7", 1420 | "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.1.7.tgz", 1421 | "integrity": "sha1-rf6s4uT7MJgFgBTQjActzFl1h3Q=", 1422 | "requires": { 1423 | "bytes": "2.4.0", 1424 | "iconv-lite": "0.4.13", 1425 | "unpipe": "1.0.0" 1426 | }, 1427 | "dependencies": { 1428 | "bytes": { 1429 | "version": "2.4.0", 1430 | "resolved": "https://registry.npmjs.org/bytes/-/bytes-2.4.0.tgz", 1431 | "integrity": "sha1-fZcZb51br39pNeJZhVSe3SpsIzk=" 1432 | }, 1433 | "iconv-lite": { 1434 | "version": "0.4.13", 1435 | "resolved": "http://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.13.tgz", 1436 | "integrity": "sha1-H4irpKsLFQjoMSrMOTRfNumS4vI=" 1437 | } 1438 | } 1439 | }, 1440 | "readable-stream": { 1441 | "version": "1.1.14", 1442 | "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", 1443 | "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=", 1444 | "requires": { 1445 | "core-util-is": "1.0.2", 1446 | "inherits": "2.0.3", 1447 | "isarray": "0.0.1", 1448 | "string_decoder": "0.10.31" 1449 | } 1450 | }, 1451 | "redis": { 1452 | "version": "0.8.4", 1453 | "resolved": "https://registry.npmjs.org/redis/-/redis-0.8.4.tgz", 1454 | "integrity": "sha1-FGCfJkFOIRwx480H3HmwS/n/GYA=" 1455 | }, 1456 | "request": { 1457 | "version": "2.76.0", 1458 | "resolved": "https://registry.npmjs.org/request/-/request-2.76.0.tgz", 1459 | "integrity": "sha1-vkRQWv73A2CgQ2lVEGvjlF2VVg4=", 1460 | "requires": { 1461 | "aws-sign2": "0.6.0", 1462 | "aws4": "1.5.0", 1463 | "caseless": "0.11.0", 1464 | "combined-stream": "1.0.5", 1465 | "extend": "3.0.0", 1466 | "forever-agent": "0.6.1", 1467 | "form-data": "2.1.1", 1468 | "har-validator": "2.0.6", 1469 | "hawk": "3.1.3", 1470 | "http-signature": "1.1.1", 1471 | "is-typedarray": "1.0.0", 1472 | "isstream": "0.1.2", 1473 | "json-stringify-safe": "5.0.1", 1474 | "mime-types": "2.1.12", 1475 | "node-uuid": "1.4.7", 1476 | "oauth-sign": "0.8.2", 1477 | "qs": "6.3.0", 1478 | "stringstream": "0.0.5", 1479 | "tough-cookie": "2.3.2", 1480 | "tunnel-agent": "0.4.3" 1481 | }, 1482 | "dependencies": { 1483 | "mime-db": { 1484 | "version": "1.24.0", 1485 | "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.24.0.tgz", 1486 | "integrity": "sha1-4tE/k58AFsbk6a0lqGUvEmxGfww=" 1487 | }, 1488 | "mime-types": { 1489 | "version": "2.1.12", 1490 | "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.12.tgz", 1491 | "integrity": "sha1-FSuiVndwIN1GY/VMLnvCY4HnFyk=", 1492 | "requires": { 1493 | "mime-db": "1.24.0" 1494 | } 1495 | }, 1496 | "qs": { 1497 | "version": "6.3.0", 1498 | "resolved": "https://registry.npmjs.org/qs/-/qs-6.3.0.tgz", 1499 | "integrity": "sha1-9AOyZPI7wBIox0ExtAfxjV6l1EI=" 1500 | } 1501 | } 1502 | }, 1503 | "request-promise": { 1504 | "version": "0.4.3", 1505 | "resolved": "https://registry.npmjs.org/request-promise/-/request-promise-0.4.3.tgz", 1506 | "integrity": "sha1-PI3cgvBviQjXIK7eHWeUJY4iEhw=", 1507 | "requires": { 1508 | "bluebird": "2.11.0", 1509 | "chalk": "1.1.3", 1510 | "lodash": "3.10.1", 1511 | "request": "2.76.0" 1512 | }, 1513 | "dependencies": { 1514 | "bluebird": { 1515 | "version": "2.11.0", 1516 | "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-2.11.0.tgz", 1517 | "integrity": "sha1-U0uQM8AiyVecVro7Plpcqvu2UOE=" 1518 | } 1519 | } 1520 | }, 1521 | "response-time": { 1522 | "version": "2.3.1", 1523 | "resolved": "https://registry.npmjs.org/response-time/-/response-time-2.3.1.tgz", 1524 | "integrity": "sha1-K94ZGB3myBq5XjIHoo1h2WWzF5c=", 1525 | "requires": { 1526 | "depd": "1.0.1", 1527 | "on-headers": "1.0.1" 1528 | } 1529 | }, 1530 | "retry": { 1531 | "version": "0.9.0", 1532 | "resolved": "https://registry.npmjs.org/retry/-/retry-0.9.0.tgz", 1533 | "integrity": "sha1-b2l+UKDk3cjI9/tUeptg3q1DZ40=" 1534 | }, 1535 | "rndm": { 1536 | "version": "1.2.0", 1537 | "resolved": "https://registry.npmjs.org/rndm/-/rndm-1.2.0.tgz", 1538 | "integrity": "sha1-8z/pz7Urv9UgqhgyO8ZdsRCht2w=" 1539 | }, 1540 | "scoped-http-client": { 1541 | "version": "0.11.0", 1542 | "resolved": "https://registry.npmjs.org/scoped-http-client/-/scoped-http-client-0.11.0.tgz", 1543 | "integrity": "sha1-iH+oKoNg8V1jmlLlBOVjwVfSbXQ=" 1544 | }, 1545 | "semver": { 1546 | "version": "5.0.3", 1547 | "resolved": "https://registry.npmjs.org/semver/-/semver-5.0.3.tgz", 1548 | "integrity": "sha1-d0Zt5YnNXTyV8TiqeLxWmjy10no=" 1549 | }, 1550 | "send": { 1551 | "version": "0.13.0", 1552 | "resolved": "https://registry.npmjs.org/send/-/send-0.13.0.tgz", 1553 | "integrity": "sha1-UY+SGusFYK7H3KspkLFM9vPM5d4=", 1554 | "requires": { 1555 | "debug": "2.2.0", 1556 | "depd": "1.0.1", 1557 | "destroy": "1.0.3", 1558 | "escape-html": "1.0.2", 1559 | "etag": "1.7.0", 1560 | "fresh": "0.3.0", 1561 | "http-errors": "1.3.1", 1562 | "mime": "1.3.4", 1563 | "ms": "0.7.1", 1564 | "on-finished": "2.3.0", 1565 | "range-parser": "1.0.3", 1566 | "statuses": "1.2.1" 1567 | }, 1568 | "dependencies": { 1569 | "destroy": { 1570 | "version": "1.0.3", 1571 | "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.3.tgz", 1572 | "integrity": "sha1-tDO0ck5x/YVR2YhRdIUcX8N34sk=" 1573 | }, 1574 | "ee-first": { 1575 | "version": "1.1.1", 1576 | "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", 1577 | "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=" 1578 | }, 1579 | "on-finished": { 1580 | "version": "2.3.0", 1581 | "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", 1582 | "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", 1583 | "requires": { 1584 | "ee-first": "1.1.1" 1585 | } 1586 | }, 1587 | "statuses": { 1588 | "version": "1.2.1", 1589 | "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.2.1.tgz", 1590 | "integrity": "sha1-3e1FzBglbVHtQK7BQkidXGECbSg=" 1591 | } 1592 | } 1593 | }, 1594 | "serve-favicon": { 1595 | "version": "2.3.0", 1596 | "resolved": "https://registry.npmjs.org/serve-favicon/-/serve-favicon-2.3.0.tgz", 1597 | "integrity": "sha1-rtNsxoNAaabxicxyIsahqBHcWzk=", 1598 | "requires": { 1599 | "etag": "1.7.0", 1600 | "fresh": "0.3.0", 1601 | "ms": "0.7.1", 1602 | "parseurl": "1.3.1" 1603 | } 1604 | }, 1605 | "serve-index": { 1606 | "version": "1.7.3", 1607 | "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.7.3.tgz", 1608 | "integrity": "sha1-egV/xu4o3GP2RWbl+lexEahq7NI=", 1609 | "requires": { 1610 | "accepts": "1.2.13", 1611 | "batch": "0.5.3", 1612 | "debug": "2.2.0", 1613 | "escape-html": "1.0.3", 1614 | "http-errors": "1.3.1", 1615 | "mime-types": "2.1.12", 1616 | "parseurl": "1.3.1" 1617 | }, 1618 | "dependencies": { 1619 | "escape-html": { 1620 | "version": "1.0.3", 1621 | "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", 1622 | "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=" 1623 | }, 1624 | "mime-db": { 1625 | "version": "1.24.0", 1626 | "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.24.0.tgz", 1627 | "integrity": "sha1-4tE/k58AFsbk6a0lqGUvEmxGfww=" 1628 | }, 1629 | "mime-types": { 1630 | "version": "2.1.12", 1631 | "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.12.tgz", 1632 | "integrity": "sha1-FSuiVndwIN1GY/VMLnvCY4HnFyk=", 1633 | "requires": { 1634 | "mime-db": "1.24.0" 1635 | } 1636 | } 1637 | } 1638 | }, 1639 | "serve-static": { 1640 | "version": "1.10.3", 1641 | "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.10.3.tgz", 1642 | "integrity": "sha1-zlpuzTEB/tXsCYJ9rCKpwpv7BTU=", 1643 | "requires": { 1644 | "escape-html": "1.0.3", 1645 | "parseurl": "1.3.1", 1646 | "send": "0.13.2" 1647 | }, 1648 | "dependencies": { 1649 | "depd": { 1650 | "version": "1.1.0", 1651 | "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.0.tgz", 1652 | "integrity": "sha1-4b2Cxqq2ztlluXuIsX7T5SjKGMM=" 1653 | }, 1654 | "ee-first": { 1655 | "version": "1.1.1", 1656 | "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", 1657 | "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=" 1658 | }, 1659 | "escape-html": { 1660 | "version": "1.0.3", 1661 | "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", 1662 | "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=" 1663 | }, 1664 | "on-finished": { 1665 | "version": "2.3.0", 1666 | "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", 1667 | "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", 1668 | "requires": { 1669 | "ee-first": "1.1.1" 1670 | } 1671 | }, 1672 | "send": { 1673 | "version": "0.13.2", 1674 | "resolved": "https://registry.npmjs.org/send/-/send-0.13.2.tgz", 1675 | "integrity": "sha1-dl52B8gFVFK7pvCwUllTUJhgNt4=", 1676 | "requires": { 1677 | "debug": "2.2.0", 1678 | "depd": "1.1.0", 1679 | "destroy": "1.0.4", 1680 | "escape-html": "1.0.3", 1681 | "etag": "1.7.0", 1682 | "fresh": "0.3.0", 1683 | "http-errors": "1.3.1", 1684 | "mime": "1.3.4", 1685 | "ms": "0.7.1", 1686 | "on-finished": "2.3.0", 1687 | "range-parser": "1.0.3", 1688 | "statuses": "1.2.1" 1689 | } 1690 | }, 1691 | "statuses": { 1692 | "version": "1.2.1", 1693 | "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.2.1.tgz", 1694 | "integrity": "sha1-3e1FzBglbVHtQK7BQkidXGECbSg=" 1695 | } 1696 | } 1697 | }, 1698 | "sntp": { 1699 | "version": "1.0.9", 1700 | "resolved": "http://registry.npmjs.org/sntp/-/sntp-1.0.9.tgz", 1701 | "integrity": "sha1-ZUEYTMkK7qbG57NeJlkIJEPGYZg=", 1702 | "requires": { 1703 | "hoek": "2.16.3" 1704 | } 1705 | }, 1706 | "sshpk": { 1707 | "version": "1.10.1", 1708 | "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.10.1.tgz", 1709 | "integrity": "sha1-MOGl0ykkSXShr2FREznVla9mOLA=", 1710 | "requires": { 1711 | "asn1": "0.2.3", 1712 | "assert-plus": "1.0.0", 1713 | "bcrypt-pbkdf": "1.0.0", 1714 | "dashdash": "1.14.0", 1715 | "ecc-jsbn": "0.1.1", 1716 | "getpass": "0.1.6", 1717 | "jodid25519": "1.0.2", 1718 | "jsbn": "0.1.0", 1719 | "tweetnacl": "0.14.3" 1720 | }, 1721 | "dependencies": { 1722 | "assert-plus": { 1723 | "version": "1.0.0", 1724 | "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", 1725 | "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=" 1726 | } 1727 | } 1728 | }, 1729 | "stack-trace": { 1730 | "version": "0.0.9", 1731 | "resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.9.tgz", 1732 | "integrity": "sha1-qPbq7KkGdMMz58Q5U/J1tFFRBpU=" 1733 | }, 1734 | "statuses": { 1735 | "version": "1.3.0", 1736 | "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.3.0.tgz", 1737 | "integrity": "sha1-jlV1jLIOdoLB9Pzo3KswvwHR4Ho=" 1738 | }, 1739 | "stream-counter": { 1740 | "version": "0.2.0", 1741 | "resolved": "https://registry.npmjs.org/stream-counter/-/stream-counter-0.2.0.tgz", 1742 | "integrity": "sha1-3tJmVWMZyLDiIoErnPOyb6fZR94=", 1743 | "requires": { 1744 | "readable-stream": "1.1.14" 1745 | } 1746 | }, 1747 | "string_decoder": { 1748 | "version": "0.10.31", 1749 | "resolved": "http://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", 1750 | "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=" 1751 | }, 1752 | "stringstream": { 1753 | "version": "0.0.5", 1754 | "resolved": "http://registry.npmjs.org/stringstream/-/stringstream-0.0.5.tgz", 1755 | "integrity": "sha1-TkhM1N5aC7vuGORjB3EKioFiGHg=" 1756 | }, 1757 | "strip-ansi": { 1758 | "version": "3.0.1", 1759 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", 1760 | "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", 1761 | "requires": { 1762 | "ansi-regex": "2.0.0" 1763 | } 1764 | }, 1765 | "supports-color": { 1766 | "version": "2.0.0", 1767 | "resolved": "http://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", 1768 | "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" 1769 | }, 1770 | "tough-cookie": { 1771 | "version": "2.3.2", 1772 | "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.2.tgz", 1773 | "integrity": "sha1-8IH3bkyFcg5sN6X6ztc3FQ2EByo=", 1774 | "requires": { 1775 | "punycode": "1.4.1" 1776 | } 1777 | }, 1778 | "tsscmp": { 1779 | "version": "1.0.5", 1780 | "resolved": "https://registry.npmjs.org/tsscmp/-/tsscmp-1.0.5.tgz", 1781 | "integrity": "sha1-fcSjOvcVgatDN9qR2FylQn69mpc=" 1782 | }, 1783 | "tunnel-agent": { 1784 | "version": "0.4.3", 1785 | "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.4.3.tgz", 1786 | "integrity": "sha1-Y3PbdpCf5XDgjXNYM2Xtgop07us=" 1787 | }, 1788 | "tweetnacl": { 1789 | "version": "0.14.3", 1790 | "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.3.tgz", 1791 | "integrity": "sha1-PaOC9nDyXe1417PReSEZvKC3Ey0=", 1792 | "optional": true 1793 | }, 1794 | "type-is": { 1795 | "version": "1.5.7", 1796 | "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.5.7.tgz", 1797 | "integrity": "sha1-uTaKWTzG730GReeLL0xky+zQXpA=", 1798 | "requires": { 1799 | "media-typer": "0.3.0", 1800 | "mime-types": "2.0.14" 1801 | } 1802 | }, 1803 | "uid-safe": { 1804 | "version": "2.1.1", 1805 | "resolved": "https://registry.npmjs.org/uid-safe/-/uid-safe-2.1.1.tgz", 1806 | "integrity": "sha1-Pb+UNrUovp9SiCwFpiFsN2PbNmY=", 1807 | "requires": { 1808 | "base64-url": "1.2.2", 1809 | "random-bytes": "1.0.0" 1810 | } 1811 | }, 1812 | "ultron": { 1813 | "version": "1.0.2", 1814 | "resolved": "https://registry.npmjs.org/ultron/-/ultron-1.0.2.tgz", 1815 | "integrity": "sha1-rOEWq1V80Zc4ak6I9GhTeMiy5Po=" 1816 | }, 1817 | "unpipe": { 1818 | "version": "1.0.0", 1819 | "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", 1820 | "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=" 1821 | }, 1822 | "url-join": { 1823 | "version": "0.0.1", 1824 | "resolved": "https://registry.npmjs.org/url-join/-/url-join-0.0.1.tgz", 1825 | "integrity": "sha1-HbSK1CLTQCRpqH99l73r/k+x48g=" 1826 | }, 1827 | "util-deprecate": { 1828 | "version": "1.0.2", 1829 | "resolved": "http://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", 1830 | "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" 1831 | }, 1832 | "utils-merge": { 1833 | "version": "1.0.0", 1834 | "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.0.tgz", 1835 | "integrity": "sha1-ApT7kiu5N1FTVBxPcJYjHyh8ivg=" 1836 | }, 1837 | "vary": { 1838 | "version": "1.0.1", 1839 | "resolved": "https://registry.npmjs.org/vary/-/vary-1.0.1.tgz", 1840 | "integrity": "sha1-meSYFWaihhGN+yuBc1ffeZM3bRA=" 1841 | }, 1842 | "verror": { 1843 | "version": "1.3.6", 1844 | "resolved": "http://registry.npmjs.org/verror/-/verror-1.3.6.tgz", 1845 | "integrity": "sha1-z/XfEpRtKX0rqu+qJoniW+AcAFw=", 1846 | "requires": { 1847 | "extsprintf": "1.0.2" 1848 | } 1849 | }, 1850 | "vhost": { 1851 | "version": "3.0.2", 1852 | "resolved": "https://registry.npmjs.org/vhost/-/vhost-3.0.2.tgz", 1853 | "integrity": "sha1-L7HezUxGaqiLD5NBrzPcGv8keNU=" 1854 | }, 1855 | "winston": { 1856 | "version": "2.3.0", 1857 | "resolved": "https://registry.npmjs.org/winston/-/winston-2.3.0.tgz", 1858 | "integrity": "sha1-IH+qq2/M8/5JN0PdKwPbr8fOt4w=", 1859 | "requires": { 1860 | "async": "1.0.0", 1861 | "colors": "1.0.3", 1862 | "cycle": "1.0.3", 1863 | "eyes": "0.1.8", 1864 | "isstream": "0.1.2", 1865 | "stack-trace": "0.0.9" 1866 | }, 1867 | "dependencies": { 1868 | "async": { 1869 | "version": "1.0.0", 1870 | "resolved": "https://registry.npmjs.org/async/-/async-1.0.0.tgz", 1871 | "integrity": "sha1-+PwEyjoTeErenhZBr5hXjPvWR6k=" 1872 | } 1873 | } 1874 | }, 1875 | "ws": { 1876 | "version": "1.1.1", 1877 | "resolved": "https://registry.npmjs.org/ws/-/ws-1.1.1.tgz", 1878 | "integrity": "sha1-CC3bbGQehdS7RR8D1S8G6r2x8Bg=", 1879 | "requires": { 1880 | "options": "0.0.6", 1881 | "ultron": "1.0.2" 1882 | } 1883 | }, 1884 | "xtend": { 1885 | "version": "4.0.1", 1886 | "resolved": "http://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz", 1887 | "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=" 1888 | } 1889 | } 1890 | } 1891 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "matthias", 3 | "version": "0.0.0", 4 | "private": true, 5 | "author": "Kilian Koeltzsch ", 6 | "description": "Matthias Stuhlbein", 7 | "dependencies": { 8 | "cheerio": "^0.22.0", 9 | "cron": "^1.1.1", 10 | "git-rev": "^0.2.1", 11 | "hubot": "^2.19.0", 12 | "hubot-diagnostics": "0.0.1", 13 | "hubot-dvb": "^1.0.0", 14 | "hubot-flip": "^2.17.1", 15 | "hubot-google-images": "^0.2.6", 16 | "hubot-help": "^0.2.0", 17 | "hubot-maps": "0.0.2", 18 | "hubot-scripts": "^2.17.2", 19 | "hubot-slack": "^4.2.1", 20 | "hubot-urban": "^1.0.1", 21 | "moment": "^2.15.2" 22 | }, 23 | "engines": { 24 | "node": "0.10.x" 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /run.sh: -------------------------------------------------------------------------------- 1 | docker run -d --name matthias \ 2 | -e FSRUSERNAME='' \ 3 | -e FSRPASSWORD='' \ 4 | -e HUBOT_ALIAS='!' \ 5 | -e HUBOT_FORECAST_API_KEY='' \ 6 | -e HUBOT_WEATHER_CELSIUS='1' \ 7 | -e HUBOT_GOOGLE_CSE_ID='' \ 8 | -e HUBOT_GOOGLE_CSE_KEY='' \ 9 | -e HUBOT_SLACK_TOKEN='' \ 10 | -e HUBOT_MAINTAINERS='shell,kilian' \ 11 | ifsr/matthias -a slack 12 | -------------------------------------------------------------------------------- /scripts/apbdoor.coffee: -------------------------------------------------------------------------------- 1 | # Description: 2 | # Der Techniker ist informiert. 3 | # 4 | # Commands: 5 | # hubot türstatus - Wie steht's aktuell um den Eingang vom APB? 6 | # hubot tür ist ganz - APB Eingang ist seltenerweise mal ok. 7 | # hubot tür ist kaputt - APB Eingang ist im Eimer. Normalzustand halt. 8 | # 9 | # Author: 10 | # kiliankoe 11 | 12 | 13 | module.exports = (robot) -> 14 | robot.respond /t(?:ü|ue)rstatus/i, (msg) -> 15 | checkDoor(robot, msg) 16 | 17 | robot.respond /t(?:ü|ue)r (?:ist )?(.*)/i, (msg) -> 18 | state = msg.match[1].toLowerCase() 19 | switch state 20 | when "kaputt", "broken", "im eimer" 21 | setDoor(robot, "yes") 22 | msg.send "Orr ne, schon wieder?!" 23 | when "ganz", "wieder ganz", "funktional" 24 | setDoor(robot, "no") 25 | msg.send msg.random partyGifs 26 | when "weg", "unbekannt" 27 | setDoor(robot, "maybe") 28 | msg.send "Ähm... Ahja?" 29 | else 30 | msg.send "Keine Ahnung, was du damit meinst. Ist die Tür kaputt, ganz oder weg?" 31 | 32 | checkDoor = (robot, msg) -> 33 | robot.http('http://tuer.fsrleaks.de') 34 | .get() (err, res, body) -> 35 | if body.indexOf("Ja") > -1 36 | msg.send msg.random yesMsgs 37 | else if body.indexOf("Nein") > -1 38 | msg.send msg.random noMsgs 39 | else 40 | msg.send msg.random maybeMsgs 41 | 42 | 43 | setDoor = (robot, state) -> 44 | robot.http("http://door.fsrleaks.de/set.php?#{state}").get() (err, res, body) -> 45 | return 46 | 47 | yesMsgs = [ 48 | "Jop, Tür ist im Eimer.", 49 | "Tür ist 'putt.", 50 | "Rate mal...", 51 | "Alles im Arsch, Normalzustand halt.", 52 | "Computer sagt: Tür ist hin.", 53 | "Tür pass auf!! Du hast ne Scheibe verloren!", 54 | "Techniker ist selbstverständlich bereits informiert." 55 | ] 56 | 57 | noMsgs = [ 58 | "Die Tür ist... ganz?!", 59 | "Alles im grünen Bereich.", 60 | "Sie ist ganz! Also... Zumindest gerade eben. Vermutlich schon nicht mehr.", 61 | "Rufe Fr. Kapplusch an... Nope, scheint alles gut zu sein. Beeindruckend.", 62 | "Hab' eben nachgesehen und... Ausnahmezustand!" 63 | ] 64 | 65 | maybeMsgs = [ 66 | "Ich hab keine Ahnung ¯\\_(ツ)_/¯", 67 | "Sorry, musst du dieses Mal selber nachschauen.", 68 | "Quizás, señor/a.", 69 | "Sorry, no clue.", 70 | "Schrödingers Tür?", 71 | "Lässt sich aus diesem Blickwinkel schlecht beurteilen." 72 | ] 73 | 74 | partyGifs = [ 75 | "http://i.giphy.com/6nuiJjOOQBBn2.gif", 76 | "http://i.giphy.com/EktbegF3J8QIo.gif", 77 | "http://i.giphy.com/YTbZzCkRQCEJa.gif", 78 | "http://i.giphy.com/3rgXBQIDHkFNniTNRu.gif", 79 | "http://i.giphy.com/s2qXK8wAvkHTO.gif" 80 | ] 81 | -------------------------------------------------------------------------------- /scripts/btc.coffee: -------------------------------------------------------------------------------- 1 | # Description: 2 | # BTC Krams 3 | # 4 | # Commands: 5 | # hubot btc - Aktueller Bitcoin Kurs in USD und EUR 6 | # 7 | # Author: 8 | # kiliankoe 9 | 10 | module.exports = (robot) -> 11 | robot.respond /btc/i, (msg) -> 12 | robot.http('https://api.coinbase.com/v2/exchange-rates?currency=BTC') 13 | .get() (err, res, body) -> 14 | data = JSON.parse body 15 | USD = data["data"]["rates"]["USD"] 16 | EUR = data["data"]["rates"]["EUR"] 17 | msg.send("Aktueller BTC Kurs: " + USD + "$ oder " + EUR + "€") 18 | msg.send("http://bitcoincharts.com/charts/chart.png?width=940&m=bitstampUSD&SubmitButton=Draw&r=10&i=&c=0&s=&e=&Prev=&Next=&t=M&b=&a1=SMA&m1=10&a2=&m2=25&x=0&i1=&i2=&i3=&i4=&v=0&cv=0&ps=0&l=0&p=0&") 19 | -------------------------------------------------------------------------------- /scripts/drsommer.coffee: -------------------------------------------------------------------------------- 1 | # Description: 2 | # Dr. Sommer 3 | # 4 | # Configuration: 5 | # HUBOT_DRSOMMER_ROOM, defaults to "dr_sommer" 6 | # 7 | # Commands: 8 | # Dr. Sommer, ich hab da mal ne Frage - Stelle eine anonyme Frage in #dr_sommer 9 | # 10 | # Author: 11 | # kiliankoe 12 | 13 | drsommer_room = process.env.HUBOT_DRSOMMER_ROOM or "dr_sommer" 14 | 15 | module.exports = (robot) -> 16 | robot.hear /^(hey |hallo |lieber )?dr\.? sommer,?/i, (msg) -> 17 | robot.messageRoom drsommer_room, "\"#{msg.message.text}\" - #{msg.random names} (#{randomInt(10,15)})" 18 | 19 | # help matthias respond to priv messages as well 20 | robot.respond /(hey |hallo |lieber )?dr\.? sommer,?/i, (msg) -> 21 | question = msg.message.text.replace("matthias ", "") 22 | robot.messageRoom drsommer_room, "\"#{question}\" - #{msg.random names} (#{randomInt(10,15)})" 23 | 24 | names = [ 25 | "Shantalle", 26 | "Schackeline", 27 | "Tamara", 28 | "Cindy", 29 | "Jenny", 30 | "Clair-Gina", 31 | "Justin", 32 | "Jerome", 33 | "Chantal", 34 | "Jacqueline", 35 | "Yves", 36 | "Sylvia", 37 | "Claudia", 38 | "Dörte" 39 | ] 40 | 41 | randomInt = (max, min) -> 42 | return Math.floor(Math.random() * (max - min + 1)) + min 43 | -------------------------------------------------------------------------------- /scripts/elbe.coffee: -------------------------------------------------------------------------------- 1 | # Description: 2 | # Aktueller Elbpegel der Station Dresden 3 | # 4 | # Commands: 5 | # hubot elbe - Aktueller Elbpegel der Station Dresden 6 | # 7 | # Author: 8 | # dirkonet 9 | 10 | 11 | module.exports = (robot) -> 12 | robot.respond /elbe/i, (msg) -> 13 | checkPegel(robot, msg) 14 | 15 | checkPegel = (robot, msg) -> 16 | robot.http('http://www.pegelonline.wsv.de/webservices/rest-api/v2/stations/DRESDEN/W/measurements.json?start=P0DT0H15M') 17 | .header('Accept', 'application/json') 18 | .get() (err, res, body) -> 19 | data = JSON.parse body 20 | ts = new Date(data[0].timestamp) 21 | date = "#{fuckinjsdatetime(ts.getDate())}.#{fuckinjsdatetime(ts.getMonth())}.#{ts.getFullYear()} #{fuckinjsdatetime(ts.getHours())}:#{fuckinjsdatetime(ts.getMinutes())} Uhr" 22 | msg.send "Aktueller Elbpegel, Stand #{date}: #{data[0].value}cm\nhttp://www.pegelonline.wsv.de/webservices/rest-api/v2/stations/DRESDEN/W/measurements.png?start=P7D&width=900&height=400" 23 | 24 | fuckinjsdatetime = (fuckinvalue) -> 25 | fuckinvalue = "#{fuckinvalue}" 26 | if fuckinvalue.length < 2 27 | return "0" + fuckinvalue 28 | return fuckinvalue 29 | -------------------------------------------------------------------------------- /scripts/example.coffee: -------------------------------------------------------------------------------- 1 | # Description: 2 | # Example scripts for you to examine and try out. 3 | # 4 | # Notes: 5 | # They are commented out by default, because most of them are pretty silly and 6 | # wouldn't be useful and amusing enough for day to day huboting. 7 | # Uncomment the ones you want to try and experiment with. 8 | # 9 | # These are from the scripting documentation: https://github.com/github/hubot/blob/master/docs/scripting.md 10 | 11 | module.exports = (robot) -> 12 | 13 | # robot.hear /badger/i, (res) -> 14 | # res.send "Badgers? BADGERS? WE DON'T NEED NO STINKIN BADGERS" 15 | # 16 | # robot.respond /open the (.*) doors/i, (res) -> 17 | # doorType = res.match[1] 18 | # if doorType is "pod bay" 19 | # res.reply "I'm afraid I can't let you do that." 20 | # else 21 | # res.reply "Opening #{doorType} doors" 22 | # 23 | # robot.hear /I like pie/i, (res) -> 24 | # res.emote "makes a freshly baked pie" 25 | # 26 | # lulz = ['lol', 'rofl', 'lmao'] 27 | # 28 | # robot.respond /lulz/i, (res) -> 29 | # res.send res.random lulz 30 | # 31 | # robot.topic (res) -> 32 | # res.send "#{res.message.text}? That's a Paddlin'" 33 | # 34 | # 35 | # enterReplies = ['Hi', 'Target Acquired', 'Firing', 'Hello friend.', 'Gotcha', 'I see you'] 36 | # leaveReplies = ['Are you still there?', 'Target lost', 'Searching'] 37 | # 38 | # robot.enter (res) -> 39 | # res.send res.random enterReplies 40 | # robot.leave (res) -> 41 | # res.send res.random leaveReplies 42 | # 43 | # answer = process.env.HUBOT_ANSWER_TO_THE_ULTIMATE_QUESTION_OF_LIFE_THE_UNIVERSE_AND_EVERYTHING 44 | # 45 | # robot.respond /what is the answer to the ultimate question of life/, (res) -> 46 | # unless answer? 47 | # res.send "Missing HUBOT_ANSWER_TO_THE_ULTIMATE_QUESTION_OF_LIFE_THE_UNIVERSE_AND_EVERYTHING in environment: please set and try again" 48 | # return 49 | # res.send "#{answer}, but what is the question?" 50 | # 51 | # robot.respond /you are a little slow/, (res) -> 52 | # setTimeout () -> 53 | # res.send "Who you calling 'slow'?" 54 | # , 60 * 1000 55 | # 56 | # annoyIntervalId = null 57 | # 58 | # robot.respond /annoy me/, (res) -> 59 | # if annoyIntervalId 60 | # res.send "AAAAAAAAAAAEEEEEEEEEEEEEEEEEEEEEEEEIIIIIIIIHHHHHHHHHH" 61 | # return 62 | # 63 | # res.send "Hey, want to hear the most annoying sound in the world?" 64 | # annoyIntervalId = setInterval () -> 65 | # res.send "AAAAAAAAAAAEEEEEEEEEEEEEEEEEEEEEEEEIIIIIIIIHHHHHHHHHH" 66 | # , 1000 67 | # 68 | # robot.respond /unannoy me/, (res) -> 69 | # if annoyIntervalId 70 | # res.send "GUYS, GUYS, GUYS!" 71 | # clearInterval(annoyIntervalId) 72 | # annoyIntervalId = null 73 | # else 74 | # res.send "Not annoying you right now, am I?" 75 | # 76 | # 77 | # robot.router.post '/hubot/chatsecrets/:room', (req, res) -> 78 | # room = req.params.room 79 | # data = JSON.parse req.body.payload 80 | # secret = data.secret 81 | # 82 | # robot.messageRoom room, "I have a secret: #{secret}" 83 | # 84 | # res.send 'OK' 85 | # 86 | # robot.error (err, res) -> 87 | # robot.logger.error "DOES NOT COMPUTE" 88 | # 89 | # if res? 90 | # res.reply "DOES NOT COMPUTE" 91 | # 92 | # robot.respond /have a soda/i, (res) -> 93 | # # Get number of sodas had (coerced to a number). 94 | # sodasHad = robot.brain.get('totalSodas') * 1 or 0 95 | # 96 | # if sodasHad > 4 97 | # res.reply "I'm too fizzy.." 98 | # 99 | # else 100 | # res.reply 'Sure!' 101 | # 102 | # robot.brain.set 'totalSodas', sodasHad+1 103 | # 104 | # robot.respond /sleep it off/i, (res) -> 105 | # robot.brain.set 'totalSodas', 0 106 | # res.reply 'zzzzz' 107 | -------------------------------------------------------------------------------- /scripts/firat.coffee: -------------------------------------------------------------------------------- 1 | # Description: 2 | # Mensa Firat 3 | # 4 | # Commands: 5 | # hubot firat - Menü unseres Lieblingsdönerrestaurants 6 | # 7 | # Author: 8 | # philipp 9 | 10 | module.exports = (robot) -> 11 | robot.respond /firat/i, (msg) -> 12 | msg.send("*Döner Gerichte*\n 13 | 1. *Döner* normal - 4,00€\n 14 | 2. *Döner* mit Käse - 4,70€\n 15 | 3. *Döner* mit Halloumi - 5,00€\n 16 | 4. *Döner Hawaii* mit Ananas - 4,50€\n 17 | 5. *Super Döner* mit mehr Fleisch - 5,00€\n 18 | 6. *Mix Döner* mit gemischtem Fleisch - 4,00€\n 19 | 7. *Dönerbox* mit Pommes, Fleisch und Soße - 3,50€\n 20 | 8. *Mais Döner* - 4,50€\n 21 | \n 22 | *Dönerteller*\n 23 | 9. *Dönerteller* normal - 5,50€ 6,50€\n 24 | 10. *Dönerteller* mit Käse - 6,00€ 7,00€\n 25 | 11. *Dönerteller* mit Pommes - 5,50€ 6,50€\n 26 | 12. *Dönerteller* mit Halloumi - 6,50€ 7,50€\n 27 | 13. *Dönerteller* mit Reis - 5,50€ 6,50€\n 28 | 14. *Iskender* mit Joghurt, Tomatensoße und Knoblauch - 7,00€\n 29 | 15. *Döner-Auflauf* mit Tomatensoße und Käse überbacken - 7,00€\n 30 | 16. *Nudel-Döner-Auflauf* mit Tomatensoße und Käse überbacken - 6,50€\n 31 | \n 32 | *Dürüm*\n 33 | 17. *Dürüm* normal - 4,50€\n 34 | 18. *Dürüm* mit Käse - 5,20€\n 35 | 19. *Dürüm* mit Halloumi - 5,50€\n 36 | 20. *Dürüm* mit Mais - 5,00€\n 37 | 21. *Dürüm Hawaii* mit Ananas - 5,00€\n 38 | 22. *Mix Dürüm* mit gemischtem Fleisch - 4,50€\n 39 | 23. *Schnitzel Dürüm* - Schnitzel im Dürüm - 4,50€\n 40 | 24. *Super Dürüm* - mit mehr Fleisch - 5,50€\n 41 | 25. *Firat Dürüm* mit gebratenem Gemüse und Halloumi - 5,50€\n 42 | 26. *Spinat Dürüm* - 5,00€\n 43 | \n 44 | *Salate*\n 45 | 27. *Bauernsalat* - 4,00€\n 46 | 28. *Bauernsalat* mit Käse - 4,50€\n 47 | 29. *Bauernsalat* mit Käse und Oliven - 5,00€\n 48 | 30. *Dönersalat* mit Kalb- und Geflügelfleisch - 5,00€\n 49 | 31. *Italienischer Salat* mit Schinken, Ei, Käse und Thunfisch - 5,00€\n 50 | 32. *Thunfischsalat* - 5,00€\n 51 | 33. *Mazzarellasalat* mit Tomaten und Zwiebeln - 5,00€\n 52 | 34. *Hawaii Salat* mit Schinken, Ananas u. Käse - 5,00€\n 53 | \n 54 | *Vegetarisches*\n 55 | 35. *Vegetarischer Döner* mit Salat und Soße - 3,20€\n 56 | 36. *Vegetarischer Döner* mit Salat, Soße u. Käse - 3,80€\n 57 | 37. *Vegetarischer Dürüm* mit Salat und Soße - 3,50€\n 58 | 38. *Vegetarischer Dürüm* mit Salat, Soße u. Käse - 4,00€\n 59 | 39. *Vegetarischer Dürüm* mit Salat, Soße u. Halloumi - 4,20€\n 60 | 40. *Falafel im Brot* mit Salat, Soße und Falafel (Kichererbsen) - 4,00€\n 61 | 41. *Falafel in Teigrolle* mit Salat, Soße und Falafel (Kichererbsen) - 4,20€\n 62 | 42. *Falafel Teller* mit Salat, Soße, Käse und Falafel (Kichererbsen) - 5,00€\n 63 | 43. *Vegetarischer Teller* mit Salat, Soße, Halloumi und Falafel (Kichererbsen) - 5,50€\n 64 | 44. *Vegetarischer Dürüm nach Art des Hauses* mit Salat, Halloumi und gebratenem Gemüse - 5,00€\n 65 | \n\n 66 | *Hähnchen*\n 67 | 45. *1/2 Hähnchen* - 3,50€\n 68 | 46. *1/2 Hähnchen* mit Salat und Soße - 4,50€\n 69 | 47. *1/2 Hähnchen* mit Pommes - 4,50€\n 70 | 48. *1/2 Hähnchen* mit Pommes und Salat - 5,00€\n 71 | 49. *1/2 Hähnchen* mit Reis - 4,50€\n 72 | 50. *Chicken Chips Teller* 9 Nuggets, Pommes, Salat und Soße - 6,50€\n 73 | 51. *Chicken Wings Teller* 9 Hähnchenflügel gegrillt, Pommes und Soße - 6,50€\n 74 | 52. *Chicken Chips Tüte* 8 Nuggets - 4,00€\n 75 | 53. *Pommes* - 2,50€\n 76 | \n 77 | *Schnitzel Gerichte*\n 78 | 54. *Schnitzel Wiener Art* - 6,00€\n 79 | 55. *Sahneschnitzel* mit Sahnesoße und Pilzen - 7,00€\n 80 | 56. *Rahmschnitzel* mit Rahmsahnesoße - 7,00€\n 81 | 57. *Jägerschnitzel* mit Jägersahnesoße und Pilzen - 7,00€\n 82 | 58. *Zigeunerschnitzel* mit Zigeunersahnesoße - 7,50€\n 83 | 59. *Putenschnitzel* mit Sahnesoße - 7,50€\n") 84 | 85 | setTimeout () -> 86 | msg.send("*Nudelgerichte* (nach Wahl Spaghetti, Rigatoni oder Tortellini)\n 87 | 60. *Napoli* mit Tomatensoße - 4,50€\n 88 | 61. *Bolognese* mit Fleischsoße - 5,00€\n 89 | 62. *Carbonara* mit Sahnesoße, Schinken und Ei - 5,50€\n 90 | 63. *Brokkoli* mit Sahnesoße und Brokkoli - 5,50€\n 91 | 64. *Alla Chef* mit Sahnesoße, Pilzen u. Schinken - 5,50€\n 92 | 65. *Marinara* mit Tomatensoße, Meeresfrüchten und Knoblauch - 5,50€\n 93 | 66. *Gemüse* mit Sahnesoße, Pilzen, Zwiebeln und Paprika - 5,50€\n 94 | \n 95 | *Überbackene Nudelgerichte*\n 96 | 67. *Spaghetti* - 6,00€\n 97 | 68. *Rigatoni* - 6,00€\n 98 | 69. *Tortellini* - 6,00€\n 99 | 70. *Spezial überbacken* mit Dönerfleisch, Champignons und Sahnesoße - 7,00€\n 100 | \n 101 | *Teiggerichte* (alle mit Salat und Soße)\n 102 | 71. *Lahmacun* - 3,50€\n 103 | 72. *Lahmacun* mit Käse - 4,00€\n 104 | 73. *Lahmacun* mit Dönerfleisch - 4,50€\n 105 | 74. *Lahmacun* mit Halloumi - 4,50€\n 106 | 75. *Lahmacun* mit Dönerfleisch und Käse - 5,00€\n 107 | 76. *Pide* mit Spinat und Käse - 5,00€\n 108 | 77. *Pide* mit Spinat und Ei - 5,00€\n 109 | 78. *Pide* mit gewürztem Hackfleisch - 5,00€\n 110 | 79. *Pide* mit gewürztem Hackfleisch und Ei - 5,50€\n 111 | 80. *Pide* mit Dönerfleisch - 5,50€\n 112 | 81. *Pide* mit Dönerfleisch, Spinat und Halloumi - 6,00€\n 113 | 82. *Pide* mit Knoblauchwurst und Ei - 5,50€\n 114 | 83. *Börek* mit Spinat und Käse - 5,00€\n 115 | 84. *Börek* mit gewürztem Hackfleisch - 5,00€\n 116 | 85. *Börek* mit Dönerfleisch und Zwiebeln - 5,00€\n 117 | 86. *Sigara Börek* mit Käse und Petersilie - 4,00€\n 118 | \n 119 | *Pizza* (alle mit Tomatensoße und Käse, ⌀ klein 24cm, ⌀ groß 29cm)\n 120 | 87. *Margherita* - 4,00€ 5,00€\n 121 | 88. *Funghi* mit Champignons - 4,50€ 5,50€\n 122 | 89. *Salami* - 4,50€ 5,50€\n 123 | 90. *Schinken* - 4,50€ 5,50€\n 124 | 91. *Enzo* mit Salami und Champignons - 5,00€ 6,00€\n 125 | 92. *Prosciutto Funghi* mit Schinken und Champignons - 5,00€ 6,00€\n 126 | 93. *Roma* mit Salami, Schinken und Champignons - 5,00€ 6,00€\n 127 | 94. *Pizza Scharf* mit Peperoniwurst, Peperoni und Zwiebeln - 5,00€ 6,00€\n 128 | 95. *Hawaii* mit Schinken u. Ananas - 5,00€ 6,00€\n 129 | 96. *Toskana* mit Salami, Schinken, Champignons, Peperoni u. Zwiebeln - 5,00€ 6,00€\n 130 | 97. *Bolognese* mit Fleischsoße - 5,00€ 5,50€\n 131 | 98. *Tonno* mit Thunfisch und Zwiebeln - 5,00€ 6,00€\n 132 | 99. *Calzone* (gefüllte Pizza) mit Schinken, Salami, Paprika und Champignons - 6,00€\n 133 | 100. *Mozzarella* mit Mozzarella, Tomaten und Zwiebeln - 5,00€ 6,00€\n 134 | 101. *Diavala* mit Spinat, Peperoni und Zwiebeln - 5,00€ 5,50€\n 135 | 102. *Halloumi* mit Halloumi, Mais und Zwiebeln - 5,00€ 6,00€\n 136 | 103. *Boss* mit Salami, Schinken, Champignons und Ei - 5,50€ 6,50€\n 137 | 104. *Vegetarisch* mit Brokkoli, Champignons, Paprika und Zwiebeln - 5,00€ 6,00€\n 138 | 105. *Firat* mit Knoblauchwurst, Tomaten, Champignons und Zwiebeln - 5,50€ 6,50€\n 139 | 106. *Döner* mit Dönerfleisch, Peperoni und Zwiebeln - 5,50€ 6,50€\n 140 | 107. *Spezial* mit Thunfisch, Shrimps und Knoblauch - 5,50€ 6,50€\n 141 | 108. *Mafia* mit Schinken, Zwiebeln, Chili und Knoblauch - 5,50€ 6,50€\n 142 | 109. *Vier Sorten Käse* mit 4 verschiedenen Sorten Käse - 5,50€ 6,50€\n 143 | 110. *Vier Jahreszeiten* mit Salami, Schinken, Peperoni und Thunfisch - 5,50€ 7,00€\n 144 | 111. *Turbo* mit Salami, Schinken, Champignons u. Peperoni - 5,00€ 6,00€\n 145 | \n 146 | *Suppen*\n 147 | 112. *Tomatensuppe* - 3,00€\n 148 | \n 149 | Getränke und Extras auf firat-dresden.com") 150 | , 500 151 | -------------------------------------------------------------------------------- /scripts/fsr.coffee: -------------------------------------------------------------------------------- 1 | # Description: 2 | # FSR Krams 3 | # 4 | # Dependencies: 5 | # ../util 6 | # 7 | # Commands: 8 | # hubot ese - Datum der nächsten ESE 9 | # hubot jemand da? - Ist aktuell jemand im Büro? 10 | # hubot buerostatus - Bürostatusgraph der letzten 6 Stunden 11 | # 12 | # Author: 13 | # kiliankoe 14 | 15 | util = require "../util" 16 | 17 | module.exports = (robot) -> 18 | robot.respond /ese/i, (res) -> 19 | currentdate = new Date() 20 | eseyear = currentdate.getFullYear() 21 | 22 | newyears = new Date("#{eseyear + 1}-01-01 00:00:00") 23 | difftony = Math.floor((newyears - currentdate)/1000/3600/24) 24 | if difftony <= 91 25 | eseyear += 1 26 | 27 | esedate = new Date("#{eseyear}-10-01 9:00:00") 28 | datediff = esedate - currentdate 29 | 30 | days = Math.floor(datediff/1000/60/60/24) 31 | datediff -= days*24*3600*1000 32 | hours = Math.floor(datediff/1000/60/60) 33 | datediff -= hours*3600*1000 34 | minutes = Math.floor(datediff/1000/60) 35 | res.send "Nur noch #{days} Tage, #{hours} Stunden und #{minutes} Minuten bis zur ESE #{eseyear}. Vermutlich :stuck_out_tongue_winking_eye:" 36 | 37 | robot.respond /(?:jemand|wer) da(?:\\?)/i, (res) -> 38 | robot.http('https://www.ifsr.de/buerostatus/output.php') 39 | .get() (err, response, body) -> 40 | if body.trim() == "1" 41 | util.react res, "thumbsup" 42 | else if body.trim() == "0" 43 | util.react res, "thumbsdown" 44 | else 45 | res.send "Keine Ahnung, @sebastian hat schon wieder unerwartet was geändert!" 46 | 47 | robot.respond /b(?:ü|ue)ro(?:status)?/i, (res) -> 48 | res.send('https://www.ifsr.de/buerostatus/image.php?h=6') 49 | 50 | robot.hear /sind wir beschlussf(?:ä|ae)hig/i, (res) -> 51 | res.send("Einmal durchzählen, bitte! Ich fang' an, 0!") 52 | -------------------------------------------------------------------------------- /scripts/geruecht.coffee: -------------------------------------------------------------------------------- 1 | # Description: 2 | # geruecht 3 | # 4 | # Dependencies: 5 | # None 6 | # 7 | # Configuration: 8 | # None 9 | # 10 | # Commands: 11 | # hubot gerücht - Lass' hubot aus dem Nähkästchen plaudern 12 | # 13 | # Author: 14 | # kiliankoe 15 | 16 | cheerio = require 'cheerio' 17 | 18 | module.exports = (robot) -> 19 | robot.respond /ger(?:ü|ue)cht/i, (res) -> 20 | user = process.env.FSRUSERNAME 21 | pw = process.env.FSRPASSWORD 22 | robot.http("http://#{user}:#{pw}@leaks.fsrleaks.de/index.php") 23 | .get() (err, resp, body) -> 24 | $ = cheerio.load body 25 | geruecht = $('div').text().replace /Psst\.\.\./, "" 26 | if geruecht == "" 27 | res.send "leaks.fsrleaks.de scheint down zu sein, @sebastian?" 28 | else 29 | geruecht = geruecht.trim() 30 | geruecht = res.random(prefixes) + geruecht 31 | res.send geruecht 32 | 33 | prefixes = [ 34 | "Also... Ich hab ja Folgendes gehört: ", 35 | "Pssht... ", 36 | "Ein kleines Vögelchen hat mir das hier verraten: ", 37 | "Die BILD Zeitung soll ja das hier morgen als Titelstory haben: ", 38 | "Böse Zungen behaupten ja: ", 39 | "Bei Fefe stand letzte Woche: ", 40 | "Also bei Sebi in der BRAVO Girl stand ja letztens: " 41 | ] 42 | -------------------------------------------------------------------------------- /scripts/maintain.coffee: -------------------------------------------------------------------------------- 1 | # Description: 2 | # Maintaining hubot 3 | # 4 | # Dependencies: 5 | # moment 6 | # 7 | # Configuration: 8 | # HUBOT_MAINTAINERS = comma-separated list of usernames currently maintaining this hubot 9 | # 10 | # Commands: 11 | # hubot uptime - Wie lange läuft hubot aktuell schon? 12 | # 13 | # Author: 14 | # kiliankoe 15 | 16 | moment = require 'moment' 17 | moment.locale 'de' 18 | 19 | module.exports = (robot) -> 20 | robot.respond /uptime/i, (res) -> 21 | duration = moment.duration uptime() 22 | res.send "Laufe aktuell seit dem #{start_time.format("Do MMM HH:mm")} Uhr, also schon #{duration.humanize()}." 23 | 24 | robot.respond /exit|quit/i, (res) -> 25 | if is_maintainer res.message.user.name 26 | res.send "Cya :wave:" 27 | setTimeout () -> 28 | process.exit() 29 | , 500 30 | else 31 | res.send "Ich will aber nicht!" 32 | 33 | start_time = moment() 34 | uptime = () -> 35 | now = moment() 36 | now.diff start_time 37 | 38 | is_maintainer = (name) -> 39 | maintainers = process.env.HUBOT_MAINTAINERS or "" 40 | maintainers = maintainers.split "," 41 | maintainers.includes name.toLowerCase() 42 | -------------------------------------------------------------------------------- /scripts/mensa.coffee: -------------------------------------------------------------------------------- 1 | # Description: 2 | # Was gibt's heute zu essen? 3 | # 4 | # Dependencies: 5 | # cron 6 | # 7 | # Configuration: 8 | # HUBOT_DEFAULT_MENSA, defaults to "Alte Mensa" 9 | # 10 | # Commands: 11 | # hubot mensa - Was gibt's heute in der Alten Mensa? 12 | # hubot mensa - Was gibt's heute in ? 13 | # hubot mensen - Welche Mensen hubot kennt 14 | # hubot mensa bild - Bild zu bestimmter Mahlzeit finden 15 | # 16 | # Author: 17 | # kiliankoe - me@kilian.io 18 | # Justus Adam - me@justus.science 19 | # Philipp Heisig - matthias@pheisig.de 20 | # Lucas Woltmann - mail@lucaswoltmann.de 21 | 22 | cronjob = require("cron").CronJob 23 | 24 | default_mensa = process.env.HUBOT_DEFAULT_MENSA or "Alte Mensa" 25 | 26 | mensen = [ 27 | names: ["zelt", "zeltmensa", "neue", "neue mensa"] 28 | id: 78 29 | , 30 | names: ["alte", "alte mensa"] 31 | id: 79 32 | , 33 | names: ["reichenbachstraße"] 34 | id: 80 35 | , 36 | names: ["mensologie"] 37 | id: 81 38 | , 39 | names: ["siedepunkt", "siede", "drehpunct", "drehpunkt"] 40 | id: 82 41 | , 42 | names: ["tharandt"] 43 | id: 83 44 | , 45 | names: ["palucca"] 46 | id: 84 47 | , 48 | names: ["wu", "wundtstraße"] 49 | id: 85 50 | , 51 | names: ["stimm-gabel", "stimmgabel", "hfbk"] 52 | id: 86 53 | , 54 | names: ["johannstadt"] 55 | id: 87 56 | , 57 | names: ["u-boot", "uboot"] 58 | id: 88 59 | , 60 | names: ["zittau"] 61 | id: 89 62 | , # currently out of order 63 | names: ["zittau 2", "zittau zwei", "zittau II"] 64 | id: 90 65 | , 66 | names: ["sport"] 67 | id: 91 68 | , 69 | names: ["kreuzgymnasium", "kreuz"] 70 | id: 92 71 | ] 72 | 73 | mappedMensa = mensen.reduce((map, mensa) -> 74 | mensa.names.forEach (name) -> 75 | map.set(name, mensa.id) 76 | map 77 | , new Map()) 78 | 79 | module.exports = (robot) -> 80 | 81 | new cronjob('00 30 10 * * 1-5', -> 82 | dailyMensa() 83 | , null, true, "Europe/Berlin") 84 | 85 | dailyMensa = -> 86 | getMealData(mappedMensa.get(default_mensa.toLowerCase()), (data) -> 87 | if data != null and not (Array.isArray(data) and data.length == 0) 88 | robot.messageRoom "#mensa", formatMenuMessage(default_mensa, data) 89 | ) 90 | 91 | generic_resp_func = (mensa, callback) -> 92 | mensaKey = mensa.toLowerCase() 93 | if mappedMensa.has mensaKey 94 | getMeals(mensa, mappedMensa.get(mensaKey), callback) 95 | else 96 | callback "Kenne leider keine solche Mensa..." 97 | 98 | getImage = (msg, imgid) -> 99 | tzoffset = (new Date()).getTimezoneOffset() * 60000 100 | now = (new Date(Date.now() - tzoffset)).toISOString().slice(0,10) 101 | robot.http("http://openmensa.org/api/v2/canteens/79/days/#{now}/meals") 102 | .get() (err, res, body) -> 103 | if body.trim() == "" 104 | msg.send "This mensa is currently out of order, sorry." 105 | else 106 | data = JSON.parse body 107 | output = "#{data.map(formatOutput).join('\n')}\n" 108 | stringstart = output.indexOf("#{imgid}: ") 109 | if stringstart > -1 110 | if imgid > 9 111 | stringstart += 5 112 | else 113 | stringstart += 4 114 | output = output.substr(stringstart, output.indexOf("\n", stringstart) - stringstart) 115 | if output.indexOf("€") > -1 116 | output = output.substr(0, output.indexOf(" - "), output.length - 10) 117 | robot.http("http://www.studentenwerk-dresden.de/mensen/speiseplan/") 118 | .get() (err, res, body) -> 119 | if body.trim() == "" 120 | msg.send ("No image found, sorry.") 121 | else 122 | body = body.substr(body.indexOf("Alte Mensa")) 123 | if body.indexOf(output) > -1 124 | body = body.substr(0, body.indexOf(output) + output.length + 4) 125 | body = body.substr(body.lastIndexOf("")) 127 | link = "http://www.studentenwerk-dresden.de/mensen/speiseplan/" + body 128 | robot.http(link) 129 | .get() (err, res, body) -> 130 | if body.trim() == "" 131 | msg.send ("No image found, sorry.") 132 | else 133 | imagelink = body.substr(body.indexOf("//bilderspeiseplan")) 134 | imagelink = imagelink.substr(0, imagelink.indexOf("\"")) 135 | imagelink = "http:" + imagelink 136 | if imagelink.length < 20 137 | msg.send ("No image found, sorry.") 138 | else 139 | msg.send(imagelink) 140 | else 141 | msg.send ("No image found, sorry.") 142 | else 143 | msg.send("No food with this number.."); 144 | 145 | 146 | getMeals = (name, mensa, callback) -> 147 | getMealData(mensa, (data) -> callback(formatMenuMessage(name, data))) 148 | 149 | getMealData = (mensa, callback) -> 150 | tzoffset = (new Date()).getTimezoneOffset() * 60000 151 | now = (new Date(Date.now() - tzoffset)).toISOString().slice(0,10) 152 | robot.http("http://openmensa.org/api/v2/canteens/#{mensa}/days/#{now}/meals") 153 | .get() (err, res, body) -> 154 | callback ( 155 | if body.trim() == "" 156 | null 157 | else 158 | JSON.parse body 159 | ) 160 | 161 | robot.respond /mensa$/i, (msg) -> 162 | generic_resp_func(default_mensa, (m) -> msg.send m) 163 | 164 | robot.respond /mensatest/, (msg) -> 165 | dailyMensa() 166 | 167 | robot.respond /mensa (\S.*)/i, (msg) -> 168 | mensa = msg.match[1] 169 | if mensa.indexOf("bild") > -1 170 | return 171 | generic_resp_func(mensa, (m) -> msg.send m) 172 | 173 | robot.respond /mensa bild (\d*)/i, (msg) -> 174 | imgid = msg.match[1] 175 | getImage(msg, imgid) 176 | 177 | robot.respond /mensen/i, (msg) -> 178 | names = mensen.map((mensa) -> 179 | if mensa.names.length > 0 180 | mensa.names[0] 181 | else 182 | null 183 | ).filter((name) -> name != null) 184 | 185 | msg.send "Ich kann dir heutige Speisepläne für die folgenden Mensen holen:\n - #{names.join('\n - ')}\nSprich' mich einfach mit `matthias mensa ` an." 186 | 187 | formatMenuMessage = (name, data) -> 188 | if data == null 189 | "This mensa is currently out of order, sorry." 190 | else 191 | "Heute @ *#{name}*:\n#{data.map(formatOutput).join('\n')}" 192 | 193 | formatOutput = (meal, index) -> 194 | "#{index}: " + 195 | (if meal.category == "Pasta" 196 | "Pasta mit #{meal.name} #{formatMealNotes(meal.notes)}" 197 | else if meal.prices.students? 198 | "#{meal.name} - #{meal.prices.students.toFixed(2)}€ #{formatMealNotes(meal.notes)}#{formatMealCategory(meal.category)}" 199 | else 200 | "#{meal.name} #{formatMealNotes(meal.notes)}#{formatMealCategory(meal.category)}") 201 | 202 | notesabbr = new Map( 203 | [ ["Rindfleisch", ":cow:"] 204 | , ["Schweinefleisch", ":pig:"] 205 | , ["vegetarisch", ":tomato:"] 206 | , ["vegan", ":herb:"] 207 | , ["Alkohol", ":wine_glass:"] 208 | , ["Knoblauch", ":garlic:"] 209 | ] 210 | ) 211 | 212 | catabbr = new Map( 213 | [ ["Abendangebot", ":moon:"] 214 | , ["Angebote", ""] 215 | ] 216 | ) 217 | 218 | formatMealNotes = (notes) -> 219 | notes.map((note) -> 220 | words = note.split(' ') 221 | words[words.length - 1] 222 | ).reduce((list, note) -> 223 | if notesabbr.has note 224 | list.push(notesabbr.get(note)) 225 | list 226 | , []).join('') 227 | 228 | formatMealCategory = (category) -> 229 | if catabbr.has category 230 | catabbr.get category 231 | else 232 | "" 233 | -------------------------------------------------------------------------------- /scripts/porn.coffee: -------------------------------------------------------------------------------- 1 | # Description: 2 | # Such porn, much wow 3 | # 4 | # Commands: 5 | # hubot porn - Random Porn Title, optional mit 6 | # 7 | # Author: 8 | # Johnny Deep 9 | 10 | String.prototype.capitalize = () -> 11 | this.charAt(0).toUpperCase() + this.slice(1) 12 | 13 | module.exports = (robot) -> 14 | robot.respond /porn(?: )?(.+)?/i, (msg) -> 15 | if msg.match[1]? 16 | name = msg.match[1].capitalize() 17 | if name == "Me" 18 | name = msg.message.user.name 19 | porn_title = msg.random(targeted_porn_responses).replace "{target}", name 20 | else 21 | porn_title = msg.random porn_responses 22 | 23 | msg.reply porn_title 24 | 25 | porn_responses = [ 26 | "11.000 Ruten", 27 | "12 Schwedinnen in Afrika", 28 | "2 x 2 im Himmelbett", 29 | "2001 Orgien im Weltraum", 30 | "69 Liebesspiele", 31 | "69 - Vorspiel zur Ekstase", 32 | 33 | "Ach, blas mir doch mal einen Marsch", 34 | "Ach jodel mir noch einen - Stoßtrupp Venus bläst zum Angriff", 35 | "Alfreds unheimliche Begegnung mit der Reizwäsche", 36 | "Alle Kätzchen naschen gern", 37 | "Alpenglühn im Dirndlrock", 38 | "Als die Frauen noch Schwänze hatten", 39 | "Arschibald, der Porno-Butler", 40 | "Auch Engel baden manchmal nackt", 41 | "Auch Fummeln will gelernt sein", 42 | "Auch Ninotschka zieht ihr Höschen aus", 43 | "Auf der Alm, da gibt's koa Sünd'", 44 | "Auf und nieder - ich könnt schon wieder", 45 | "Aufruhr im Frauengefängnis", 46 | "Die Auto-Nummer - Sex auf Rädern", 47 | 48 | "Akte Wixx", 49 | "Al Caporno", 50 | "Alarm im Darm", 51 | "Alice im Ständerland", 52 | "Aliens vs. Penetrator", 53 | "American Fistory XXX", 54 | "American Fickboxer", 55 | "Analdin und die wunde Schlampe", 56 | "Analgeddon", 57 | "Analstufe Rot", 58 | "Analritter 2 - Heute wird eingedost", 59 | "Andere Länder, andere Titten", 60 | "Animal Farm - Jetzt ficken wir Tiere", 61 | "Arielle, die Nicht-mehr-Jungfrau", 62 | "Auf den Highway sind die Schlampen los", 63 | "Auf der Liege der außergewöhnlichen Gentlemen", 64 | "Aufstand in der Lederhose", 65 | "Axel Fick und Obel Wichs", 66 | 67 | "Bademeister-Report", 68 | "Banana Airlines - Die verrückteste Lustlinie der Welt", 69 | "Baron Porno's nächtliche Freuden", 70 | "Beim Jodeln juckt die Lederhose", 71 | "Bohr weiter, Kumpel", 72 | "Bombenstimmung im Hauptquartier", 73 | "Bora Bora", 74 | "Die Bruchpiloten vom Königssee", 75 | "Brummi, sein Kolben läuft auch ohne Diesel", 76 | "Das Bullenkloster", 77 | "Das bumsfidele Heiratsbüro", 78 | "Die bumsfidelen Mädchen vom Birkenhof", 79 | "Die Bumsköpfe", 80 | "Der Bumsladen-Boß", 81 | 82 | "Bambi im Land der geilen Böcke", 83 | "Bananenfick in Mosambik", 84 | "Battlefield Ass", 85 | "Beischlafes Bruder", 86 | "Beverly Hills Cock", 87 | "Big Mama - Speckfalten in Wallung", 88 | "Bitch - Der Fickdoktor", 89 | "Black Cock Down", 90 | "Blair Bitch Project", 91 | "Blowing for Columbine", 92 | "Bonnie in Clyde", 93 | "Boschwanza", 94 | "Baffy, die Dildojägerin", 95 | "Deutschland sucht den Pornstar", 96 | "Bienenstich im Lesbennest", 97 | 98 | "Cockduel", 99 | "Cocklateral damage", 100 | "Cockzilla, Ein Riesenschwanz in New York", 101 | "Chinese Dickstory (1-3)", 102 | 103 | "Des Satans heiße Katzen", 104 | "Die Deutsche Sex-Partei", 105 | "Django Nudo und die lüsternen Mädchen von Porno Hill", 106 | "Donnerwetter! Donnerwetter! Bonifatius Kiesewetter", 107 | "Ein Doppeldecker für Madame O.", 108 | "Dornwittchen und Schneeröschen", 109 | "Down Town - Die nackten Puppen der Unterwelt", 110 | "Dr. Fummel und seine Gespielinnen", 111 | "Dr. Jeckel und Miss Hide", 112 | "Dralle Brüste, steile Schenkel", 113 | "Drei Schwedinnen in Oberbayern", 114 | "Drüber, drunter und drauf", 115 | 116 | "Das Besteigen der Lämmer", 117 | "Das fickende Klassenzimmer", 118 | "Das Sexperiment", 119 | "Das Todessperma des Dr. Mabumsen", 120 | "Das Wunder im Bernd", 121 | "Der Club der roten Fister", 122 | "Der Herr der Cockringe", 123 | "Der große Ficktator", 124 | "Der Name der Hose", 125 | "Der Mönch mit der Peitsche", 126 | "Der Pimmel über Berlin", 127 | "Der Sexorzist", 128 | "Deutschland sucht den Superficker", 129 | "Die Fickinger", 130 | "Die Prinzessin auf der Eichel", 131 | "Die Unbesteigbaren von hinten geknallt", 132 | "Die Vögler", 133 | "Drei Schwengel für Charlie", 134 | "Dr. Jekyll in Mrs. Hyde", 135 | "Dornmöschen", 136 | "Dune der Brüsteplanet", 137 | "Dickman Begins", 138 | "Dickman (1+2)", 139 | "Dickman& Robin", 140 | "Domina Day", 141 | 142 | "Ehemänner-Report", 143 | "Ehepaar sucht Gleichgesinntes", 144 | "Das ehrliche Interview - Die sexuellen Wünsche der Frau von heute", 145 | "Eine nach der anderen - Laß fummeln, Puppe", 146 | "Er war besonders wertvoll für die Damen - Ein echter Hausfrauenfreund", 147 | "Erotik im Beruf - Was jeder Personalchef gern verschweigt", 148 | "Die erotischen Abenteuer der drei Musketiere", 149 | "Es war nicht die Nachtigall", 150 | 151 | "Edward mit den Penishänden", 152 | "Ein Fuck kommt selten Alleine", 153 | "Es wird geschluck was in den Mund kommt", 154 | "Eine für alle, alle in einer", 155 | 156 | "Facts - Kopenhagen-Sex-Report", 157 | "Fans - Fans - Fans - Runter mit den Pants", 158 | "Flesh Gordon - Schande der Galaxis", 159 | "Das französische Frühstück", 160 | "Frau Professor kann's noch besser", 161 | "Frisch, fromm, fröhlich, frei", 162 | "Die fröhlichen Holzfäller der nickenden Fichten", 163 | "Fummeln im Wasser macht immer nasser", 164 | 165 | "Fäkalschlacht am Analschacht", 166 | "Feucht und Feuchter 2 - jetzt wirds spritzig", 167 | "Feuchte Schenkel im Cockpit", 168 | "Fick-Bonbons - Jetzt wirds feucht im Mund", 169 | "Fickendes Inferno", 170 | "Ficket Nemo", 171 | "Ficki und die starken Männer", 172 | "Fickhof der Muschitiere", 173 | "Fist Club", 174 | "Flesh Gordon", 175 | "Flucht von Analtraz", 176 | "Fuck Bill", 177 | "Fuck me if you can", 178 | "Fuck off - Im Körper des Feindes", 179 | "Fummeln im Sturm (1-6)", 180 | "Fuckzilla", 181 | "Ficky Mouse - Gay Crazy", 182 | 183 | "Geh, zieh dein Dirndl aus", 184 | "Gejodelt wird im Unterhöschen", 185 | "Die goldene Banane von Bad Porno", 186 | "Graf Porno bläst zum Zapfenstreich", 187 | "Graf Porno und die liebesdurstigen Töchter", 188 | "Graf Porno und seine Mädchen", 189 | "Greta, die Fremde, kam nackt", 190 | "Grimms Märchen von lüsternen Pärchen", 191 | "Grüne Witwen - billig zu haben", 192 | 193 | "Gaylien - Director's Fuck", 194 | "Gaywatch, Die Riesenschwänze von Malibu", 195 | "Gay's Anatomy", 196 | 197 | "Haben Sie Interesse an der Sache?", 198 | "Hänsel und Gretel verliefen sich im Wald", 199 | "Hattu Keuschheitsgürtel muttu knabbern", 200 | "Heiße Semesterferien", 201 | "Hemd hoch oder ich schieße!", 202 | "Hurra, die Schwedinnen sind da", 203 | 204 | "Harte Spiele", 205 | "Hairy Popper und der Gefangene von Arschpackan", 206 | "Hairy Popper und der Stab der Steifen", 207 | "Hairy Popper und die Kammer des Schleckens", 208 | "Hairy Popper und der Feuerfick", 209 | "Hairy Popper und der Orgasmus des Phoenix", 210 | "Hairy Popper und der Vollblutfick", 211 | "Heisse Länder - Dauerständer", 212 | "Helicoptermann 2 - 'Die Rückkehr des Kreiselfickers'", 213 | "HELLRASIERT", 214 | "Herr der Penisringe", 215 | "Highway to Möpse", 216 | "Hitchhikers guide to the fucktasy", 217 | "Hotel Sodom - Analstufe Rot", 218 | "House of Wixx", 219 | "Hör mal wer da nagelt", 220 | 221 | "I need - Ich hab's nötig", 222 | "Ich - Das Abenteuer, heute eine Frau zu sein", 223 | "Ich fühl' es kommen", 224 | "In 80 Betten um die Welt", 225 | 226 | "I, Fickbot", 227 | "Ich war jung und brauchte das Geld", 228 | "Ich weiß wer dich letzen Sommer gefickt hat", 229 | "Ich weiß noch immer wer dich letzten Sommer gefickt hat", 230 | "Ich werde immer wissen wer dich letzten Sommer gefickt hat", 231 | "In 80 Tagen durch ganz Hinterfeld", 232 | "In einem Loch vor unserer Zeit", 233 | "Inspektor Clouseau — Der beste Mann von Interpo", 234 | "Im Land der RaketenSpermer", 235 | "Im Wald und auf der Heidi 1-3", 236 | "Im Wald wird hart geknallt", 237 | "Im Kloster der 1000 Sünden", 238 | "Independence Gay", 239 | "In Diana Jones", 240 | "Inzestbauern vom Rammlerhof", 241 | "iPop", 242 | 243 | "Jack the Raper", 244 | "Jane Blond - Casino Anal", 245 | "Jane Blond - Goldficker", 246 | "Jane Blond - Der Arsch ist nicht genug", 247 | "Jane Blond - Der Mann mit dem goldenen Schwanz", 248 | "Jane Blond - Im Angesicht des Kotes", 249 | "Jane Blond - Moonshaver", 250 | "Jane Blond - Der Spion mit dem ich Liebe machte", 251 | "Jarhead - Willkommen im Bett", 252 | "Jeanne d'Arsch", 253 | "Jetzt bin ich alt und brauch immer noch Geld", 254 | "Jurassic Porn", 255 | 256 | "Ein Kaktus ist kein Lutschbonbon", 257 | "Der kleine Dicke mit dem großen Langen", 258 | "Köpfchen in das Wasser, Schwänzchen in die Höh'", 259 | "Kreuzberger Liebesnächte", 260 | 261 | "Kack ab Baby 2", 262 | "Kapitän Arsch und seine geilen Piraten", 263 | "Kaviar zum Frühstück", 264 | "Kevin allein im Puff", 265 | "King Dingeling und die blonde Frau", 266 | "Kompanie Huren 2: Trommelfeuer aus der Sackkanone", 267 | "König der Mösen", 268 | "Kuck' mal wer da schluckt!", 269 | "Kung Fu Fisting", 270 | 271 | "Laß jucken im Heu", 272 | "Laß jucken, Kumpel", 273 | "Laß jucken, Kumpel 3. Teil - Maloche, Bier und Bett", 274 | "Laß knacken Schätzchen - Gauner der Liebe", 275 | "Laß laufen Kumpel", 276 | "Laß uns Doktor spielen", 277 | "Die letzte amerikanische Jungfrau", 278 | "Liebe durch die Autotür", 279 | "Liebe durch die Hintertür", 280 | "Liebe in drei Dimensionen", 281 | "Liebesgrüße aus der Lederhose 6. Teil - Eine Mutter namens Waldemar", 282 | "Liebesgrüße aus der Lederhose VII - Kokosnüsse und Bananen", 283 | "Lolita am Scheideweg", 284 | "Lustvoll eine Schlange streicheln", 285 | 286 | "Lass die Enkel zwischen die Schenkel", 287 | "Lawrence von Analien", 288 | "Liebling, ich habe die Kinder gefickt", 289 | "Last Penis Standing", 290 | 291 | "Mädchen, die am Wege liegen", 292 | "Mädchen, die nach München kommen", 293 | "Mädchen, die sich hocharbeiten", 294 | "Mädchen, die sich selbst bedienen", 295 | "Mädchen in der Rückenlage", 296 | "Das Mädchen Julius", 297 | "Mei Hos' ist in Heidelberg geblieben", 298 | "Mutti, Mutti, er hat doch gebohrt", 299 | 300 | "Mad Maxxx auf Tinas Donnerkuppeln", 301 | "Mac Geiler", 302 | "Mann fickt Hund", 303 | "Maria mag die Lena", 304 | "Marry Poppins", 305 | "Mighty Fucks", 306 | "Mighty Fucks II - Die Superficker kehren zurück", 307 | "Moby Fick - Im Arsch des Pottwals", 308 | "Monstergurken überfallen die Schweiz", 309 | "Monsters Of Cock - Das Schwanzfestival", 310 | 311 | "Nach Stockholm der Liebe wegen", 312 | "Der nächste Herr - dieselbe Dame", 313 | "Nackt unter Kannibalen", 314 | 315 | "Nackt Zerhackt und Angekackt", 316 | 317 | "Ob Dirndl oder Lederhos', gejodelt wird ganz wild drauflos", 318 | "Oben ohne, unten Jeans", 319 | "Oben ohne - unten nix", 320 | "Der Ostfriesen-Report: O mei, haben die Ostfriesen Riesen", 321 | 322 | "Oma, fick mich ins Koma", 323 | "Oma Rose \"98\" fickgeil und nicht tot zukriegen", 324 | "One Night in Bangckock", 325 | "One Night in Paris", 326 | "One Night in Rüsseldorf", 327 | "Operation Delta Fick I- III", 328 | "Oral! Oral! Oral!", 329 | 330 | "Penispiraten auf Rektalrandale", 331 | "Per Anhalter durch den Analfick", 332 | "Peterchens Wichsfahrt", 333 | "Petri Geil! Angelurlaub am Analsee", 334 | "Pipi auf Karl-Heinz", 335 | "Pipi im Puller-Puller-Land", 336 | "Pissing in Action", 337 | "Pulp Fickschön", 338 | "Popeye, der Puffbesitzer", 339 | "Porn Wars Periode I - Die dunkelbraune Bedrohung", 340 | "Porn Wars Periode II - Anschiss der Klokrieger", 341 | "Porn Wars Periode III - Die Rache der Spermien", 342 | "Porn Wars Periode IV - Ein neuer Harem", 343 | "Porn Wars Periode V - Das Spermium schlägt zurück", 344 | "Porn Wars Periode VI - Die Rückkehr der Analritter", 345 | 346 | "Quasimodo und seine sieben Glocken", 347 | 348 | "Rate mal wer beim Essen kommt", 349 | "Reinstecke Fuchs", 350 | "Rex Dildo - Arschalarm auf der Akropolis", 351 | "Robin Cock - König der Stecher", 352 | "RoboCock", 353 | "Roundhouse Fick - Chuck im Rausch der Leidenschaft", 354 | 355 | "Schwedenmädel in Paris", 356 | "Seid nett aufeinander", 357 | "Sexplosiv", 358 | "Siegfried und das sagenhafte Liebesleben der Nibelungen", 359 | "Stoßverkehr", 360 | "Stoßzeit - Rush Hour", 361 | 362 | "Sauerei auf der Bounty", 363 | "Schamlos in Seattle", 364 | "Scheidi und der Einöli", 365 | "Scheiß am Stil", 366 | "Schneeflittchen und die sieben Geilen", 367 | "Schwanz der Vampire", 368 | "Schwänzel und Gretel", 369 | "Schwänze & Partner", 370 | "Schweinchen Fick", 371 | "SEX AGE 2 -jetzt wird gespritzt", 372 | "Sexcalibur", 373 | "Sexy Island - Der Kampf ums nackte Überleben", 374 | "Sexy Pirates - Hier wird nicht nur in See gestochen", 375 | "Shaving Private Ryan", 376 | "Shaving Ryan's Privates", 377 | "Sieben Tage, sieben Möpse", 378 | "Sklave Pupsmuckel und der geile Meister Leder", 379 | "Spermarella und die sieben Bukkakezwerge", 380 | "Spermboat Willie", 381 | "Sponge Bob Arschkopf", 382 | "Spiel mir am Glied mit Kot", 383 | "Stadt der Engen", 384 | "Stanley Kuhficks - Cockwork Orange", 385 | "Starfick - Popisode 1:\"Das Impedium fickt zurück\"", 386 | "Steven Strings - Shiting", 387 | "Stoß langsam I- III", 388 | "Sündbart der Seepfarrer", 389 | "Swingapur", 390 | 391 | "Texas Chainfuck Massacre", 392 | "Tatsächlich ... Lesben", 393 | "The Ass-Team", 394 | "The Gay after Tomorrow", 395 | "The Gays's After", 396 | "The Masturbator", 397 | "The Oklahoma bumser", 398 | "The Porn Identity", 399 | "The Texas Dildo Massacre", 400 | "The Truman Po", 401 | "Tokiobordel", 402 | "Totgefickt am 4. Juli", 403 | 404 | "Unterm Dirndl wird gejodelt", 405 | "Unterm Röckchen stößt das Böckchen", 406 | "Urlaubsgrüße aus dem Unterhöschen", 407 | "Urlaubsreport - Worüber Reiseleiter nicht sprechen dürfen", 408 | 409 | "Und täglich schmerzt mein Rüssel mir", 410 | "Uranus is huge", 411 | 412 | "Vanilleeis und Pettingcoats", 413 | 414 | "V for Vagina", 415 | "Voll In' Arsch 1 bis 6", 416 | 417 | "Waidmannsheil im Spitzenhöschen", 418 | 419 | "Wixblumenstrauß", 420 | "Wunderbare Welt des Schwellsaft", 421 | "Wicki und die starken Schwängel", 422 | "Wichs-Men", 423 | 424 | "xXx", 425 | "XXX-Men", 426 | "XXX-Men Ejakulation", 427 | 428 | "Yellow Sexmachine", 429 | 430 | 431 | "Zucht der Karibik: Hairy Man's Chest", 432 | "Zum Löten freigegeben" 433 | ] 434 | 435 | targeted_porn_responses = [ 436 | "Ach jodel mir noch einen - Stoßtrupp {target} bläst zum Angriff", 437 | "{target}s unheimliche Begegnung mit der Reizwäsche", 438 | "{target} in Wonderland", 439 | "{target} - Wild und unersättlich", 440 | "{target} - wie ein Blatt auf nackter Haut", 441 | "{target} - Zur Liebe geboren", 442 | "Eine Armee {target}", 443 | "Auch {target} badet manchmal nackt", 444 | "Auch {target} zieht ihr Höschen aus", 445 | "{target}, die Unkeusche", 446 | "{target}'s nächtliche Freuden", 447 | "{target} - im Reich der Sinnlichkeit", 448 | "{target}, der Pechvogel", 449 | "{target} - sündig und süß", 450 | "{target} and Sex - Die Nackten und die Perversen", 451 | "{target}, sein Kolben läuft auch ohne Diesel", 452 | "{target}s Tante nackt", 453 | "{target}s Nichten", 454 | "Cream - {target}-Report", 455 | "{target} - die Anhalterin", 456 | "{target} und die lüsternen Mädchen von Porno Hill", 457 | "Ein Doppeldecker für {target}", 458 | "{target} und seine Gespielinnen", 459 | "{target} - Eine Frau lebt ihre Träume", 460 | "{target} und seine Gespielinnen", 461 | "{target} 77 - La Marge", 462 | "{target} - Alle Lüste dieser Welt", 463 | "{target} - Dein wilder Erdbeermund", 464 | "{target} - Garten der Liebe", 465 | "{target} geht nach Cannes", 466 | "{target} - Im Teufelskreis der Leidenschaft", 467 | "{target} - Insel ohne Tabus", 468 | "{target} - Sinnlichkeit hat tausend Namen", 469 | "{target} in Afrika", 470 | "{target} in Tibet", 471 | "{target} in Venedig", 472 | "{target} Freundin", 473 | "{target} Geheimnis", 474 | "{target} Zauber", 475 | "{target} heißer Sommer", 476 | "Erotic Adventures of {target}", 477 | "Die erotischen Abenteuer von {target}", 478 | "{target} und der Mann für alles", 479 | "{target} - Die Sexsklavin des Cäsar", 480 | "{target} - Schande der Galaxis", 481 | "{target} - blutjung und unbefriedigt", 482 | "Geheime Perversionen der {target}", 483 | "Graf {target} und seine Nichten", 484 | "Graf {target} bläst zum Zapfenstreich", 485 | "Graf {target} und die liebesdurstigen Töchter", 486 | "Graf {target} und seine Mädchen", 487 | "Gräfin {target} Liebestempel", 488 | "{target}, die Fremde, kam nackt", 489 | "{target} - Haus ohne Männer", 490 | "Hey {target}, ich brauch mehr Schlaf, auf ins blaukarierte Himmelbett", 491 | "Inspektor {target} - Der beste Mann von Interpo", 492 | "Die intimen Momente der {target}", 493 | "{target}, das liebestolle Kätzchen", 494 | "{target} Mutzenbacher 2. Teil - Meine 365 Liebhaber", 495 | "{target} Mutzenbacher - Mein Leben für die Liebe", 496 | "Junge Lady {target}", 497 | "{target}, grausame Leidenschaften", 498 | "{target} - Lustschreie hinter Klostermauern", 499 | "{target} und Juliette", 500 | "{target} - Die nackte Zarin", 501 | "{target} - alle brauchen Liebe", 502 | "Komm auf die Couch, {target}", 503 | "{target} - Zwischen Schmach und Liebe", 504 | "Liebesgrüße aus der Lederhose 6. Teil - Eine Mutter namens {target}", 505 | "Die Liebesschule der {target}", 506 | "{target} bläst zum Wahlkampf", 507 | "{target} am Scheideweg", 508 | "Madame {target} und ihre Gazellen", 509 | "Madame {target} und ihre ganz teuren Mädchen", 510 | "Das Mädchen {target}", 511 | "{target} - Vom Teufel besessen", 512 | "{target} - Geheimste Leidenschaften", 513 | "{target} - Heiß wie ein Vulkan", 514 | "{target} - Im Paradies der Sinnlichkeit", 515 | "{target} - Kaiserin und Hure", 516 | "{target} - Liebesclub der Unersättlichen", 517 | "{target} - mein heißer Schoß", 518 | "{target} oder Die Sache mit dem Dreieck", 519 | "{target} - meine wilden Freuden", 520 | "{target} - Erotische Sehnsüchte", 521 | "{target} - Schulmädchen reif für die Liebe", 522 | "Die Neffen des {target}", 523 | "{target} - Verbotene Erotik", 524 | "{target}: Das Wunder der Liebe", 525 | "{target}: Deine Frau - das unbekannte Wesen", 526 | "{target}, der Pflaumenpflücker", 527 | "{target} und die nackte Welle", 528 | "{target} - das süße Früchtchen", 529 | "{target} - Einmal Himmel und zurück", 530 | "{target} - die schmutzige Jungfrau", 531 | "{target} - Der Potenzprotz", 532 | "Professor {target} Liebesschule", 533 | "Professor {target} und seine Vögelein", 534 | "Der Ritt der Lady {target}", 535 | "Ritter {target} muß mal wieder", 536 | "{target} und seine lüsternen Mädchen", 537 | "{target} und seine wilden Sklavinnen", 538 | "{target}, der tolle Stier", 539 | "{target} - heiße Körper", 540 | "{target}s Liebesreport in drei Dimensionen", 541 | "{target} - heiß wie ein Vulkan", 542 | "Der scharfe {target} - Die bumsfidelen Abenteuer einer jungen Ehe", 543 | "Die Story von {target}", 544 | "Der Teufel in Miss {target}", 545 | "Teufelslust mit {target}", 546 | "Was geschah wirklich mit Miss {target}?", 547 | "Wilde {target} im Paradies der Lust", 548 | "Yellow {target}", 549 | "{target} - Das sechste Gebot", 550 | "{target} - Spiel mir das Lied der Wollust", 551 | "{target} und seine lüsternen Mädchen", 552 | 553 | "{target} im Ständerland", 554 | "{target}, die Nicht-mehr-Jungfrau", 555 | 556 | "{target} im Land der geilen Böcke", 557 | "{target}, die Dildojägerin", 558 | 559 | "Das Todessperma des Dr. {target}", 560 | "Das Wunder im {target}", 561 | "Drei Schwengel für {target}", 562 | 563 | "{target} mit den Penishänden", 564 | 565 | "Gaywatch, Die Riesenschwänze von {target}", 566 | 567 | "Im Wald und auf der {target}", 568 | "In {target}", 569 | "{target} und der Gefangene von Arschpackan", 570 | "{target} und der Stab der Steifen", 571 | "{target} und die Kammer des Schleckens", 572 | "{target} und der Feuerfick", 573 | "{target} und der Orgasmus des Phoenix (erscheint 2007)", 574 | "{target} und der Vollblutfick (erscheint noch später)", 575 | 576 | "{target} the Raper", 577 | "{target} - Casino Anal", 578 | "{target} - Goldficker", 579 | "{target} - Der Arsch ist nicht genug", 580 | "{target} - Der Mann mit dem goldenen Schwanz", 581 | "{target} - Im Angesicht des Kotes", 582 | "{target} - Moonshaver", 583 | "{target} - Der Spion mit dem ich Liebe machte", 584 | "Kapitän {target} und seine geilen Piraten", 585 | "{target} zum Frühstück", 586 | "{target} allein im Puff", 587 | "King {target} und die blonde Frau", 588 | "Lawrence von {target}", 589 | "Mad {target} auf Tinas Donnerkuppeln", 590 | "Mad Maxxx auf {target}s Donnerkuppeln", 591 | "{target} mag die Lena", 592 | "Maria mag die {target}", 593 | "{target}, fick mich ins Koma", 594 | "Oma {target} \"98\" fickgeil und nicht tot zukriegen", 595 | "{target} Geil! Angelurlaub am Analsee", 596 | "{target} auf Karl-Heinz", 597 | "Pipi auf {target}", 598 | "{target} im Puller-Puller-Land", 599 | "{target}, der Puffbesitzer", 600 | "{target} und seine sieben Glocken", 601 | "{target} - König der Stecher", 602 | "{target} und der Einöli", 603 | "Scheidi und der {target}", 604 | "{target} und die sieben Geilen", 605 | "Shaving Private {target}", 606 | "Shaving {target}'s Privates", 607 | "Sklave {target} und der geile Meister Leder", 608 | "Sklave Pupsmuckel und der geile Meister {target}", 609 | "{target} und die sieben Bukkakezwerge", 610 | "Spermboat {target}", 611 | "{target} Arschkopf", 612 | "{target} und die starken Schwängel", 613 | "Dieser Graf {target} kommt echt oft", 614 | ] 615 | -------------------------------------------------------------------------------- /scripts/random.coffee: -------------------------------------------------------------------------------- 1 | # Description: 2 | # Ein paar weitere kleine Antworten von matthias 3 | # 4 | # Dependencies: 5 | # ../util 6 | # 7 | # Commands: 8 | # hubot bash me - Zufälliger Bash Link 9 | # hubot random - Zufallszahl zwischen und (nutzt random.org) 10 | # 11 | # Author: 12 | # kiliankoe 13 | 14 | util = require "../util" 15 | 16 | module.exports = (robot) -> 17 | robot.hear /matthias ist (.*)/i, (res) -> 18 | adj = res.match[1].toLowerCase() 19 | util.react res, "middle_finger" 20 | res.reply "Deine Mudda ist #{adj}!" 21 | 22 | robot.hear /matthias,? du bist (.*)/i, (res) -> 23 | adj = res.match[1].toLowerCase() 24 | util.react res, "middle_finger" 25 | res.reply "Deine Mudda ist #{adj}!" 26 | 27 | robot.hear /matthias scheißt auf (.*)/i, (res) -> 28 | term = res.match[1] 29 | util.react res, "middle_finger" 30 | res.reply "Deine Mudda scheißt auf #{term}!" 31 | 32 | robot.hear /bash me/i, (res) -> 33 | res.send "http://bash.fsrleaks.de/?#{randomRange(1, 1078)}" 34 | 35 | robot.respond /random (\d*) (\d*)/i, (res) -> 36 | min = res.match[1] 37 | max = res.match[2] 38 | robot.http("https://www.random.org/integers/?num=1&min=#{min}&max=#{max}&format=plain&col=1&base=10") 39 | .get() (err, resp, body) -> 40 | res.send(body.trim()) 41 | 42 | randomRange = (min, max) -> 43 | Math.floor(Math.random() * (max - min) + min) 44 | -------------------------------------------------------------------------------- /scripts/simpleresponses.coffee: -------------------------------------------------------------------------------- 1 | # Description: 2 | # Einfache trigger-response Interaktionen 3 | # 4 | # Dependencies: 5 | # ../util 6 | # 7 | # Commands: 8 | # hubot pizza - hubot nennt alle Details für eine Pizzabestellung (im Ratsaal) 9 | # hubot filmlist - Frag' hubot nach Links zu beiden Filmlisten 10 | # 11 | # Author: 12 | # kiliankoe 13 | 14 | util = require "../util" 15 | 16 | responses = [ 17 | [ 18 | /pizza/i, 19 | "Ich bin Matthias Stuhlbein, Nöthnitzer Str. 46, 01187 Dresden. Fakultät Informatik. Mail: pizza@ifsr.de, Telefon: 0351 46338223 - Pizzen schneiden nicht vergessen ;)" 20 | ], 21 | [ 22 | /filmlist/i, 23 | "Vorschläge: http://letterboxd.com/kiliankoe/list/ifsr-filmvorschlage/\nGeschaute Filme: http://letterboxd.com/kiliankoe/list/ifsr-movie-night/" 24 | ], 25 | [ 26 | /wat is wacken\?/i, 27 | "Dat ist Wacken. Einmal im Jahr kommen hier alle bösen schwarzen Männer aus Mittelerde her, um ma richtig die Sau rauszulassen." 28 | ], 29 | [ 30 | /marco/i, 31 | "POLO" 32 | ] 33 | ] 34 | 35 | listens = [ 36 | [/pimmel/i, "Höhöhö, du hast Pimmel gesagt."], 37 | [/anyway/i, "how's your sex life?"], 38 | [/jehova/i, "http://i.imgur.com/01PMBGj.gif"], 39 | [/you're tearing me apart|the room|tommy wiseau/, "http://i.giphy.com/pTrgmCL2Iabg4.gif"], 40 | [/citrix|35000|35\.000|35k/, ":moneybag::moneybag::moneybag:"], 41 | [/^nein$/i, "Doch!"], 42 | [/gewitter/i, "Gewitter? In Neuss?"] 43 | ] 44 | 45 | rarelistens = [ 46 | [/\sphp|^php/, "Naja, ich hab mit PHP auch schon richtig gut funktioni⍰\nParse error: syntax error, unexpected '::' (T_PAAMAYIM_NEKUDOTAYIM) in Command line code on line 1"], 47 | [/spiel|game/i, "ICH HAB' DAS SPIEL VERLOREN!"] 48 | ] 49 | 50 | reactions = [ 51 | [/\bbayern/i, ["logik", "bavaria"]], 52 | [/\bbrandenburg/i, ["tumbleweed"]], 53 | [/\bbrandschutz/i, ["brandschutz"]], 54 | [/\bbravo girl/i, ["bravo"]], 55 | [/\bcage/i, ["onetruegod"]], 56 | [/\bdatenbank/i, ["sascha"]], 57 | [/\bduc(?:k|)/i, ["mind-the-quack"]], 58 | [/\bein(?:oe|ö)de/i, ["brandenburg"]], 59 | [/\bfancy/i, ["weber_sunglasses"]], 60 | [/\bgabba/i, ["gandalf"]], 61 | [/\bgcc/i, ["praisebe", "rms", "gnu"]], 62 | [/\bgraz/i, ["graz"]], 63 | [/\bkapital/i, ["marx"]], 64 | [/\blobo/i, ["lobo"]], 65 | [/\blecker/i, ["letscho"]], 66 | [/\bmatthias\?/i, ["wave"]], 67 | [/\bmonty python/i, ["sillywalk"]], 68 | [/\bmuss man wissen/i, ["stoll"]], 69 | [/\bpampa/i, ["brandenburg"]], 70 | [/\sphp|^php/i, ["php", "amen", "praisebe"]], # "." would be a word boundary, so this one is special, just as PHP is special ¯\_(ツ)_/¯ 71 | [/\bruhe\b/i, ["psst"]], 72 | [/\bstar wars/i, ["leia"]], 73 | [/\bstiefel/i, ["stiefel"]], 74 | [/\bstoll/i, ["stoll"]], 75 | [/\bth(?:ue|ü)ringen/i, ["thueringen"]], 76 | [/\bweed/i, ["gandalf"]], 77 | [/\bzaunpfahl/i, ["zaunpfahl"]], 78 | [/\bzu alt/i, ["old_man_yells_at_cloud"]] 79 | ] 80 | 81 | topic_adjectives = [ 82 | "dämliches", 83 | "doofes", 84 | "komisches", 85 | "eigenartiges", 86 | "'interessantes'", 87 | "dummes", 88 | "kack", 89 | "großartiges" 90 | ] 91 | 92 | module.exports = (robot) -> 93 | responses.forEach (resp_tuple) -> 94 | [trigger, answer] = resp_tuple 95 | robot.respond trigger, (res) -> 96 | unless res.message.room == "general" 97 | res.send answer 98 | 99 | listens.forEach (resp_tuple) -> 100 | [trigger, answer] = resp_tuple 101 | robot.hear trigger, (res) -> 102 | unless res.message.room == "general" 103 | res.send answer 104 | 105 | rarelistens.forEach (resp_tuple) -> 106 | [trigger, answer] = resp_tuple 107 | robot.hear trigger, (res) -> 108 | unless res.message.room == "general" 109 | if Math.random() < 0.05 110 | res.send answer 111 | 112 | reactions.forEach (resp_tuple) -> 113 | [trigger, answers] = resp_tuple 114 | robot.hear trigger, (res) -> 115 | unless res.message.room == "general" 116 | answers.forEach (emoji) -> 117 | util.react res, emoji 118 | 119 | robot.topic (res) -> 120 | unless res.message.room == "general" 121 | res.send "'#{res.message.text}' ist ein #{res.random topic_adjectives} Channelthema." 122 | -------------------------------------------------------------------------------- /scripts/stoll.coffee: -------------------------------------------------------------------------------- 1 | # Description: 2 | # Such stoll, much wow 3 | # 4 | # Commands: 5 | # hubot stoll - Zufälliges Dr. Axel Stoll Zitat 6 | # 7 | # Author: 8 | # kiliankoe 9 | 10 | 11 | module.exports = (robot) -> 12 | robot.respond /stoll/i, (msg) -> 13 | msg.send msg.random stoll_quotes 14 | 15 | stoll_quotes = [ 16 | "Ist ne stehende Welle, junge Dame.", 17 | "Licht ist keine Grenzgeschwindigkeit, vorsicht. Skalarwellen und stehende Welle hat ein vielfaches mehr.", 18 | "Auf die Maßeinheiten der Kernphysik hab ich bewusst verzichtet, denn außer mir würde das kaum jemand begreifen.", 19 | "Das ist ein ganz einfacher Algorithmus.", 20 | "Primzahlen bis 1024 werden in der Computertechnik benutzt.", 21 | "Darwin, Jude… klar. Da wurde die Biologie versaut – Einstein, Jude… die Physik wurde versaut, so kann ich das ganze Gebäude durchgehen.", 22 | "Das hat auch die Blawatzki erkannt.", 23 | "Die Wurzel aus -1 ist lösbar.", 24 | "Wurzelrechnung… lächerlich.", 25 | "Geht in eine kalte Fusion.", 26 | "Die Erde ist ein lebender Organismus.", 27 | "Es gibt einen energetischen Frühling.", 28 | "Es gibt auch keine Missing Links. (…) Alles ein Schwachsinn!", 29 | "Wir haben mit Braunsgas gearbeitet.", 30 | "Wir haben Blei verwandelt in Gold und Silber, Platin.", 31 | "Physik – 2/3 schrott.", 32 | "Ich bin auch ein Anhänger der Kataklysmen-Theorie.", 33 | "Es gibt Evolution heißt AUS-wicklung, alles schon da gewesen.", 34 | "Klaus Böhme, das ist derjenige, der hocheffiziente BHKWs (…) baut, mittels Braunsgas, also kalte Fusion.", 35 | "Im Gegensatz zur Involution – EIN-wicklung. Ha! Physik, Physik… hä!", 36 | "Es handelt sich demnach um einen deutlichen und jederzeit reproduzierbaren Beweis für Homöopathie.", 37 | "Die Zahl 12 - auch ne kosmische Zahl.", 38 | "Angewandte MaTHEMAtik!", 39 | "Quarz als Skalarwelleninterferometer.", 40 | "Auch ne kosmische Zahl.", 41 | "Aber Vorsicht bei der Numerologie!", 42 | "Merkt ihr die Korrelation? Nachdenken!", 43 | "Man muss das dazu auch mal philosophisch betrachten.", 44 | "Aber steigtert euch nicht zu tief hinein - ich denke da an die Zahl 23 und was es alles gibt.", 45 | "Es gibt auch nen Vier-dimensionalen Würfel.", 46 | "Vier-dimensionale Räume, gibt es!", 47 | "Skalarwellen knallen quer Kontinente und Ozeane.", 48 | "Die jetzige elektromagnetische Theorie, wie sie an Schulen und Universitäten vertreten wird, ist falsch.", 49 | "Mit Überlichtgeschwindigkeit, ich betone: ÜBERLICHTGESCHWINDIGKEIT!", 50 | "Das ist ausgestoßene, überschüssige Geschwindigkeit! Mehr ist das nicht Leute!", 51 | "Wer kennt die Maxwell’schen Gleichungen?", 52 | "Was sind die Pyramiden, wer weiß das? Schlüssel der Energie!", 53 | "Magnetohydrodynamik!", 54 | "Wir leben in einer Welt von Schwingungen, sprich Frequenzen, und damit korrelierender Wirbelmechanismen.", 55 | "Alles ist nur Bewegung oder Geschwindigkeit oder Schwingung.", 56 | "Mt diesem Braungas haben wir auch Elementtransmutationen vollbracht, allerdings machen wir das jetzt eleganter, mit einer Art Kaltlaser.", 57 | "Das ist eine Aufkraft!", 58 | "Weisste was die Primzahlen bedeuten? Einen Torus - raum-zeitlich gesehen.", 59 | "Alles nur störende Mikrowellen.", 60 | "Das A&O in der freien - in der Physik.", 61 | "Gemeint ist das organische Germanium 32.", 62 | "Unsere Energiegruppe ist in der Lage das künstlich herzustellen.", 63 | "Mikrowelle, Skalarwelle!", 64 | "Physik, Mathematik, Philosophie.", 65 | "Wir Physiker sprechen vom sogenannten Dirac-Meer.", 66 | "Die muss man anzapfen entsprechend einem Implusions-Strudel.", 67 | "Sie ist ein Perpetuum Mobile!", 68 | "Das heißt eine logarithmische Spirale raum-zeitlich betrachtet nach Innen.", 69 | "Das ist die menschliche Zelle im Schnitt!", 70 | "Das nennt man KALTE FUSION!", 71 | "Es gibt nur Expansionsstrudel und Implosionsstrudel.", 72 | "Mikrowelle, Skalarwelle!", 73 | "Es gibt keine feste Materie - das ist ein Trugschluss.", 74 | "Mann muss immer den Ursprung erkennen - den Algorithmus, meine Damen, meine Herren.", 75 | "Die Natur bracht Wirbel.", 76 | "Formeln sind viel besser zu Handhaben, ist wie ein Krimi.", 77 | "Mathematik ist die Sprache des Universums, der Intelligenz und erspart mir 1000 Seiten zu lesen.", 78 | "Man steckt erst richtig drin im Wissen, wenn man auch einer Klofrau das Raum/Zeit-Gefüge erklären kann.", 79 | "Das ist eine stehende Welle, die ist sofort da.", 80 | "Der Mensch ist eine energetische Matrix!", 81 | "Magie ist Physik durch wollen!", 82 | "Meine Name ist Stoll, ich bin promovierter Naturwissenschaftler.", 83 | "Ich befasse mich mit freier Energie.", 84 | "Implosionstechnik!", 85 | "Biologie ist Physik.", 86 | "Mit Kraft!", 87 | "Das ist kein Science Fiction!", 88 | "So einfach ist das, wenn man um die neue Physik weiß!", 89 | "Ich kann auch radioaktive Strahlung neutralisieren!", 90 | "So lebt man ruhiger und energetischer.", 91 | "Es gibt nur energetische Felder.", 92 | 93 | "Das hatte die deutsche Luftwaffe (…) rechtzeitig erkannt.", 94 | "Ganz wichtig, steht auch auf den reichsdeutschen Wissen.", 95 | "So sind Höhen ohne Tiefen nicht denkbar – siehe hermetisches Gesetz des Universums.", 96 | "Entscheidend ist die Länge des Frauenhaares als Sender und Empfänger.", 97 | "Aber das Frauenhaar, das müssen Sie begreifen, ist magnetisch, das hat ein anderes Magnetfeld.", 98 | "Ich denke an die Vril-Damen – transmediale Kontakte zum Aldebaran.", 99 | "Wir hatten den ersten Videorekorder der Welt.", 100 | "Die schwarze Macht – da geht es um Templerwissen und um das Deutsche Reich.", 101 | "Wir hatten die erste Polaroid-Kamera – allerdings S/W-Aufnahmen.", 102 | "Wir hatten Bildtelefon. Da konnte man zu bestimmten Städten telefonieren und sah sein Gegenüber – für 50 Reichspfennige.", 103 | "Kann man ablesen, siehe Victor Schauberger.", 104 | "Prä-Astronautik macht der.", 105 | "Bis auf die Haunebu I, die war nur zu 60% Weltall-tauglich, nebenbei bemerkt.", 106 | "Flugscheiben mit non-konventionellen Antrieben, Elektrogravitation und Gravitationsabschirmung und Überlichteffekt.", 107 | "Wissenschaftlich, technologisch war das Deutsche Reich den Alliierten um mindestens 100 Jahre voraus, (…) moralisch um 1.000 Jahre voraus.", 108 | "Wir haben versucht Quetschmetall aus den Vril-Werkstätten zum schmelzen zu bringen.", 109 | "Quetschmetall auch wurde verwendet für Plasma-Antrieben von reichsdeutschen Flugscheiben.", 110 | "Die starteten die Vril-Flugscheiben aus sogenannten spezial-gehärteten Silos.", 111 | "Ich weiß auch mittlerweile auch, wo die Vril Odin (hinge?)startet ist - zum Aldebaran.", 112 | "Das muss man natürlich alles wissen, alles das was reichsdeutsche Hochtechnologie vermag.", 113 | "Heute ist Deutschland ein Entwicklungsland.", 114 | "Wird sind die fünfte Wurzelrasse, die arische.", 115 | "Was wir haben, die himmlischen Flugscharen, ne?", 116 | "Die weiße Rasse stammt vom Aldebaran, vergesst das nicht!", 117 | "Die erste Wurzelrasse war die Polarrasse.", 118 | "Das äußerliche dieser Wesenheiten ist uns völlig schleierhaft, (..) Medusen, was weiß ich.", 119 | "Alles, auch das Universum, ist rhythmisch, zyklisch aufgebaut.", 120 | "Die Velociraptoren (…) hatte eine eigene Sprache, aus denen entstammen vermutlich die Reptos, iss so.", 121 | "Die sind nicht weg, die haben sich ins Erdinnere verkrochen.", 122 | "Als Däniken hochkam sein.. der Angehörige vom ZDF wurde erschossen.", 123 | "Da findet man auch Skelette von 8 Metern Länge, humanoid und andere Sachen… Flugscheiben Virmanas und dergleichen mehr.", 124 | "Woher die Reptos kommen ist mir auch bekannt.", 125 | "Die Reptos auch, die haben sich nur unterirdisch verlagert durch den Einschlag.", 126 | "In der Kruste! Nicht die innere Hohlwelt! Das ist ein großer Unterschied!", 127 | "Reste vom atlantischen Empire – das atlantische Imperium.", 128 | "Wer von euch kennt die theosophische Lehre?", 129 | "Kontinent Mu – die Südhemisphäre.", 130 | "Wir sind die nächste 4,5 Rasse, ne… die arische.", 131 | "Nech, die Blawatzki… die Blawatski spricht ja von Wurzelrasse.", 132 | "Dann folgt nach der Polarrasse, die hyperboreische Rasse, auch auf die Nordhemisphäre beschränkt.", 133 | "Dann, (…) die haben mit uns Ähnlichkeit, die lemurische Rasse.", 134 | "Nach der lemurischen Rasse, folgte das atlantische Imperium.", 135 | "Demnach ist die weiße Rasse, also sprich atlantische Imperium, eine Kolonie, eine aldebaranische Kolonie.", 136 | "Was jeder Erdenbürger wissen sollte!", 137 | "Woher sollen die Rassen, Negroid und Asiatit herkommen oder Isaac Krummburg?!", 138 | "Die ursprünglichen Wesenheiten waren die Reptos, die ich persönlich sehr mag.", 139 | "Verbotene Archäologie, das sind insgesamt drei Teile.", 140 | "In sekundenschnelle zu anderen Fixsternen.", 141 | "Gedanken sind infometrische Felder.", 142 | "Ja, das ist freie Energie.", 143 | "Zigfache Überlichtgeschwindigkeit - ganz wichtig.", 144 | "Denn die Erde ist ein lebender Organismus, vergesst das nicht.", 145 | "Sie wirken auf der Atomebene, nicht auf der Molekularebene - ganz wichtig.", 146 | "Damit haben Sie die Eigenschaft die Zeit der Zellen quasi zurückzudrehen.", 147 | "Man steckt erst richtig drin, wenn man auch der letzten Klofrau erklären kann, was Zeitreisen sind.", 148 | "Levitation! Mein Gott, die indischen Gurus machen uns das vor.", 149 | "Man kann mit Skalarwellen experimentiern.", 150 | "Macht es subsersiv, geht damit nicht an die Öffentlichkeit, schon garnicht ins Internet.", 151 | "Informetrisches Feld und informetrische Felder, Pluralis.", 152 | "Das ist nämlich das A und O des Universums.", 153 | "Wir sprechen von infometrischen Feldern.", 154 | "Skalarwellen oder Teslawellen sind eigentlich Wellen des Raum-Zeit-Kontinuums.", 155 | "Dort einzudringen würde ich nicht empfehlen! Nirgendwo!", 156 | "Die Erdkruste ist ja weltweit ein Gangsystem.", 157 | "Dort leben ja mehrere Zivilisationen, nicht nur eine. Ich hab Karten darüber.", 158 | "Eine Million Reichsdeutsche leben dort unten, in der inneren Hohlwelt.", 159 | "Dort einzudringen würde ich nicht empfehelen! Nirgendwo!", 160 | "Die altindischen Vimanas! Vimanas heißt Fluggerät Sanskrit, flogen mit Quecksilberwirbelmotoren.", 161 | "Ich erinnere noch einmal daran, dass mindestens rund eine Million reichsdeutscher Patente in alliierte Hände verschwand!", 162 | "Apropos unterirdische Bauwerke: Das Verhältnis von oberirdisch zu unterirdisch ist 1 zu 4!", 163 | "Gesamtberlin, wissen auch die wenigsten: 4 mal mehr - Unterdirdisch! Alles verzweigt!", 164 | "Das kann nur die Dritte Macht gewesen sein.", 165 | "Bayern ist ein Schlüsselpunkt!", 166 | "Daher die vielen Rassen, die unmöglich alle von dieser Erde stammen können.", 167 | "Anschliessend wurde die Erde als Strafkolonie genutzt.", 168 | "Unser Universum ist ja ein Perpetuum Mobile.", 169 | "Die Geheimbasen des Deutschen Reichs haben auch den Wiederaufbau Westdeutschlands organisiert.", 170 | "Ich sage nur Bipolarität des Universums.", 171 | "Was macht die Sonne uns vor, Implosion.", 172 | "Die Sonne ist kalt!", 173 | "Die Erde ist ja hohl.", 174 | "Das ist keine mongolische Mikroelektronik sondern deutsche Hochtechnologie!", 175 | "Ich kann mich in sekundenschnelle mit anderen Sternensystemen, Galaxien informieren.", 176 | "Das nächste Treffen findet an Führers Geburtstag statt.", 177 | "Und die sind zum Pluto, dem erdfernsten Planeten gestartet.", 178 | "Übrigens, meine Energiegruppe hat auch Kontakt zur Dritten Macht.", 179 | "Um in die innere Hohlwelt zu gelangen, muss ich 4000 KM Gesteinsmaterial überwinden.", 180 | "Hatten wir auch schon im 3. Reich.", 181 | "Ein versteckter Hinweis, dass der Mond in reichsdeutscher Hand nämlich ist.", 182 | "96 Flugzeuge * 60 Minuten * 14 Stunden * 40 Passagiere.", 183 | "Während des dritten Reiches war Nicola Tesla hier zu Besuch.", 184 | "Schwarze Sonne, bekannt!", 185 | "Ich nehme auch an, dass da auch das galaktische Imperium Aldebaran eine wesentliche Rolle spielt.", 186 | "Wir dürfen nicht mit irdischen Maßnahmen herangehen Leute, vergesst das nicht!", 187 | "Eine Art Monarchie oder weiß der Geier was.", 188 | "Nagelneue Flugscheiben.", 189 | "Flugscheibenkonstrukteur!", 190 | "Deutsche Raumfahrt ab 1934.", 191 | "Das hier ist nichts anderes als ein Strafplanet.", 192 | "Wie kämpfen Reichsdeutsche?", 193 | "Grüße aus der 9. Milchstraße.", 194 | "Es gibt eine Art galaktischer Konföderation in unserer Galaxis.", 195 | 196 | "Die hatten mehr Verluste als in Pearl Harbour, hihi.", 197 | "Eine ganz ekelhafte Waffe.", 198 | "Liegt im Krankenhaus, ich nehm an, dass sie ihn da mit Mikrowelle traktiert haben.", 199 | "Strahlenwaffen.. ist schon intelligenter, Mikrowelle, Skalarwelle.", 200 | "Wenn ich jetzt an Yellowstonepark denke, kann bald passieren, herrlich! Ich liebe ja Katastrophen.", 201 | "Ich finde Erdbeben schön.", 202 | "Wenn sich Risse auftun, ganze PKWs versinken, hehe – herrlich!", 203 | "Was richtet Luft an? Tornados!", 204 | "Was ist denn da wieder los? Wo ist meine Panzerfaust?", 205 | "Zerlegen macht Spaß!", 206 | "Internet ist ne schöne Waffe.", 207 | "Jetzt kommen wir zur Wetterbeeinflussung und -kriegsführung durch Skalarwellen.", 208 | "Ein Kamerad von mir musste da sein Leben lassen.", 209 | "Tödliche Organwellen.", 210 | "In Russland nennt man das heute die skalara Haubitze.", 211 | "Die sehr gefährliche amerikanische Lanzenviper (…) und der Mensch stirbt elendig innerhalb von 20 Minuten.", 212 | "Mögen sie in ihrem eigenen Blut erSAUFEN!", 213 | "Irgendwann ist Schluss mit lustig!", 214 | "So schön Waffen sind - es hat keine Sinn, Gewalt mit Gewalt zu begegnen.", 215 | "Übrigens, Spannung… Millionen von Volt - um das mal zu verdeutlichen!", 216 | "Die knallen durch!", 217 | "Die sind den Amis um mehrere Nasenlängen voraus.", 218 | "Und dann Himmel, Arsch und Zwirn!", 219 | "Die Russen verfügen über Monsterbomben.", 220 | "Viele Ökosysteme spielen heute schon verrückt.", 221 | "Die werden erhitzt und gehen kaputt.", 222 | "Nun wisst ihr auch, wie man künstlich Erdbeben auslöst.", 223 | "Solche seltenen Wetter-Skalar-Interferometer könnten Kugelblitze produzieren.", 224 | "Haarp-Projekt Alaska und anderes lässt grüßen.", 225 | "WAFFENSYSTEME! Da wirds interessant!", 226 | "Ich weiß auch, wie man sowas bauen kann - Mikrowellenterror und dergleichen mehr.", 227 | "Bis auf 200 Meter tief und mehr werden alle Hohlräume ausradiert.", 228 | "Knüppel aus dem Sack!", 229 | "Ich liebe Katastrophen!", 230 | "Da brauche ich keine Nuklearwaffen - nichtmal Mikrowelle.", 231 | "Oder ich lass die Fackelmänner los!", 232 | "Ich lache über Naturkatastrophen, die ich liebe!", 233 | "Vulkanausbrüche - was Schönes!", 234 | "Todesstrahlen, Todesstrahlen!", 235 | "Nuklear oder nicht-nuklear ist egal. Hauptsache alles ist zerstört.", 236 | "Es hat überhaupt keinen Sinn - der Tod überrascht Jeden!", 237 | "Zisch - Aus, weg war det - ein schöner Tod.", 238 | "Von wegen das Märchen über die desolate russische Armee - da kann ich nur lachen!", 239 | "Das sind natürlich dann schon fast Superbomben.", 240 | "Nuklearbomben sind Flöhe dagegen.", 241 | "Das sind einzigartige militärische Anwendungen.", 242 | "Heute werden wir über HAARP, sprich Wetterkriegsführung sprechen.", 243 | "Die Sowjets gackern nicht bevor das Ei gelegt ist.", 244 | "Man kann davon ausgehen, dass in jedem Neubaublock einer mit Mikrowelle experimentiert.", 245 | "Gegen Skalarwellen haben sie die Arschkarte - also die goldene.", 246 | "Mit Mikrowelle runterholen!", 247 | "Nach Möglichkeit mit wenig Blutvergiessen, vergesst das bitte nicht!", 248 | "Dabei denke ich an die Allee der Gehenkten.", 249 | "Ich kann aber auch, im Rahmen der Wetterkriegsführung Tornados künstlich erzeugen.", 250 | "Den Leuten wird speiübel, die fallen um.", 251 | "Man nennt das eine so genannte skalare Haubitze!", 252 | "Mikrowellenstrahler!", 253 | "Ist das bekannt HAARP, Alaska, Wetterkriegführung?", 254 | "Da bleibt von den Plattenbauten auch nichts mehr.", 255 | "Ne schöne Waffe, sollte man mal gegen die Loveparade einsetzen.", 256 | 257 | "Fußball… Gotteswillen - Opium fürs Volk saggich nur. Brot und Spiele. Iss was für Bekloppte.", 258 | "Letztlich war er aber nur eine zweibeinige Ertragsmaschine – man muss das mal so knallhart sagen.", 259 | "Die Wende war nicht plötzlich, die wurde schon von den Zionisten 1899 geplant – von den Illuminaten.", 260 | "Westliche Wertegemeinschaft und Demokratie sind auch aus meinem Wortschatz GE-STRI-CHEN!", 261 | "Das wird ja an den Schulen nicht mehr gelehrt.", 262 | "Eine gewöhnliche DILLGURKE – habter das gehört!", 263 | "Viele Frauen, die machen da Channeling und da kommt nur elektro-magnetischer Müll herüber.", 264 | "Die sind sehr empfänglich für Müll.", 265 | "Wird natürlich totgeschwiegen.", 266 | "Fußball… Gotteswillen - Opium fürs Volk saggich nur. Brot und Spiele. Iss was für Bekloppte.", 267 | "Das deutsche Volk verblödet – da gibt es ein Buch im Kopp-Verlag glaubich.", 268 | "Unterstes wird zu Oberstes gekehrt.", 269 | "Denken Sie zum Beispiel an die pervertierten Loveparade-Diskotheken und vieles mehr.", 270 | "Ja was sind denn das? Das sind Umschlagplätze für Drogen, Waffenhandel und Rotlicht-Milieu, mehr ist das nicht.", 271 | "Darauf setze ich einen Haufen.", 272 | "Wer die Lüge kennt und trotzdem nichts unternimmt, macht sich mitschuldig.", 273 | "Alles andere… Schrott!", 274 | "Wir werden verfolgt, vernichtet – von Isaak Krummbold.", 275 | "Es gibt noch andere bösartige Elemente, subversive Elemente – Volksschädlinge!", 276 | "Und der wurde vom Finanzjudentum auch nur ausgenutzt.", 277 | "Dafür musste er sterben.", 278 | "Nach dem Motto: Was nicht sein darf, nicht sein kann.", 279 | "Sie können alles was gelehrt wird zu 90% vergessen, noch… noch mehr!", 280 | "Besser ist immer der persönliche Kontakt, statt da den Elektrojuden zu nutzen.", 281 | "Internet ist so viel Schrott", 282 | "Naja.. bescheuert.", 283 | "Ja aus’n Negern! (…) Aus Schwarz wird nicht weiß!", 284 | "Die ganzen Darwinismus-Lügen.. vergesst es!", 285 | "Welch ein geistiger Dünnschiss saggich da nur!", 286 | "Was wird heute gelernt an den Schulen? Schrott! Müll!", 287 | "Eins ist aber jeden Fall ist Fakt, dass gewisse Kräfte versuchen die Rechte Szene (…) auseinanderzuplautzen.", 288 | "Bei Freimaurern, Illuminaten sagen wir mal (…) hat das alles eine Bedeutung.", 289 | "Man kann hinkommen, wo man will - alles Mist!", 290 | "Wenn man einmal in den Fängen der Ärzte ist, dann hat man verloren.", 291 | "Überall hat man dann die goldene Arschkarte.", 292 | "Schmeiß das aus dem Fenster!", 293 | "Energielobby, da ham was wieder, hähä!", 294 | "Wer GEZ zahlt ist selber dämlich.", 295 | "Geht mal ins Internet, Google-Suchmaschine, und gebt den Begriff Skalarwellen ein.", 296 | "Was machst du denn da wieder fürn Ödeldödel?!", 297 | "Das wäre ja dann wie bei der GEZ.", 298 | "Die würden bei mir alle in Physik die Note 100 kriegen.", 299 | "Was an der Schule natürlich nicht gelehrt wird und an den Universitäten auch nicht.", 300 | "Da kann der dämliche Ami nur träumen!", 301 | "Die armen Kinder, was aus denen werden soll - ja Mutanten, da hab ich auch kein Mitleid mehr!", 302 | "Bazillus Dummheit sag ich nur.", 303 | "Wisst Ihr eigentlich, wie die Dekadenz programmiert ist?", 304 | "Es funktioniert ja immer wieder - es gibt ja genug Verblödete.", 305 | "Wir leben in einer virtuellen Scheinwelt.", 306 | "Peverse Gehirne sind das, die sich sowas ausdenken!", 307 | "Ein dummes Volk lässt sich leichter beherrschen.", 308 | "Facebook, das ist alles was für Psychopathen meiner Meinung nach.", 309 | "Dissonanzen! Eine Dissonanz jagt die andere!", 310 | "Genau das haben die meisten nicht begriffen. Na ja, was soll man von Mutanten erwarten?", 311 | "Eine Welt voller Mutanten und Zombies mit einem IQ geringer als eine Dillgurke.", 312 | "Sie müssen schon Ihren Kopf jetzt zum Denken benutzen und nicht als Hutständer!", 313 | "Wir werden ja heute von Hacke bis Nacke belogen.", 314 | "Für mich ist das der Elektro-Jude.", 315 | "Das sind kranke Gehirne, aber es ist so.", 316 | "Scheiße gesellt sich zu scheiße!", 317 | "Und da braucht man sich nicht zu wundern, über die vielen Mutanten, die rumlaufen.", 318 | "Das sind Schmutzfinkjournalisten, die gehören an den Galgen.", 319 | "Es rollen sich mir die Fussnägel auf, wenn ich ins Internet gehe und gucke unter Skalarwelle.", 320 | "Mindcontrol, Bewusstseinskontrolle, versklavte Gehirne und so weiter und so fort.", 321 | "Nur Dreck, Nur Dreck, und der Bürger sieht sich das an!", 322 | "Unsinnige Talkshows, wenn ich das schon sehe - Uääääh!", 323 | "Kraftlose Schwätzer, die werden untergehen.", 324 | "Die doofen Amis, die trauen sich da nicht ran, ist doch klar.", 325 | "Handy an die Wand schmeissen, weg damit!", 326 | 327 | "Wenn ich meine bisheriges Leben betrachte, dann stelle ich fest, dass es Höhen und Tiefen gab.", 328 | "Ich muss auch dazu sagen, ich bin auch Sternbild Skorpion – da gibt es keine Grauzonen, nur Schwarz oder Weiß.", 329 | "Mein nächstes Buch ist auch schon fertig: Die schwarze Macht.", 330 | "Eine Zeit meiner Sammlertätigkeit begann.", 331 | "Ich hab auch nur für die Fächer was getan, die mich interessiert haben – gab dann nur Einsen oder Dreien.", 332 | "Ab meinem 14 Lebensjahr verfügte ich bereits über eine beachtliche geologische und gestaltete an Schulen entsprechende Ausstellungen, welche eine hohe Resonanz hatten.", 333 | "Seit meinem 15. Lebensjahr wohnte ich in der Reichshauptstadt Berlin.", 334 | "Sämtliche Naturwissenschaften Eins, wie sich das gehört.", 335 | "Während dieser Zeit besuchte ich zwei Jahre lang die Abendschule, 11. und 12. Klasse, so mal nebenbei.", 336 | "Das hab ich extern so neben… aus dem Ärmel gemacht.", 337 | "Da bin ich übrigens auch Mitglied, Prä-Astronautik- Äntschiens Äh… Ästronaut Society, mit Urkunde (…) und leitete die Uranier-Gruppe Astrophysik.", 338 | "Mein Kampf gegen die Lügen der Alliierten – das war der Grundstein.", 339 | "Dort war ich kein geringer als Hauptstrahlenschutzbeauftragter für die gesamte ehemalige DDR.", 340 | "Die ABC-Waffen gingen alle durch meine Hand, also Massenvernichtungswaffen.", 341 | "Finanzdienstleistungen – alles son Schnullifax, da weiß ich, wie die Verbrecher arbeiten.", 342 | "Kurz nach der Wende gründete ich die Fachgruppe Rätsel der Erdgeschichte, die sich auch mit Physik und Paläoastronautik beschäftigte.", 343 | "Eines Tages bekam ich in diesem Zusammenhang Kontakt zum Templerorden, wo ich heute leitend tätig bin.", 344 | "Durch jenen Verlag, und das ist jetzt ganz wichtig, gelangte ich an Schriften und Videos zum Thema Reichsdeutsche Hochtechnologie.", 345 | "Ich muss nur dazu sagen, in Naturwissenschaften kenne ich mich überall sehr gut aus, da macht mir so schnell keiner was vor.", 346 | "Sprache beherrsche ich – mehrere Fremdsprachen, ist für mich aber nur Mittel zum Zweck.", 347 | "Sportarten guck ich nur das, die ich selbst betrieben habe, bis zur Meisterschaft: Schach, Fechten, Degen, Florett, Schwert, Schießen und Military-Reiten, alles andere kann mich keiner hinterm Ofen vorlocken.", 348 | "Im erstgenannten Buch, Hochtechnologie im Dritten Reich, habe ich nicht nur physikalisch, mathematisch reichsdeutsche Technologien beschrieben, sondern räumte auch die hörigen alliierten Lügen gegen das Deutsche Reich auf.", 349 | "Angst und Unmöglichkeit sind aus meinem Wortschatz gestrichen.", 350 | "So lange ich lebe wird mein Kampf gegen die Alliierten anhalten.", 351 | "Napoleon Bonaparte ist auch eines meine Vorbilder, militärisch.", 352 | "Mich wundert… kann nix mehr erschüttern.", 353 | "Ich denke ja ganzheitlich vernetzt, nicht wahr!?", 354 | "Ich habe so viel Chaoten in letzter Zeit kennen gelernt, also… Schade um die Zeit, da hätte ich schon hundert Differentialgleichungen lösen können.", 355 | "Namen sind für mich Schall und Rauch, für mich sind Zahlen wesentlich.", 356 | "Ich selber bin die graue Eminenz.", 357 | "Gerichte und Polizei sind für mich Fremdwörter.", 358 | "Ich hab den Schutz der Dritten Macht!", 359 | "Ich genieße den Templerschutz und den Schutz der National Security Eygenzi.", 360 | "Bei mir in der Energiegruppe, die Leute, die nicht in der Lage sind ein einfaches Integral zu lösen, die schmeiße ich gnadenlos schon raus.", 361 | "Wenn andere die Fenster putzen (…), da löse ich partielle Differentialgleichungen.", 362 | "Wenn man den Algorithmus erkannt hat, und ich hab ihn erkannt, erspare ich mir zehntausende Seiten zu lesen.", 363 | "Ich kann Zeit beschleunigen, ich kann Zeit aber auch verlangsamen.", 364 | "Ich halt es mit Napoleons Worten: Angst und Unmöglichkeit sind aus meinem Wortschatz gestrichen!", 365 | "Wir sind die Top-Ten, auf der ganzen Erde.", 366 | "Wer kann das, außer mir?", 367 | "Das hole ich locker wieder rein mit meinen Schriften.", 368 | "Ich beherrsche die englische Sprache in Wort, Bild und Schrift.", 369 | "Aus tausend Seiten mach ich euch eine.", 370 | "Man sollte sich mit Putin gut stellen - Ich kenne ihn übrigens persönlich, komme mit ihm gut klar.", 371 | "Die Meisten begreifen es leider nicht, darauf kann ich natürlich keine Rücksicht nehmen.", 372 | "Auch nachzulesen in meinem Bestseller-Buch.", 373 | "Nicht umsonst ist ja eines meiner Bücher ein Bestseller.", 374 | "Ich sitze auf der Spitze der Pryramide.", 375 | 376 | "Was da an Mimikry ausgeübt wird (…) das was ja im Tierreich bekannt.", 377 | "Im Indo-Pazifik kann man sie lebend finden.", 378 | "Wer kennt Mastodon?", 379 | "Trilobiten Dreilapp-Krebse, offiziell ausgestorben, hahahaha!", 380 | "Ah.. die fette Kuh erhebt sich.. sehr schön. Na iss doch wahr.", 381 | "Viehzeug muss gepudert werden!", 382 | "Wenn man seine Katze in den Mikrowellenherd zum Trocknen reinschiebt sieht man die Wirkung am Besten.", 383 | "Das arme Tier, naja gut - was solls?", 384 | "Täglich sterben tausende von Tierarten aus.", 385 | 386 | "Was bedeutete die Wende für mich? Zunächst einmal nur Nachteile.", 387 | "Zu viel Flüssigkeit.. der Regen, der reicht schon.", 388 | "Wasser ist Gift!", 389 | "Sonst krieg ich quadratische Augen!", 390 | "Ich selber bin ein stinkenfauler Mensch was körperliche Arbeit angeht.", 391 | "Was ist denn das für Musik?", 392 | "Ich bin ein Mensch, wenn ich schon Schnee sehe, kriege ich ’ne Erkaeltung.", 393 | "Ich hasse Schnee, ist was fuer dumme Bauern.", 394 | "Meine Temperaturen sind 40 Grad plus und 100% Luftfeuchtigkeit.", 395 | "Alles was unter 20 Grad ist, ist fuer mich Frost.", 396 | "Die Tür schon wieder!", 397 | "Da komme ich mir vor wie eine tibetanische Gebetsmuehle oder tausend Studenten.", 398 | "Die Tür, ja was ist denn das?", 399 | 400 | "Es gibt keine Zufälle.", 401 | "Meine Meinung – dazu stehe ich!", 402 | "Spaß muss sein, Leute!", 403 | "Ich fürchte, wir müssen völlig umdenken!", 404 | "Dann haste die diamantene Arschkarte.", 405 | "Wir leben in einer sehr interessanten Zeit.", 406 | "Wir sind nicht umsonst hier hineininkarniert oder hineingeboren.", 407 | "Damit danke ich für die Aufmerksamkeit.", 408 | "Das ist wieder ne Sache für sich.", 409 | "Aber man latscht nur einmal auf die Harke.", 410 | "Jetzt kommen wir zum Schluss der heutigen Lektion.", 411 | "Man kann nicht auf allen Hochzeiten tanzen.", 412 | "Alles vermeidbare Risiken!", 413 | "Deshalb müssen wir sie mit aufklären.", 414 | "Es gibt dort ne Menge Häkchen und Ösen – man kann geteilter Meinung sein.", 415 | "Die Meinungen divergieren sehr sehr stark.", 416 | "Da muss man natürlich die Kräfte erkennen.", 417 | "Ruhe da hinten!", 418 | "Muss auch militärische Ordnung herrschen!", 419 | "Haltet euch fest!", 420 | "Hähä!", 421 | "Ein Wahnsinn ja.", 422 | "Muss ich noch deutlicher werden? Ich glaube nicht!", 423 | "Das muss man begreifen, ist ja wirklich leicht.", 424 | "Wer das begreift, der weiß schon sehr viel.", 425 | "Das ist wichtig zu wissen.", 426 | "Das ist jetzt das, was Sie sich merken sollten.", 427 | "Nichts einfacher als das.", 428 | "Repetitio est mater studiorum!", 429 | "Ich halte mich auch kurz, denn in der Kürze liegt die Würze.", 430 | "Man muss schon wirklich zwischen Dichtung und Wahrheit differenzieren können!", 431 | "Für die Nichtwissenden mag das wie Glockengeläut in den Ohren klingen.", 432 | "Das erfordert natürlich etwas Gehirnschmalz.", 433 | "Nichts ist unglaublicher als die Wahrheit.", 434 | "Spass muss sein.", 435 | "Zack, einfach ist das.", 436 | "Kein Problem!", 437 | "Da staunt ihr, was?", 438 | "Mein Gott!", 439 | "Da haben wirs mit einem Satz!", 440 | "So muss das sein!", 441 | "Ja, Heil!", 442 | "Ein zweischeidiges Schwert,ne?", 443 | "Die Zusammenhänge sind glasklar!", 444 | "Muss man schon dann kümmern, wenn man dran kommen will!", 445 | "Klar?!", 446 | "Muss mann wissen!", 447 | "Vergessen Sie’s!", 448 | "Bekannt ja?", 449 | "Alles andere ist unnötig.", 450 | "Wer weiß das? Wieder keiner!", 451 | "Sehr Gut!", 452 | "Klar, ne?!", 453 | "Silentium!", 454 | "Gibt es. darf man nicht außer Acht lassen.", 455 | "So einfach ist das, muss man nur wissen.", 456 | "So einfach ist das.", 457 | "Es gibt keine Zufälle!", 458 | "Da werden Sie staunen!", 459 | "Muss man natürlich wissen.", 460 | "Wissen auch die Wenigsten.", 461 | "Gibt’s interessante Fachliteratur.", 462 | "Ruhe!", 463 | 464 | "Alle 100 Jahre findet ein großer Illuminati-Kongress statt, da werden die Ziele für die nächsten 100 Jahre gesteckt, auch der Euro.", 465 | "Darf er nicht drüber erzählen, sonst würde er kein Geld mehr bekommen für seine kostspieligen Reisen.", 466 | "Aus Sicherheitsgründen habe ich keine andere Namen außer meinem genannt – nach dem Motto:", 467 | "Das kommt ja erst nächstes mal, da muss man das Gehirn schon arbeiten lassen.", 468 | "Aber ich schätze mal, wir stehen kurz vor einem Wendepunkt.", 469 | "Ja.. summ summ summ.", 470 | "Der war sehr gut.", 471 | "Konfuzius, das ist der Status Quo.", 472 | "Mindestens sind das reine Vegetarier, was mir schon sympathisch ist.", 473 | "Wie heißt er? Peter Fitzek? Hab ich kennen gelernt da.. da schließt sich der Kreis!", 474 | "Peter Fitzek (…), der kennt wieder die Leute meiner Energiegruppen.", 475 | "Ich beobachte die Szene aber weiter.", 476 | "Das ist wie mit der Drehscheibe, man lernt Leute kennen – hochinteressant muss ich sagen!", 477 | "Such is life.", 478 | "Wir machen’s wie mit der Schiebewurst - das Beste immer zum Schluss.", 479 | "Er war auch in den Vereinigten Emiraten, bloß da hat man ihn auch nur betrogen, beschissen.", 480 | "Ich habs gesehen Fata Morgana, Namib Wüste.", 481 | "Denn Hunger und Durst macht böse.", 482 | "Übrigens gibt es kein Gut und kein Böse in dem Sinne.", 483 | "Zuerst probiert man dekadente Musik in Sydney, Australien aus.", 484 | "Ähnliches ist ja auch in Deutschland geplant, Vorsicht!", 485 | "Am besten einen Stiefel Whisky trinken.", 486 | "Mit Dynamit beginnt man den Tag dynamisch!", 487 | "Arme und Beine bilden eine rotierende Scheibe, die Ohren flattern im Wind und das Arschloch bildet den höchsten Punkt.", 488 | "Wie mein Templerbruder vom Altorden Norbert Jürgen-Ratthofer zu sagen pflegte.", 489 | "Wisst Ihr was das heißt? Eine Million Jahre?", 490 | "Es gibt ein Prag - in Bayern.", 491 | "Das Wort Zufall ist aus meinem Wortschatz gestrichen.", 492 | "Die lachen uns aus!", 493 | "Und zur Not hilft eben ein Marsch. Fußmarsch, Wolfsangelmarsch.", 494 | "Das ist geheimes Templerwissen.", 495 | "Anschließend machen wir ’ne Raucherpause.", 496 | "Na, wer hat Warsteiner bestellt?", 497 | "Die kann man erwerben gegen 2 Euro.", 498 | "Es kommen gigantische Umwälzungen auf uns.", 499 | "Die Inselaffen hasse ich sowieso!", 500 | "Rotwein ist gesund - Templerwein!", 501 | "Das ist auch gegen Krebs und alles mögliche.", 502 | "Alles ist vorhersehbar!", 503 | "3 mal Storgram reinen Alkohol!", 504 | "Das schirmt gegen radioaktive Strahlung ab.", 505 | "Irrtum! Gezielte Desinformation!", 506 | ] 507 | -------------------------------------------------------------------------------- /scripts/sudo_ger.coffee: -------------------------------------------------------------------------------- 1 | # Description: 2 | # sudo 3 | # 4 | # Commands: 5 | # hubot sudo - Zwing hubot dazu, etwas zu tun 6 | # 7 | # Author: 8 | # kiliankoe 9 | 10 | module.exports = (robot) -> 11 | robot.respond /sudo (.*)/i, (msg) -> 12 | befehl = msg.match[1] 13 | msg.send('Ok! Ich ' + befehl) 14 | -------------------------------------------------------------------------------- /scripts/version.coffee: -------------------------------------------------------------------------------- 1 | # Description: 2 | # version 3 | # 4 | # Dependencies: 5 | # git-rev 6 | # 7 | # Commands: 8 | # hubot version - Welche Version von hubot läuft gerade? 9 | # 10 | # Author: 11 | # kiliankoe 12 | 13 | git = require 'git-rev' 14 | 15 | module.exports = (robot) -> 16 | robot.respond /version/i, (msg) -> 17 | git.short (hash) -> 18 | msg.send hash 19 | -------------------------------------------------------------------------------- /util.coffee: -------------------------------------------------------------------------------- 1 | # this is not a plugin, but some helper funtions for working with hubot 2 | 3 | module.exports.react = (res, emoji) -> 4 | if res.robot?.adapter?.client?.web?.reactions?.add? 5 | res.robot.adapter.client.web.reactions.add(emoji, {channel: res.message.room, timestamp: res.message.id}) 6 | else 7 | res.send emoji 8 | --------------------------------------------------------------------------------