├── .gitignore ├── Dockerfile ├── external-scripts.json ├── bin ├── hubot └── hubot.cmd ├── .editorconfig ├── data └── bday.json ├── scripts ├── sudo_ger.coffee ├── version.coffee ├── btc.coffee ├── elbe.coffee ├── maintain.coffee ├── drsommer.coffee ├── geruecht.coffee ├── random.coffee ├── fsr.coffee ├── apbdoor.coffee ├── example.coffee ├── simpleresponses.coffee ├── firat.coffee ├── mensa.coffee ├── porn.coffee └── stoll.coffee ├── util.coffee ├── run.sh ├── package.json ├── LICENSE └── README.md /.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 | -------------------------------------------------------------------------------- /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 | -------------------------------------------------------------------------------- /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 | -------------------------------------------------------------------------------- /.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 | -------------------------------------------------------------------------------- /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 | -------------------------------------------------------------------------------- /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 | -------------------------------------------------------------------------------- /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 | -------------------------------------------------------------------------------- /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/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 | -------------------------------------------------------------------------------- /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 | -------------------------------------------------------------------------------- /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/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/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 | -------------------------------------------------------------------------------- /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 | -------------------------------------------------------------------------------- /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/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/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 | -------------------------------------------------------------------------------- /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 | -------------------------------------------------------------------------------- /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/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/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/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/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/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/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 | --------------------------------------------------------------------------------