init
This commit is contained in:
commit
51b7e05596
|
@ -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" ]
|
|
@ -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.
|
|
@ -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`
|
||||
|
|
@ -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)
|
||||
}
|
|
@ -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)
|
||||
}
|
||||
}
|
||||
}
|
|
@ -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)
|
||||
}
|
|
@ -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]
|
||||
}
|
|
@ -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 ***"
|
||||
}
|
||||
}
|
|
@ -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
|
||||
}
|
|
@ -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/
|
|
@ -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…
Reference in New Issue