forked from an/flokati
		
	init
This commit is contained in:
		
						commit
						51b7e05596
					
				
					 11 changed files with 1214 additions and 0 deletions
				
			
		
							
								
								
									
										20
									
								
								Dockerfile
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										20
									
								
								Dockerfile
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,20 @@ | ||||||
|  | FROM ubuntu:15.10  | ||||||
|  | MAINTAINER Andreas Neue <an@dnix.de> | ||||||
|  | 
 | ||||||
|  | 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" ] | ||||||
							
								
								
									
										19
									
								
								LICENSE
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										19
									
								
								LICENSE
									
										
									
									
									
										Normal file
									
								
							|  | @ -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. | ||||||
							
								
								
									
										11
									
								
								README.md
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										11
									
								
								README.md
									
										
									
									
									
										Normal file
									
								
							|  | @ -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` | ||||||
|  | 
 | ||||||
							
								
								
									
										137
									
								
								main.go
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										137
									
								
								main.go
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,137 @@ | ||||||
|  | // vim:ts=4:sts=4:sw=4:noet:tw=72 | ||||||
|  | // | ||||||
|  | // flokatirc | ||||||
|  | // | ||||||
|  | // Copyright (c) 2015 Andreas Neue <an@dnix.de> | ||||||
|  | 
 | ||||||
|  | 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) | ||||||
|  | } | ||||||
							
								
								
									
										53
									
								
								modules/fortune/fortune.go
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										53
									
								
								modules/fortune/fortune.go
									
										
									
									
									
										Normal file
									
								
							|  | @ -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) | ||||||
|  | 		} | ||||||
|  | 	} | ||||||
|  | } | ||||||
							
								
								
									
										76
									
								
								modules/news/news.go
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										76
									
								
								modules/news/news.go
									
										
									
									
									
										Normal file
									
								
							|  | @ -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) | ||||||
|  | } | ||||||
							
								
								
									
										84
									
								
								modules/saytime/saytime.go
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										84
									
								
								modules/saytime/saytime.go
									
										
									
									
									
										Normal file
									
								
							|  | @ -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] | ||||||
|  | } | ||||||
							
								
								
									
										223
									
								
								modules/sc/sc.go
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										223
									
								
								modules/sc/sc.go
									
										
									
									
									
										Normal file
									
								
							|  | @ -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   = `<div class="info">\s*<p class="entry">\s*<strong class="value">(.*)</strong>\s*</p>\s*<p class="entry">` | ||||||
|  | 	RE_CIT_RECORD = `<p class="entry citizen-record">\s*<span class="label">UEE Citizen Record</span>\s*<strong class="value">#(.*)</strong>` | ||||||
|  | 	RE_CIT_HANDLE = `<p class="entry">\s*<span class="label">Handle name</span>\s*<strong class="value">(.*)</strong>\s*</p>` | ||||||
|  | 	RE_CIT_ORG    = `<a href=.*orgs.*class=.*style=.*background-position.*px center.*>(.*)</a>` | ||||||
|  | 	RE_CIT_SID    = `Spectrum Identification \(SID\)</span>\s*<strong class="value data.*">([A-Z0-9]*)</strong>` | ||||||
|  | 	RE_CIT_RANK   = `Organization rank</span>\s*<strong class="value data.*">(.*)</strong>` | ||||||
|  | 	RE_ORG_NAME   = `<h1>(.*) ?/ ?<span class="symbol">` | ||||||
|  | 	RE_ORG_COUNT  = `<span class="count">(.*) member` | ||||||
|  | 	RE_ORG_MODEL  = `<li class="model">(.*)</li>` | ||||||
|  | 	RE_ORG_FOCUS  = `<ul class="focus clearfix">\s*<li class="primary tooltip-wrap">\s*<img src=".*" alt=".*" />\s*<div class="rsi-tooltip">\s*<div class="content">(.*)</div>\s*<span class="bottom"></span>\s*</div>\s*</li>\s*<li class="secondary tooltip-wrap">\s*<img src=".*" alt=".*" />\s*<div class="rsi-tooltip">\s*<div class="content">(.*)</div>\s*<span class="bottom"></span>\s*</div>\s*</li>\s*</ul>` | ||||||
|  | 	RE_ORG_COMM   = `<li class="commitment">(.*)</li>` | ||||||
|  | 	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: <none>" | ||||||
|  | 		} | ||||||
|  | 	} 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 ***" | ||||||
|  | 	} | ||||||
|  | } | ||||||
							
								
								
									
										548
									
								
								modules/stoll/stoll.go
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										548
									
								
								modules/stoll/stoll.go
									
										
									
									
									
										Normal file
									
								
							|  | @ -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 | ||||||
|  | } | ||||||
							
								
								
									
										10
									
								
								newsfeeds.conf
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										10
									
								
								newsfeeds.conf
									
										
									
									
									
										Normal file
									
								
							|  | @ -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/ | ||||||
							
								
								
									
										33
									
								
								util/util.go
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										33
									
								
								util/util.go
									
										
									
									
									
										Normal file
									
								
							|  | @ -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() | ||||||
|  | } | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue