From 51b7e05596256bcc7c610f9ed8d590f9b3a2ea46 Mon Sep 17 00:00:00 2001 From: Andreas Neue Date: Sun, 10 Jan 2016 18:45:21 +0100 Subject: [PATCH] init --- Dockerfile | 20 ++ LICENSE | 19 ++ README.md | 11 + main.go | 137 ++++++++++ modules/fortune/fortune.go | 53 ++++ modules/news/news.go | 76 +++++ modules/saytime/saytime.go | 84 ++++++ modules/sc/sc.go | 223 +++++++++++++++ modules/stoll/stoll.go | 548 +++++++++++++++++++++++++++++++++++++ newsfeeds.conf | 10 + util/util.go | 33 +++ 11 files changed, 1214 insertions(+) create mode 100644 Dockerfile create mode 100644 LICENSE create mode 100644 README.md create mode 100644 main.go create mode 100644 modules/fortune/fortune.go create mode 100644 modules/news/news.go create mode 100644 modules/saytime/saytime.go create mode 100644 modules/sc/sc.go create mode 100644 modules/stoll/stoll.go create mode 100644 newsfeeds.conf create mode 100644 util/util.go diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..9bfc9d0 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,20 @@ +FROM ubuntu:15.10 +MAINTAINER Andreas Neue + +RUN apt-get -y --force-yes update +RUN apt-get -y --force-yes upgrade +RUN apt-get install -y ca-certificates +RUN apt-get install -y fortune vim +RUN apt-get clean + +RUN mkdir /flokatirc + +COPY flokatirc /flokatirc/flokatirc +COPY newsfeeds.conf /flokatirc/newsfeeds.conf +COPY fortunes /flokatirc/fortunes + +ENV PATH $PATH:/flokatirc + +WORKDIR /flokatirc + +CMD [ "/flokatirc/flokatirc", "-server=irc.dnix.de:6667", "-name=Flokati", "-chan=#northbrigade", "-nsname=N", "-nspass=t0ps3cr37" ] diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..8ee978b --- /dev/null +++ b/LICENSE @@ -0,0 +1,19 @@ +Copyright (c) 2015,2016 Andreas Neue + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies +of the Software, and to permit persons to whom the Software is furnished to do +so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/README.md b/README.md new file mode 100644 index 0000000..eda34fb --- /dev/null +++ b/README.md @@ -0,0 +1,11 @@ +## flokatirc +*an incredibly friendly, silver-tongued, and elegantly proportioned IRC community bot* + +#### LICENSE + +See `LICENSE` file. + +#### QUICK INSTALL + +`# go build flokatirc` + diff --git a/main.go b/main.go new file mode 100644 index 0000000..d79cf0e --- /dev/null +++ b/main.go @@ -0,0 +1,137 @@ +// vim:ts=4:sts=4:sw=4:noet:tw=72 +// +// flokatirc +// +// Copyright (c) 2015 Andreas Neue + +package main + +import ( + "flag" + "log" + "strings" + "time" + + "github.com/nickvanw/ircx" + "github.com/sorcix/irc" + + modfortune "flokatirc/modules/fortune" + modnews "flokatirc/modules/news" + modsaytime "flokatirc/modules/saytime" + modsc "flokatirc/modules/sc" + modstoll "flokatirc/modules/stoll" +) + +var ( + name = flag.String("name", "Flokati", "Nickname to use") + server = flag.String("server", "chat.freenode.org:6667", "Host:Port to connect to") + channels = flag.String("chan", "#test", "Channels to join") + nsname = flag.String("nsname", "NickServ", "NickServ name") + nspass = flag.String("nspass", "", "NickServ password") + modules = flag.String("modules", "news,starcitizen,fortune,saytime", "Module list, comma separated") +) + +func init() { + flag.Parse() +} + +func main() { + sayCh := make(chan string, 1024) + + //bot := ircx.Classic(*server, *name) + cfg := ircx.Config{User: *name, MaxRetries: 10} + bot := ircx.New(*server, *name, cfg) + log.Println("Logging in") + if err := bot.Connect(); err != nil { + log.Panicln("Unable to dial IRC Server:", err) + } + + //mods := strings.Split(*modules, ",") + //TODO: implement more robust list parsing + + //XXX: this sucks + if strings.Contains(*modules, "news") { + go modnews.Init(sayCh, "newsfeeds.conf") + } + if strings.Contains(*modules, "starcitizen") { + go modsc.Init(sayCh) + } + if strings.Contains(*modules, "fortune") { + go modfortune.Init(sayCh) + } + if strings.Contains(*modules, "stoll") { + go modstoll.Init(sayCh) + } + if strings.Contains(*modules, "saytime") { + go modsaytime.Init(sayCh) + } + + go func() { + for { + var targets string + line := strings.Split(<-sayCh, "\n") + if len(line) < 2 { + continue + } + if line[0] != "*" { + targets = line[0] + } else { + targets = *channels + } + for _, tar := range strings.Split(targets, ",") { + bot.Sender.Send(&irc.Message{ + Command: irc.PRIVMSG, + Params: []string{tar}, + Trailing: line[1], + }) + time.Sleep(1 * time.Second) + } + } + }() + + RegisterHandlers(bot) + bot.HandleLoop() + log.Println("Exiting") +} + +func RegisterHandlers(bot *ircx.Bot) { + log.Println("Registering handlers") + bot.HandleFunc(irc.RPL_WELCOME, RegisterConnect) + bot.HandleFunc(irc.PING, PingHandler) + bot.HandleFunc(irc.PRIVMSG, PrivmsgHandler) +} + +func RegisterConnect(s ircx.Sender, m *irc.Message) { + if *nspass != "" { + log.Printf("Authenticating with NickServ: %v, %v", *name, *nspass) + s.Send(&irc.Message{ + Command: irc.PRIVMSG, + Params: []string{*nsname}, + Trailing: "IDENTIFY " + *name + " " + *nspass, + }) + } + log.Printf("Joining channels: %v", *channels) + for _, ch := range strings.Split(*channels, ",") { + s.Send(&irc.Message{ + Command: irc.JOIN, + Params: []string{ch}, + }) + } +} + +func PingHandler(s ircx.Sender, m *irc.Message) { + log.Println("PingPong") + s.Send(&irc.Message{ + Command: irc.PONG, + Params: m.Params, + Trailing: m.Trailing, + }) +} + +func PrivmsgHandler(s ircx.Sender, m *irc.Message) { + //TODO: implement message handler table + modsc.HandleMessage(m) + modfortune.HandleMessage(m) + modstoll.HandleMessage(m) + modsaytime.HandleMessage(m) +} diff --git a/modules/fortune/fortune.go b/modules/fortune/fortune.go new file mode 100644 index 0000000..e45ea07 --- /dev/null +++ b/modules/fortune/fortune.go @@ -0,0 +1,53 @@ +// vim:ts=4:sts=4:sw=4:noet:tw=72 + +package fortune + +import ( + "bytes" + "fmt" + "log" + "os/exec" + "strings" + + "github.com/sorcix/irc" +) + +var ( + sayCh chan string +) + +func Init(ch chan string) { + log.Println("Initializing fortune module") + sayCh = ch +} + +func HandleMessage(m *irc.Message) { + tok := strings.Split(m.Trailing, " ") + if len(tok) < 1 { + return + } + switch tok[0] { + case "!fortune": + fortune() + default: + } +} + +func fortune() { + cmd := exec.Command("/usr/games/fortune", "/flokatirc/fortunes/") + var out bytes.Buffer + cmd.Stdout = &out + err := cmd.Run() + if err != nil { + println(err) + return + } + s := out.String() + s = strings.Replace(s, "\r", "", -1) + s = strings.Replace(s, "\t", " ", -1) + for _, l := range strings.Split(s, "\n") { + if l != "" { + sayCh <- fmt.Sprintf("*\n%s", l) + } + } +} diff --git a/modules/news/news.go b/modules/news/news.go new file mode 100644 index 0000000..e2c4c59 --- /dev/null +++ b/modules/news/news.go @@ -0,0 +1,76 @@ +// vim:ts=4:sts=4:sw=4:noet:tw=72 +// +// This code is mostly derived from the example code by Jim Teeuwen +// and is subject to the CC0 1.0 Universal (CC0 1.0) Public Domain Dedication +// license. + +package news + +import ( + "bufio" + "errors" + "fmt" + "io" + "log" + "os" + "time" + + rss "github.com/jteeuwen/go-pkg-rss" + "github.com/jteeuwen/go-pkg-xmlx" +) + +var sayCh chan string +var hideOutput = true + +func Init(ch chan string, path string) { + log.Printf("Initializing news module") + sayCh = ch + file, err := os.Open(path) + if err != nil { + log.Fatal(err) + } + defer file.Close() + scanner := bufio.NewScanner(file) + <-time.After(60 * time.Second) + for scanner.Scan() { + go PollFeed(scanner.Text(), 5, charsetReader) + } + if err := scanner.Err(); err != nil { + log.Fatal(err) + } + time.Sleep(60 * time.Second) + hideOutput = false +} + +func PollFeed(uri string, timeout int, cr xmlx.CharsetFunc) { + feed := rss.New(timeout, true, chanHandler, itemHandler) + for { + log.Printf("Polling feed: %s", uri) + if err := feed.Fetch(uri, cr); err != nil { + log.Printf("[e] %s: %s", "*", uri, err) + //sayCh <- fmt.Sprintf("%s\n[e] %s: %s", "*", uri, err) + return + } + <-time.After(time.Duration(feed.SecondsTillUpdate() * 1e9)) + } +} + +func chanHandler(feed *rss.Feed, newchannels []*rss.Channel) { + //sayCh <- fmt.Sprintf("%s\n%d new channel(s) in %s", "*", len(newchannels), feed.Url) +} + +func itemHandler(feed *rss.Feed, ch *rss.Channel, newitems []*rss.Item) { + if hideOutput { + return + } + for _, ni := range newitems { + sayCh <- fmt.Sprintf("%s\n*** [NEWS] %v - %v", "*", ni.Title, ni.Links[0].Href) + } +} + +func charsetReader(charset string, r io.Reader) (io.Reader, error) { + if charset == "ISO-8859-1" || charset == "iso-8859-1" { + return r, nil + } + return nil, errors.New("Unsupported character set encoding: " + charset) +} diff --git a/modules/saytime/saytime.go b/modules/saytime/saytime.go new file mode 100644 index 0000000..2900bfc --- /dev/null +++ b/modules/saytime/saytime.go @@ -0,0 +1,84 @@ +// vi:ts=4:sts=4:sw=4:noet:tw=72 + +package sc + +import ( + "fmt" + "log" + "strings" + "time" + + "github.com/sorcix/irc" +) + +var sayCh chan string + +func Init(ch chan string) { + log.Println("Initializing saytime module") + sayCh = ch +} + +func HandleMessage(m *irc.Message) { + tok := strings.Split(m.Trailing, " ") + if len(tok) < 1 { + return + } + switch tok[0] { + case "!time": + show() + //case "!q": + // show() + default: + } +} + +func show() { + t := time.Now() + h := t.Hour() + tzcorrect := 1 + h = h + tzcorrect + m := t.Minute() + s := "Es ist " + switch { + case m < 3: + s += fmt.Sprintf("%s Uhr\n", sayhour(h)) + case m < 8: + s += fmt.Sprintf("fünf nach %s\n", sayhour(h)) + case m < 13: + s += fmt.Sprintf("zehn nach %s\n", sayhour(h)) + case m < 18: + s += fmt.Sprintf("viertel nach %s\n", sayhour(h)) + case m < 23: + s += fmt.Sprintf("zwanzig nach %s\n", sayhour(h)) + case m < 28: + s += fmt.Sprintf("fünf vor halb %s\n", sayhour(h+1)) + case m < 33: + s += fmt.Sprintf("halb %s\n", sayhour(h+1)) + case m < 38: + s += fmt.Sprintf("fünf nach halb %s\n", sayhour(h+1)) + case m < 43: + s += fmt.Sprintf("zehn nach halb %s\n", sayhour(h+1)) + case m < 48: + s += fmt.Sprintf("viertel vor %s\n", sayhour(h+1)) + case m < 53: + s += fmt.Sprintf("zehn vor %s\n", sayhour(h+1)) + case m < 58: + s += fmt.Sprintf("fünf vor %s\n", sayhour(h+1)) + default: + s += fmt.Sprintf("%s Uhr\n", sayhour(h+1)) + } + sayCh <- fmt.Sprintf("*\n%s", s) + +} + +func sayhour(h int) string { + words := [...]string{"zwölf", "eins", "zwei", "drei", "vier", "fünf", "sechs", "sieben", "acht", "neun", "zehn", "elf"} + for { + if h > 11 { + h = h - 12 + } else { + break + } + } + return words[h] +} diff --git a/modules/sc/sc.go b/modules/sc/sc.go new file mode 100644 index 0000000..dc5d14b --- /dev/null +++ b/modules/sc/sc.go @@ -0,0 +1,223 @@ +// vim:ts=4:sts=4:sw=4:noet:tw=72 + +package sc + +import ( + "encoding/json" + "fmt" + "io/ioutil" + "log" + "net/http" + "net/url" + "regexp" + "strconv" + "strings" + "time" + + "flokatirc/util" + + "github.com/sorcix/irc" +) + +const ( + API_URL = "https://robertsspaceindustries.com/api" + API_METHOD = "/stats/getCrowdfundStats" + QUERY_CIT_URL = "https://robertsspaceindustries.com/citizens/" + QUERY_ORG_URL = "https://robertsspaceindustries.com/orgs/" + RE_CIT_NAME = `
\s*

\s*(.*)\s*

\s*

` + RE_CIT_RECORD = `

\s*UEE Citizen Record\s*#(.*)` + RE_CIT_HANDLE = `

\s*Handle name\s*(.*)\s*

` + RE_CIT_ORG = `(.*)` + RE_CIT_SID = `Spectrum Identification \(SID\)\s*([A-Z0-9]*)` + RE_CIT_RANK = `Organization rank\s*(.*)` + RE_ORG_NAME = `

(.*) ?/ ?` + RE_ORG_COUNT = `(.*) member` + RE_ORG_MODEL = `
  • (.*)
  • ` + RE_ORG_FOCUS = `
      \s*
    • \s*.*\s*
      \s*
      (.*)
      \s*\s*
      \s*
    • \s*
    • \s*.*\s*
      \s*
      (.*)
      \s*\s*
      \s*
    • \s*
    ` + RE_ORG_COMM = `
  • (.*)
  • ` + FANS_INT = 1000 + FLEET_INT = 1000 + FUNDS_INT = 10000 +) + +var ( + sayCh chan string + fans = 0 + fleet = 0 + funds = 0 +) + +func Init(ch chan string) { + log.Println("Initializing sc module") + sayCh = ch + go scrapeLoop() +} + +func HandleMessage(m *irc.Message) { + tok := strings.Split(m.Trailing, " ") + if len(tok) < 1 { + return + } + switch tok[0] { + case "!scstats": + showScStats() + case "!cit": + if len(tok) > 1 { + showCitizen(tok[1]) + } + case "!org": + if len(tok) > 1 { + showOrganization(tok[1]) + } + default: + } +} + +func toInt(v interface{}) int { + switch v.(type) { + case int: + return v.(int) + case float64: + return int(v.(float64)) + case string: + ret, _ := strconv.Atoi(v.(string)) + return ret + default: + return 0 + } +} + +func scrapeLoop() { + for { + scraper() + time.Sleep(1 * time.Minute) + } +} + +func scraper() { + var data interface{} + + log.Println("Scraping SC stats") + resp, err := http.PostForm(API_URL+API_METHOD, + url.Values{"fans": {"true"}, "fleet": {"true"}, "funds": {"true"}}) + if err != nil { + log.Printf("Error: %v", err) + return + } + defer resp.Body.Close() + body, err := ioutil.ReadAll(resp.Body) + if err != nil { + log.Printf("Error: %v", err) + return + } + err = json.Unmarshal(body, &data) + if err != nil { + log.Printf("Error: %v", err) + return + } + stats := data.(map[string]interface{})["data"].(map[string]interface{}) + //fmt.Println(stats["fans"].(type)) + curFans := toInt(stats["fans"]) + curFleet := toInt(stats["fleet"]) + curFunds := toInt(stats["funds"]) / 100 + + nextFans := ((fans / FANS_INT) * FANS_INT) + FANS_INT + nextFleet := ((fleet / FLEET_INT) * FLEET_INT) + FLEET_INT + nextFunds := ((funds / FUNDS_INT) * FUNDS_INT) + FUNDS_INT + + if curFans >= nextFans { + sayCh <- "*\n*** [SC] Star Citizens: " + util.NumberToString(curFans, '.') + } + if curFleet >= nextFleet { + sayCh <- "*\n*** [SC] The UEE Fleet: " + util.NumberToString(curFleet, '.') + } + if curFunds >= nextFunds { + sayCh <- "*\n*** [SC] Funds raised: " + util.NumberToString(curFunds, '.') + } + + fans = curFans + fleet = curFleet + funds = curFunds +} + +func showScStats() { + sayCh <- "*\n*** SC User and Funding Stats ###" + sayCh <- fmt.Sprintf("*\nFans: %s", util.NumberToString(fans, '.')) + sayCh <- fmt.Sprintf("*\nFleet: %s", util.NumberToString(fleet, '.')) + sayCh <- fmt.Sprintf("*\nFunds: $ %s", util.NumberToString(funds, '.')) +} + +func showCitizen(handle string) { + resp, err := http.Get(QUERY_CIT_URL + handle) + if err != nil { + log.Printf("Error: %v", err) + return + } + defer resp.Body.Close() + body, err := ioutil.ReadAll(resp.Body) + if err != nil { + log.Printf("Error: %v", err) + return + } + reName := regexp.MustCompile(RE_CIT_NAME) + reRecord := regexp.MustCompile(RE_CIT_RECORD) + reHandle := regexp.MustCompile(RE_CIT_HANDLE) + reOrg := regexp.MustCompile(RE_CIT_ORG) + reSid := regexp.MustCompile(RE_CIT_SID) + reRank := regexp.MustCompile(RE_CIT_RANK) + name := reName.FindStringSubmatch(string(body)) + record := reRecord.FindStringSubmatch(string(body)) + handle_ := reHandle.FindStringSubmatch(string(body)) + org := reOrg.FindStringSubmatch(string(body)) + sid := reSid.FindStringSubmatch(string(body)) + rank := reRank.FindStringSubmatch(string(body)) + if len(name) > 1 { + sayCh <- "*\n*** Citizen Info ***" + sayCh <- "*\n" + "Name: " + string(name[1]) + " [" + string(handle_[1]) + "]" + sayCh <- "*\n" + "URL: " + QUERY_CIT_URL + string(handle_[1]) + sayCh <- "*\n" + "UEE #: " + string(record[1]) + if len(org) > 1 { + sayCh <- "*\n" + "Organization: " + string(org[1]) + " [" + string(sid[1]) + "]" + sayCh <- "*\n" + "Rank: " + string(rank[1]) + } else { + sayCh <- "*\n" + "Organization: " + } + } else { + sayCh <- "*\n" + "*** No Such Citizen ***" + } +} + +func showOrganization(handle string) { + resp, err := http.Get(QUERY_ORG_URL + handle) + if err != nil { + log.Printf("Error: %v", err) + return + } + defer resp.Body.Close() + body, err := ioutil.ReadAll(resp.Body) + if err != nil { + log.Printf("Error: %v", err) + return + } + reName := regexp.MustCompile(RE_ORG_NAME) + reCount := regexp.MustCompile(RE_ORG_COUNT) + reModel := regexp.MustCompile(RE_ORG_MODEL) + reFocus := regexp.MustCompile(RE_ORG_FOCUS) + reComm := regexp.MustCompile(RE_ORG_COMM) + name := reName.FindStringSubmatch(string(body)) + count := reCount.FindStringSubmatch(string(body)) + model := reModel.FindStringSubmatch(string(body)) + focus := reFocus.FindStringSubmatch(string(body)) + comm := reComm.FindStringSubmatch(string(body)) + if len(name) > 1 { + sayCh <- "*\n*** Organization Info ***" + sayCh <- "*\nName: " + string(name[1]) + " [" + strings.ToUpper(handle) + "]" + sayCh <- "*\nURL: " + QUERY_ORG_URL + strings.ToUpper(handle) + sayCh <- "*\nMembers: " + string(count[1]) + sayCh <- "*\nModel: " + string(model[1]) + sayCh <- "*\nCommitment: " + string(comm[1]) + sayCh <- "*\nFocus: " + string(focus[1]) + ", " + string(focus[2]) + } else { + sayCh <- "*\n*** No Such Organization ***" + } +} diff --git a/modules/stoll/stoll.go b/modules/stoll/stoll.go new file mode 100644 index 0000000..c989146 --- /dev/null +++ b/modules/stoll/stoll.go @@ -0,0 +1,548 @@ +// vi:ts=4:sts=4:sw=4:noet:tw=72 + +package stoll + +import ( + "fmt" + "math/rand" + "strings" + "time" + + "github.com/sorcix/irc" +) + +var quotes = [][]string{ + { + "Woher die Reptos kommen ist mir auch bekannt.", + "Klaus Böhme, das ist derjenige, der hocheffiziente BHKWs (...) baut, mittels Braunsgas, also kalte Fusion.", + "Gerichte und Polizei sind für mich Fremdwörter.", + "Ich hab den Schutz der Dritten Macht!", + "Ich genieße den Templerschutz und den Schutz der National Security Eygenzi.", + "Fußball... Gotteswillen - Opium fürs Volk saggich nur. Brot und Spiele. Iss was für Bekloppte.", + "Was ist denn das für Musik?", + "Wer GEZ zahlt ist selber dämlich.", + "Helmut kommt - vom Klo, aber er kommt.", + "Geht mal ins Internet, Google-Suchmaschine, und gebt den Begriff Skalarwellen ein.", + "In sekundenschnelle zu anderen Fixsternen.", + "Gedanken sind infometrische Felder.", + "Was machst du denn da wieder fürn Ödeldödel?!", "Negativmagnetismus, was ist das denn wieder, Helmut?", + "Die Zahl 12 - auch ne kosmische Zahl.", + "Primzahlen bis 1024 werden in der Computertechnik benutzt.", + "Ich selber bin ein stinkenfauler Mensch was körperliche Arbeit angeht.", + "Jetzt kommen wir zur Wetterbeeinflussung und -kriegsführung durch Skalarwellen.", + "Quarz als Skalarwelleninterferometer.", + "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.", + "Wisst Ihr eigentlich, wie die Dekadenz programmiert ist?", + "Weisste was die Primzahlen bedeuten? Einen Torus - raum-zeitlich gesehen.", + "Physik – 2/3 schrott.", + "Wurzelrechnung... lächerlich.", + "Ich bin auch ein Anhänger der Kataklysmen-Theorie.", + "Darwin, Jude... klar. Da wurde die Biologie versaut – Einstein, Jude... die Physik wurde versaut, so kann ich das ganze Gebäude durchgehen.", + "Wird sind die fünfte Wurzelrasse, die arische.", + "Die erste Wurzelrasse war die Polarrasse.", + "Was richtet Luft an? Tornados!", + "Die Velociraptoren (…) hatte eine eigene Sprache, aus denen entstammen vermutlich die Reptos, iss so.", + "Mann muss immer den Ursprung erkennen - den Algorithmus, meine Damen, meine Herren.", + "Es hat überhaupt keinen Sinn - der Tod überrascht Jeden!", + "Ich kann mich in sekundenschnelle mit anderen Sternensystemen, Galaxien informieren.", + "Heute werden wir über HAARP, sprich Wetterkriegsführung sprechen.", + "Von wegen das Märchen über die desolate russische Armee - da kann ich nur lachen!", + "Es gibt keine feste Materie - das ist ein Trugschluss.", + "Mathematik ist die Sprache des Universums, der Intelligenz und erspart mir 1000 Seiten zu lesen.", + "Es rollen sich mir die Fussnägel auf, wenn ich ins Internet gehe und gucke unter Skalarwelle.", + "Eine gewöhnliche DILLGURKE – habter das gehört!", + "Wenn ich meine bisheriges Leben betrachte, dann stelle ich fest, dass es Höhen und Tiefen gab.", + "Wir hatten den ersten Videorekorder der Welt.", + "Mein nächstes Buch ist auch schon fertig: Die schwarze Macht.", + "Die schwarze Macht – da geht es um Templerwissen und um das Deutsche Reich.", + "Wir hatten die erste Polaroid-Kamera – allerdings S/W-Aufnahmen.", + "Wir hatten Bildtelefon. Da konnte man zu bestimmten Städten telefonieren und sah sein Gegenüber – für 50 Reichspfennige.", + "Sämtliche Naturwissenschaften Eins, wie sich das gehört.", + "Mein Kampf gegen die Lügen der Alliierten – das war der Grundstein.", + "Die ABC-Waffen gingen alle durch meine Hand, also Massenvernichtungswaffen.", + "Die Wende war nicht plötzlich, die wurde schon von den Zionisten 1899 geplant – von den Illuminaten.", + "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.", + "Heute werden wir über HAARP, sprich Wetterkriegsführung sprechen.", + "Wir haben mit Braunsgas gearbeitet.", + "Wir haben Blei verwandelt in Gold und Silber, Platin.", + "Wir haben versucht Quetschmetall aus den Vril-Werkstätten zum schmelzen zu bringen.", + "Quetschmetall wurde auch verwendet für Plasma-Antrieben von reichsdeutschen Flugscheiben.", + "Napoleon Bonaparte ist auch eines meine Vorbilder, Militärisch.", + "Konfuzius, das ist der Status Quo.", + "Für die Templermitglieder, Bernd? Nächsten Sonnabend, Roseneck – ab 18:00 Uhr, weisse bescheid?", + "Wenn man seine Katze in den Mikrowellenherd zum Trocknen reinschiebt, sieht man die Wirkung am Besten.", + "Man kann davon ausgehen, dass in jedem Neubaublock einer mit Mikrowelle experimentiert.", + "Gegen Skalarwellen haben sie die Arschkarte - also die goldene.", + "Es kommen gigantische Umwälzungen auf uns zu.", + "Die Sowjets gackern nicht, bevor das Ei gelegt ist.", + "Man steckt erst richtig drin im Wissen, wenn man auch einer Klofrau das Raum/Zeit-Gefüge erklären kann.", + "Viehzeug muss gepudert werden!", + "Sie können alles was gelehrt wird zu 90% vergessen, noch... noch mehr!", + "Es gibt Evolution heißt AUS-wicklung, alles schon da gewesen.", + "Wer von euch kennt die theosophische Lehre?", + "Nach der lemurischen Rasse, folgte das atlantische Imperium.", + "Die ursprünglichen Wesenheiten waren die Reptos, die ich persönlich sehr mag.", + "Die Reptos auch, die haben sich nur unterirdisch verlagert durch den Einschlag.", + "Die fette Kuh erhebt sich.. sehr schön. Na iss doch wahr.", + "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.", + "Jetzt kommen wir zum Schluss der heutigen Lektion.", + "Woher sollen die Rassen, Negroid und Asiatit herkommen oder Isaac Krummburg?!", + "Altmeister Peter Schmidt, in Front vor mir sitzend.", + "Ich liebe Katastrophen!", + "Der Mensch ist eine energetische Matrix!", + "Ich kann auch radioaktive Strahlung neutralisieren!", + "Sie müssen schon Ihren Kopf jetzt zum Denken benutzen und nicht als Hutständer!", + "Magie ist Physik durch wollen!", + "Deutsche Raumfahrt ab 1934.", + "Wir werden ja heute von Hacke bis Nacke belogen.", + "Westliche Wertegemeinschaft und Demokratie sind auch aus meinem Wortschatz GE-STRI-CHEN!", + "Biologie ist Physik.", + "96 Flugzeuge * 60 Minuten * 14 Stunden * 40 Passagiere.", + "Während des dritten Reiches war Nicola Tesla hier zu Besuch.", + "Mikrowellenstrahler!", + "Grüße aus der 9. Milchstraße.", + "Implosionstechnologie!", + "Die Sonne ist kalt!", + "Es gibt eine Art galaktischer Konföderation in unserer Galaxis.", + "Die Tür, ja was ist denn das?", + "Das nächste Treffen findet an Führers Geburtstag statt.", + "Ich sitze auf der Spitze der Pryramide.", + "Handy an die Wand schmeissen, weg damit!", + "Was macht die Sonne uns vor, Implosion.", + "Das hier ist nichts anderes als ein Strafplanet.", + "Es gibt ein Prag - in Bayern.", + "Ich kann aber auch, im Rahmen der Wetterkriegsführung, Tornados künstlich erzeugen.", + "Die Tür schon wieder!", + "Meine Name ist Stoll, ich bin promovierter Naturwissenschaftler.", + "Ich befasse mich mit freier Energie.", + "Wie kämpfen Reichsdeutsche?", + "Um in die innere Hohlwelt zu gelangen, muss ich 4000 km Gesteinsmaterial überwinden.", + "Es gibt nur energetische Felder.", + "Übrigens, meine Energiegruppe hat auch Kontakt zur Dritten Macht.", + "Nichts ist unglaublicher als die Wahrheit.", + "Es gibt nur Expansionsstrudel und Implosionsstrudel.", + "Unser Universum ist ja ein Perpetuum Mobile.", + "Kevin los, schreib das auf!", + "Die Geheimbasen des Deutschen Reichs haben auch den Wiederaufbau Westdeutschlands organisiert.", + "Todesstrahlen, Todesstrahlen!", + "Man sollte sich mit Putin gut stellen - Ich kenne ihn übrigens persönlich, komme mit ihm gut klar.", + "Ich bin ein Mensch, wenn ich schon Schnee sehe, kriege ich 'ne Erkaeltung.", + "Ich hasse Schnee, ist was fuer dumme Bauern.", + "Alles was unter 20 Grad ist, ist fuer mich Frost.", + "Arme und Beine bilden eine rotierende Scheibe, die Ohren flattern im Wind und das Arschloch bildet den höchsten Punkt.", + "Ich beherrsche die englische Sprache in Wort, Bild und Schrift.", + "Die Natur bracht Wirbel.", + "Mit Dynamit beginnt man den Tag dynamisch!", + "Die Sowjets gackern nicht bevor das Ei gelegt ist.", + "Ich lache über Naturkatastrophen, die ich liebe!", + "Internet ist ne schöne Waffe.", + "Internet ist so viel Schrott!", + "Wer kennt Mastodon?", + "Namen sind für mich Schall und Rauch, für mich sind Zahlen wesentlich.", + "Was wird heute gelernt an den Schulen? Schrott! Müll!", + "Wer hat hier Bier, Horst?", + "Trilobiten Dreilapp-Krebse, offiziell ausgestorben, hahahaha!", + "Unsinnige Talkshows, wenn ich das schon sehe - Uääääh!", + "Wir leben in einer Welt von Schwingungen, sprich Frequenzen, und damit korrelierender Wirbelmechanismen!", + "Mt diesem Braungas haben wir auch Elementtransmutationen vollbracht, allerdings machen wir das jetzt eleganter, mit einer Art Kaltlaser", + "3 mal Storgram reinen Alkohol! Das schirmt gegen radioaktive Strahlung ab.", + "Wer kennt die Maxwell'schen Gleichungen?", + "WAFFENSYSTEME! Da wirds interessant!", + "Ein dummes Volk lässt sich leichter beherrschen.", + "Lass das Flugzeug auf ein Wohnhaus stürzen, dann haste auch die Arschkarte.", + "Was sind die Pyramiden, wer weiß das? Schlüssel der Energie!", + "Die altindischen Vimanas! Vimanas heißt Fluggerät Sanskrit, flogen mit Quecksilberwirbelmotoren.", + "Facebook, das ist alles was für Psychopathen meiner Meinung nach.", + "Die jetzige elektromagnetische Theorie, wie sie an Schulen und Universitäten vertreten wird, ist falsch.", + "Ich kann Zeit beschleunigen, ich kann Zeit aber auch verlangsamen.", + "Täglich sterben tausende von Tierarten aus.", + "Wir leben in einer virtuellen Scheinwelt.", + "Skalarwellen oder Teslawellen sind eigentlich Wellen des Raum-Zeit-Kontinuums.", + "Skalarwellen knallen quer Kontinente und Ozeane.", + "Die Russen verfügen über Monsterbomben.", + "Am besten einen Stiefel Whisky trinken.", + "Zuerst probiert man dekadente Musik in Sydney, Australien aus.", + "So schön Waffen sind - es hat keinen Sinn, Gewalt mit Gewalt zu begegnen.", + "Man kann mit Skalarwellen experimentiern.", + "Wenn man den Algorithmus erkannt hat, und ich hab ihn erkannt, erspare ich mir zehntausende Seiten zu lesen.", + "Was bedeutete die Wende für mich? Zunächst einmal nur Nachteile.", + "Kurz nach der Wende gründete ich die Fachgruppe Rätsel der Erdgeschichte, die sich auch mit Physik und Paläoastronautik beschäftigte.", + "Eines Tages bekam ich in diesem Zusammenhang Kontakt zum Templerorden, wo ich heute leitend tätig bin.", + "Licht ist keine Grenzgeschwindigkeit, vorsicht. Skalarwellen und stehende Welle hat ein vielfaches mehr.", + "Fußball... Gotteswillen - Opium fürs Volk saggich nur. Brot und Spiele. Iss was für Bekloppte.", + "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.", "Angst und Unmöglichkeit sind aus meinem Wortschatz gestrichen.", + "Denken Sie zum Beispiel an die pervertierten Loveparade-Diskotheken und vieles mehr.", + "Das deutsche Volk verblödet – da gibt es ein Buch im Kopp-Verlag glaubich.", + "Unterstes wird zu Oberstes gekehrt.", + "Dich meine ich Peter, nicht einschlafen!", + "Aus Sicherheitsgründen habe ich keine andere Namen außer meinem genannt – nach dem Motto:", + }, + { + "Ganz wichtig, steht auch auf den reichsdeutschen Wissen.", "Im Indo-Pazifik kann man sie lebend finden.", + "Dann, (...) die haben mit uns Ähnlichkeit, die lemurische Rasse.", + "Was jeder Erdenbürger wissen sollte!", + "Das ist wieder ne Sache für sich.", + "Das wäre ja dann wie bei der GEZ.", + "Die würden bei mir alle in Physik die Note 100 kriegen.", + "Das ist wichtig zu wissen.", + "Ja, das ist freie Energie.", + "Was an der Schule natürlich nicht gelehrt wird und an den Universitäten auch nicht.", + "Wir sprechen von infometrischen Feldern.", + "Auch ne kosmische Zahl.", + "Energielobby, da ham was wieder, hähä!", + "Haltet euch fest!", + "Wenn andere die Fenster putzen (...), da löse ich partielle Differentialgleichungen.", + "Aber Vorsicht bei der Numerologie!", + "Tödliche Organwellen.", + "Da kann der dämliche Ami nur träumen!", + "In Russland nennt man das heute die skalara Haubitze.", + "Zigfache Überlichtgeschwindigkeit - ganz wichtig.", + "Man kann hinkommen, wo man will - alles Mist!", + "Denn die Erde ist ein lebender Organismus, vergesst das nicht.", + "Wenn man einmal in den Fängen der Ärzte ist, dann hat man verloren.", + "Sie wirken auf der Atomebene, nicht auf der Molekularebene - ganz wichtig.", + "Angewandte MaTHEMAtik!", + "Und es geht nicht um ein Computer-Weltraum-Spiel!", + "Für wie dämlich halten die uns!", + "Da komme ich mir vor wie eine tibetanische Gebetsmuehle oder tausend Studenten", "Verbotene Archäologie, das sind insgesamt drei Teile.", + "Als Däniken hochkam sein.. der Angehörige vom ZDF wurde erschossen.", + "Wasser ist Gift!", + "Im Gegensatz zur Involution – EIN-wicklung. Ha! Physik, Physik... hä!", + "Wir sind die nächste 4,5 Rasse, ne... die arische.", + "Man kann nicht auf allen Hochzeiten tanzen.", + "Ich selber bin die graue Eminenz.", + "Reste vom atlantischen Empire – das atlantische Imperium.", + "Deshalb müssen wir sie mit aufklären.", + "Wie heißt er? Peter Fitzek? Hab ich kennen gelernt da.. da schließt sich der Kreis!", + "Es gibt dort ne Menge Häkchen und Ösen – man kann geteilter Meinung sein.", + "Was da an Mimikry ausgeübt wird (…) das was ja im Tierreich bekannt.", + "Ruhe da hinten!", + "Auf die Maßeinheiten der Kernphysik hab ich bewusst verzichtet, denn außer mir würde das kaum jemand begreifen.", + "Das wird ja an den Schulen nicht mehr gelehrt.", + "Das kommt ja erst nächstes mal, da muss man das Gehirn schon arbeiten lassen.", + "So sind Höhen ohne Tiefen nicht denkbar – siehe hermetisches Gesetz des Universums.", + "Viele Frauen, die machen da Channeling und da kommt nur elektro-magnetischer Müll herüber.", + "Ich denke an die Vril-Damen – transmediale Kontakte zum Aldebaran.", + "Ich hab auch nur für die Fächer was getan, die mich interessiert haben – gab dann nur Einsen oder Dreien.", + "Eine Zeit meiner Sammlertätigkeit begann.", + "Ab meinem 14 Lebensjahr verfügte ich bereits über eine beachtliche geologische und gestaltete an Schulen entsprechende Ausstellungen, welche eine hohe Resonanz hatten.", + "Seit meinem 15. Lebensjahr wohnte ich in der Reichshauptstadt Berlin.", + "Während dieser Zeit besuchte ich zwei Jahre lang die Abendschule, 11. und 12. Klasse, so mal nebenbei.", + "Da bin ich übrigens auch Mitglied, Prä-Astronautik- Äntschiens Äh... Ästronaut Society, mit Urkunde (...) und leitete die Uranier-Gruppe Astrophysik.", + "Aber man latscht nur einmal auf die Harke.", + "In der Kruste! Nicht die innere Hohlwelt! Das ist ein großer Unterschied!", + "Mindestens sind das reine Vegetarier, was mir schon sympathisch ist.", + "Die ganzen Darwinismus-Lügen.. vergesst es!", + "Ja aus´n Negern! (…) Aus Schwarz wird nicht weiß!", + "Zu viel Flüssigkeit.. der Regen, der reicht schon.", + "Mindcontrol, Bewusstseinskontrolle, versklavte Gehirne und so weiter und so fort.", + "Das sind natürlich dann schon fast Superbomben.", + "Das sind einzigartige militärische Anwendungen.", + "Meine Temperaturen sind 40 Grad plus und 100% Luftfeuchtigkeit.", + "Das nennt man KALTE FUSION!", + "Die Zusammenhänge sind glasklar!", + "Klar?!", + "Muss mann wissen!", + "Vergessen Sies!", + "Bekannt ja?", + "Alles andere ist unnötig.", + "Wer weiß das? Wieder keiner!", + "Sehr Gut!", + "Klar, ne?!", + "Silentium!", + "Ruhe!", + "Schwarze Sonne, bekannt!", + "So einfach ist das.", + "Es gibt keine Zufälle!", + "Die Erde ist ja hohl.", + "Die lachen uns aus!", + "Gemeint ist das organische Germanium 32.", + "Unsere Energiegruppe ist in der Lage das künstlich herzustellen.", + "Mikrowelle, Skalarwelle!", + "Physik, Mathematik, Philosophie.", + "Wie sagte noch Napoleon:", + "Gibt´s interessante Fachliteratur.", + "Flugscheibenkonstrukteur!", + "Da werden Sie staunen!", + "Muss man natürlich wissen.", + "Wissen auch die Wenigsten.", + "Den Leuten wird speiübel, die fallen um.", + "Gibt es, darf man nicht außer Acht lassen.", + "Wie mein Templerbruder vom Altodern Nobert Jürgen-Ratthofer zu sagen pflegte:", + "Wisst Ihr was das heißt? Eine Million Jahre?", + "Da haben wirs mit einem Satz!", + "Ja.. summ summ summ.", + "Ich weiß auch mittlerweile auch, wo die Vril Odin (hinge?)startet ist - zum Aldebaran.", + "Geht in eine kalte Fusion.", + "Und der wurde vom Finanzjudentum auch nur ausgenutzt.", + "Dafür musste er sterben.", + "Das hat auch die Blawatzki erkannt.", + "Die Wurzel aus -1 ist lösbar.", + "Was ist denn da wieder los? Wo ist meine Panzerfaust?", + "Du erinnerst dich, Peter!?", + "Was wir haben, die himmlischen Flugscharen, ne?", + "Die weiße Rasse stammt vom Aldebaran, vergesst das nicht!", + "Wenn ich jetzt an Yellowstonepark denke, kann bald passieren, herrlich! Ich liebe ja Katastrophen.", + "Ich finde Erdbeben schön.", + "Wenn sich Risse auftun, ganze PKWs versinken, hehe – herrlich!", + "Alles, auch das Universum, ist rhythmisch, zyklisch aufgebaut.", + "Es gibt einen energetischen Frühling.", + "So muss das sein!", + "Alles nur störende Mikrowellen.", + "Nagelneue Flugscheiben.", + "Mit Mikrowelle runterholen!", + "Nach Möglichkeit mit wenig Blutvergiessen, vergesst das bitte nicht!", + "Eine Art Monarchie oder weiß der Geier was.", + "Das ist eine Aufkraft!", + "Kraftlose Schwätzer, die werden untergehen.", + "Die kann man erwerben gegen 2 Euro.", + "Das sind Schmutzfinkjournalisten, die gehören an den Galgen.", + "Das ist geheimes Templerwissen.", + "Das ist keine mongolische Mikroelektronik sondern deutsche Hochtechnologie!", + "Mikrowelle, Skalarwelle!", + "Daher die vielen Rassen, die unmöglich alle von dieser Erde stammen können.", + "Wenn man seine Katze in den Mikrowellenherd zum Trocknen reinschiebt sieht man die Wirkung am Besten.", + "Man kann davon ausgehen, dass in jedem Neubaublock einer mit Mikrowelle experimentiert.", + "Gegen Skalarwellen haben sie die Arschkarte - also die goldene.", + "Unsinnige Talkshows, wenn ich das schon sehe - Uääääh!", + "Es kommen gigantische Umwälzungen auf uns.", + "Ist das bekannt HAARP, Alaska, Wetterkriegsführung?", + "Stärke 9, das ist der Daumen Gottes.", + "Magnetohydrodynamik!", + "Alles ist nur Bewegung oder Geschwindigkeit oder Schwingung!", + "Rotwein ist gesund - Templerwein!", + "Irrtum, Gezielte Desinformation!", + "Bis auf 200 Meter tief und mehr werden alle Hohlräume ausradiert", + "Repetitio est mater studiorum!", + "Dissonanzen - Eine Dissonanz jagt die andere!", + "Bayern ist der Schlüsselpunkt!", + "Ja Kevin! Da ist was im Busch!", + "Die Erdkruste ist ja weltweit ein Gangsystem.", + "Eine Million Reichsdeutsche leben dort unten, in der inneren Hohlwelt.", + "Dort leben ja mehrere Zivilisationen, nicht nur eine. Ich hab Karten darüber.", + "Ich halte mich auch kurz, denn in der Kürze liegt die Würze.", + "PETER! Das betrifft auch dich!", + "Nuklear oder nicht-nuklear ist egal. Hauptsache alles ist zerstört.", + "Wenn es heißt: Den Stecker ziehen! Dann wird ein bestimmtes Gebiet zerbröselt, plattgemacht - Flächenbombardements!", + "Apropos unterirdische Bauwerke: Das Verhältnis von oberirdisch zu unterirdisch ist 1 zu 4!", + "Ich erinnere noch einmal daran, dass mindestens rund eine Million reichsdeutscher Patente in alliierte Hände verschwand!", + "Mathematisch bedeutet das, dass mindestens einfache trigonometrische Gleichungen gelöst werden.", + "Ich weiß auch, wie man sowas bauen kann - Mikrowellenterror und dergleichen mehr.", + "Peverse Gehirne sind das, die sich sowas ausdenken.", + "Klaus, denk auch an Chemtrails!", + "Haarp-Projekt Alaska und anderes lässt grüßen.", + "Absichtlich, richtig Mario!", + "Übrigens, Spannung... Millionen von Volt - um das mal zu verdeutlichen!", + "Vier-dimensionale Räume, gibt es!", + "Es gibt auch nen Vier-dimensionalen Würfel.", + "Die sind den Amis um mehrere Nasenlängen voraus.", + "Ähnliches ist ja auch in Deutschland geplant, Vorsicht!", + "Irgendwann ist Schluss mit lustig!", + "Ein Kamerad von mir musste da sein Leben lassen.", + "Es handelt sich demnach um einen deutlichen und jederzeit reproduzierbaren Beweis für Homöopathie.", + "Bei Freimaurern, Illuminaten sagen wir mal (...) hat das alles eine Bedeutung.", + "Mathematik mein lieber Mario, hö?!", + "Wird natürlich totgeschwiegen.", + "Die hatten mehr Verluste als in Pearl Harbour, hihi.", + "Finanzdienstleistungen – alles son Schnullifax, da weiß ich, wie die Verbrecher arbeiten.", + "Durch jenen Verlag, und das ist jetzt ganz wichtig, gelangte ich an Schriften und Videos zum Thema Reichsdeutsche Hochtechnologie.", + "Flugscheiben mit non-konventionellen Antrieben, Elektrogravitation und Gravitationsabschirmung und Überlichteffekt.", + "Ich muss nur dazu sagen, in Naturwissenschaften kenne ich mich überall sehr gut aus, da macht mir so schnell keiner was vor.", + "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.", + }, + { + "Ja was sind denn das? Das sind Umschlagplätze für Drogen, Waffenhandel und Rotlicht-Milieu, mehr ist das nicht.", + "Damit haben Sie die Eigenschaft die Zeit der Zellen quasi zurückzudrehen.", + "Überall hat man dann die goldene Arschkarte.", + "Auch für dich wichtig, Mario - für deine Experimente.", + "Merkt ihr die Korrelation? Nachdenken!", + "Ich habs gesehen, Fata Morgana, Namib Wüste.", + "Denn Hunger und Durst macht böse.", + "Übrigens gibt es kein Gut und kein Böse in dem Sinne.", + "Die armen Kinder, was aus denen werden soll - ja Mutanten, da hab ich auch kein Mitleid mehr!", + "Man steckt erst richtig drin, wenn man auch der letzten Klofrau erklären kann, was Zeitreisen sind.", + "Schmeiß das aus dem Fenster!", + "Hähä!", + "Ein Wahnsinn ja.", + "Bazillus Dummheit sag ich nur.", + "Das muss man begreifen, ist ja wirklich leicht.", + "So lange ich lebe wird mein Kampf gegen die Alliierten anhalten.", "Wer das begreift, der weiß schon sehr viel.", + "Levitation! Mein Gott, die indischen Gurus machen uns das vor.", + "Aber steigtert euch nicht zu tief hinein - ich denke da an die Zahl 23 und was es alles gibt.", + "Kevin du beschäftigst dich damit hoffentlich (...) - du, ich frag Dir das ab sonst.", + "Richtig Mario - siehste Mario denkt mit, das gefällt mir an dir!", + "Man muss das dazu auch mal philosophisch betrachten.", + "Die sehr gefährliche amerikanische Lanzenviper (...) und der Mensch stirbt elendig innerhalb von 20 Minuten.", + "Ja, Heil!", + "Nuklearbomben sind Flöhe dagegen.", + "Das sind kranke Gehirne, aber es ist so.", + "Formeln sind viel besser zu Handhaben, ist wie ein Krimi.", + "Aus tausend Seiten mach ich euch eine.", + "Anschließend machen wir 'ne Raucherpause.", + "Die Inselaffen hasse ich sowieso!", + "Wir Physiker sprechen vom sogenannten Dirac-Meer.", + "Die muss man anzapfen entsprechend einem Implosions-Strudel.", + "Das heisst eine logarithmische Spirale raum-zeitlich betrachtet nach Innen.", + "Nicht umsonst ist ja eines meiner Bücher ein Bestseller.", + "Sie ist ein Perpetuum Mobile!", + "Das ist die menschliche Zelle im Schnitt!", + "Das Wort Zufall ist aus meinem Wortschatz gestrichen.", + "Muss man schon dann kümmern, wenn man dran kommen will!", + "Das ist kein Science Fiction!", + "So einfach ist das, wenn man um die neue Physik weiß!", + "Und die sind zum Pluto, dem erdfernsten Planeten gestartet.", + "Für mich ist das der Elektro-Jude.", + "Ne schöne Waffe, sollte man mal gegen die Loveparade einsetzen.", + "Ein versteckter Hinweis, dass der Mond in reichsdeutscher Hand nämlich ist.", + "Zack, einfach ist das.", + "Kein Problem!", + "Da staunt ihr, was?", + "Mein Gott!", + "Ich nehme auch an, dass da auch das galaktische Imperium Aldebaran eine wesentliche Rolle spielt.", + "Wir dürfen nicht mit irdischen Maßnahmen herangehen Leute, vergesst das nicht!", + "Mit KRAFT!", + "Das A&O in der freien - in der Physik.", + "Na, wer hat Warsteiner bestellt?", + "Die doofen Amis, die trauen sich da nicht ran, ist doch klar.", + "So lebt man ruhiger und energetischer.", + "Hatten wir auch schon im 3. Reich.", + "So einfach ist das, muss man nur wissen.", + "Da bleibt von den Plattenbauten auch nichts mehr.", + "Dabei denke ich an die Allee der Gehenkten.", + "Knüppel aus dem Sack!", + "Ein zweischeidiges Schwert,ne?", + "Auch nachzulesen in meinem Bestseller-Buch.", + "Ich sage nur Bipolarität des Universums.", + "Spass muss sein.", + "Das erfordert natürlich etwas Gehirnschmalz.", + "Die Meisten begreifen es leider nicht, darauf kann ich natürlich keine Rücksicht nehmen.", + "Oder ich lass die Fackelmänner los!", + "Und da braucht man sich nicht zu wundern, über die vielen Mutanten, die rumlaufen.", + "Nur Dreck, Nur Dreck, und der Bürger sieht sich das an!", + "Man nennt das eine so genannte skalare Haubitze!", + "Das hole ich locker wieder rein mit meinen Schriften.", + "Da brauche ich keine Nuklearwaffen - nichtmal Mikrowelle.", + "Das arme Tier, naja gut - was solls?", + "Das ist eine stehende Welle, die ist sofort da.", + "Eine Welt voller Mutanten und Zombies mit einem IQ geringer als eine Dillgurke.", "Scheiße gesellt sich zu scheiße!", + "Und zur Not hilft eben ein Marsch. Fußmarsch, Wolfsangelmarsch.", + "Vulkanausbrüche - was Schönes!", + "Zisch - Aus, weg war det - ein schöner Tod.", + "Das ist auch gegen Krebs und alles mögliche.", + "Alles ist vorhersehbar.", + "Das kann nur die Dritte Macht gewesen sein.", + "Genau das haben die meisten nicht begriffen - naja, was soll man von Mutanten erwarten?", + "Dort einzudringen würde ich nicht empfehlen! Nirgendwo!", + "Peter Fitzek (…), der kennt wieder die Leute meiner Energiegruppen.", + "Nach dem Motto: Was nicht sein darf, nicht sein kann.", + "Hat noch jemand einen Beitrag zu liefern, Claus?", + "Eins ist aber jeden Fall ist Fakt, dass gewisse Kräfte versuchen die Rechte Szene (…) auseinanderzuplautzen.", + "Alles vermeidbare Risiken!", + "Kontinent Mu – die Südhemisphäre.", + "Welch ein geistiger Dünnschiss saggich da nur!", + "Such is life.", + "Wir machen´s wie mit der Schiebewurst - das Beste immer zum Schluss.", + "Da findet man auch Skelette von 8 Metern Länge, humanoid und andere Sachen... Flugscheiben Vimanas und dergleichen mehr.", + "Naja.. bescheuert.", + "Demnach ist die weiße Rasse, also sprich atlantische Imperium, eine Kolonie, eine aldebaranische Kolonie.", + "Ich denke ja ganzheitlich vernetzt, nicht wahr?", + "Besser ist immer der persönliche Kontakt, statt da den Elektrojuden zu nutzen.", + "Da muss man natürlich die Kräfte erkennen.", + "Die Meinungen divergieren sehr sehr stark.", + "Dann folgt nach der Polarrasse, die hyperboreische Rasse, auch auf die Nordhemisphäre beschränkt.", + "Ich beobachte die Szene aber weiter.", + "Muss auch militärische Ordnung herrschen!", + "Nech, die Blawatzki... die Blawatski spricht ja von Wurzelrasse.", + "Sonst krieg ich quadratische Augen!", + "Das ist wie mit der Drehscheibe, man lernt Leute kennen – hochinteressant muss ich sagen!", + "Ich halt es mit Napoleons Worten: Angst und Unmöglichkeit sind aus meinem Wortschatz gestrichen!", + "Das ist ausgestoßene, überschüssige Geschwindigkeit! Mehr ist das nicht Leute!", + "Wir sind die Top-Ten, auf der ganzen Erde.", + "Gesamtberlin, wissen auch die wenigsten: 4 mal mehr - Unterdirdisch! Alles verzweigt!", + "Man muss schon wirklich zwischen Dichtung und Wahrheit differenzieren können!", + "Wissenschaftlich, technologisch war das Deutsche Reich den Alliierten um mindestens 100 Jahre voraus, (...) moralisch um 1.000 Jahre voraus.", + "Prä-Astronautik macht der.", + "Darf er nicht drüber erzählen, sonst würde er kein Geld mehr bekommen für seine kostspieligen Reisen.", + "Das ist ein ganz einfacher Algorithmus.", + "Ich muss auch dazu sagen, ich bin auch Sternbild Skorpion – da gibt es keine Grauzonen, nur Schwarz oder Weiß.", + "Entscheidend ist die Länge des Frauenhaares als Sender und Empfänger.", + "Die sind sehr empfänglich für Müll.", + "Aber das Frauenhaar, das müssen Sie begreifen, ist magnetisch, das hat ein anderes Magnetfeld.", + "Kann man ablesen, siehe Victor Schauberger.", + "Für die Nichtwissenden mag das wie Glockengeläut in den Ohren klingen.", + "Wer kann das, außer mir?", + "Nun wisst ihr auch, wie man künstlich Erdbeben auslöst.", + "Solche seltenen Wetter-Skalar-Interferometer könnten Kugelblitze produzieren.", + "Mit Überlichtgeschwindigkeit, ich betone: ÜBERLICHTGESCHWINDIGKEIT!", + "Wer die Lüge kennt und trotzdem nichts unternimmt, macht sich mitschuldig.", + "Zerlegen macht Spaß!", + "Heute ist Deutschland ein Entwicklungsland.", + "Es gibt noch andere bösartige Elemente, subversive Elemente – Volksschädlinge!", + "Wir werden verfolgt, vernichtet – von Isaak Krummbold.", + "Der war sehr gut.", + "Die Erde ist ein lebender Organismus.", + "Die sind nicht weg, die haben sich ins Erdinnere verkrochen.", + "Spaß muss sein, Leute!", + "Das muss man natürlich alles wissen, alles das was reichsdeutsche Hochtechnologie vermag.", + "Alles andere... Schrott!", + "Es gibt auch keine Missing Links. (…) Alles ein Schwachsinn!", + "Das äußerliche dieser Wesenheiten ist uns völlig schleierhaft, (..) Medusen, was weiß ich.", + "Ich fürchte, wir müssen völlig umdenken!", + "Dann haste die diamantene Arschkarte.", + "Mich wundert... kann nix mehr erschüttern.", + "Wir leben in einer sehr interessanten Zeit.", + "Viele Ökosysteme spielen heute schon verrückt.", + "Nichts einfacher als das.", + "Das ist jetzt das, was Sie sich merken sollten.", + "Die werden erhitzt und gehen kaputt.", + "Die knallen durch!", + "Ist ne stehende Welle, junge Dame.", + "Und dann Himmel, Arsch und Zwirn!", + "Es funktioniert ja immer wieder - es gibt ja genug Verblödete.", + "Mögen sie in ihrem eigenen Blut erSAUFEN!", + "Macht es subversiv, geht damit nicht an die Öffentlichkeit, schon gar nicht ins Internet.", + "Informetrisches Feld und informetrische Felder, Pluralis.", + "Muss ich noch deutlicher werden? Ich glaube nicht!", + "Das ist nämlich das A und O des Universums.", + "Wir sind nicht umsonst hier hineininkarniert oder hineingeboren.", + "Das hab ich extern so neben... aus dem Ärmel gemacht.", + "Dort war ich kein geringer als Hauptstrahlenschutzbeauftragter für die gesamte ehemalige DDR.", + "Eine ganz ekelhafte Waffe.", + "Das hatte die deutsche Luftwaffe (…) rechtzeitig erkannt.", + "Liegt im Krankenhaus, ich nehm an, dass sie ihn da mit Mikrowelle traktiert haben.", + "Es gibt keine Zufälle.", + "Bis auf die Haunebu I, die war nur zu 60% Weltall-tauglich, nebenbei bemerkt.", + "Sprache beherrsche ich – mehrere Fremdsprachen, ist für mich aber nur Mittel zum Zweck.", + "Meine Meinung – dazu stehe ich!", + "Letztlich war er aber nur eine zweibeinige Ertragsmaschine – man muss das mal so knallhart sagen.", + "Aber ich schätze mal, wir stehen kurz vor einem Wendepunkt.", + "Darauf setze ich einen Haufen.", + }, +} + +var sayCh chan string + +func Init(ch chan string) { + sayCh = ch +} + +func HandleMessage(m *irc.Message) { + tok := strings.Split(m.Trailing, " ") + if len(tok) < 1 { + return + } + if tok[0] == "!stoll" { + line := "" + for i := 0; i < 3; i++ { + line += quotes[i][random(0, len(quotes[i]))] + line += " " + } + line += "[Dr. Axel Stoll, promovierter Naturwissenschaftler]" + sayCh <- fmt.Sprintf("%s\n%s", "*", line) + } +} + +func random(min, max int) int { + rand.Seed(time.Now().Unix()) + return rand.Intn(max-min) + min +} diff --git a/newsfeeds.conf b/newsfeeds.conf new file mode 100644 index 0000000..f247709 --- /dev/null +++ b/newsfeeds.conf @@ -0,0 +1,10 @@ +https://robertsspaceindustries.com/comm-link/rss +http://starcitizenbase.de/feed/ +https://www.youtube.com/feeds/videos.xml?channel_id=UCVlBNk1uHmMX93SvotZPfbQ +http://imperialnews.network/feed/ +http://www.pointofgaming.com/feed/ +http://il2sturmovik.com/news/feed/ +http://newsfeed.eveonline.com/en-US/44/articles/page/1/20 +https://www.shroudoftheavatar.com/?feed=rss2&cat=11 +https://www.shroudoftheavatar.com/?feed=rss2&cat=12 +http://camelotunchained.com/en/feed/ diff --git a/util/util.go b/util/util.go new file mode 100644 index 0000000..fac6122 --- /dev/null +++ b/util/util.go @@ -0,0 +1,33 @@ +// vim:ts=4:sts=4:sw=4:noet:tw=72 + +package util + +import ( + "bytes" + "strconv" +) + +func NumberToString(n int, sep rune) string { + start := 0 + var buf bytes.Buffer + + s := strconv.Itoa(n) + if n < 0 { + start = 1 + buf.WriteByte('-') + } + l := len(s) + ci := 3 - ((l - start) % 3) + if ci == 3 { + ci = 0 + } + for i := start; i < l; i++ { + if ci == 3 { + buf.WriteRune(sep) + ci = 0 + } + ci++ + buf.WriteByte(s[i]) + } + return buf.String() +}