From b4eeb074cc66c9ca0843424b52e0fb5cb435abe2 Mon Sep 17 00:00:00 2001 From: Horscchtey <eva.dengler@fau.de> Date: Mon, 13 Jul 2020 01:29:53 +0000 Subject: [PATCH] update files --- src/boddle.db | Bin 110592 -> 131072 bytes src/bot.go | 243 ++++++++++++++++++++++++++++++++++++++++++-------- 2 files changed, 207 insertions(+), 36 deletions(-) diff --git a/src/boddle.db b/src/boddle.db index c68bb08cdb3af69e5f08e528e0c83da0c4d58b6a..4aa0804767f195347b79f931cf817c77f8e97e81 100644 GIT binary patch delta 17623 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 DQkWoq delta 161 zcmZo@;AnWjHbGjDi-CbbngIb=C+Zl>b1~@Y1n}~&V&LSR#lXLbpO3$uZ#v&&K4rcF z-dVg~HY*Cq@NS;Po2A6u!!mC(yMZM0#))-|o9CINMKgD?Y}(8|L6mvp#A%G1H%$q8 zEx^WS&cHvHKZak9?<!vvpZR7*0cF1J=6#H31^HO{mND=j;IHC0<NL<9Y_p=k6u#}t J)-gsg0suTTE0h2L diff --git a/src/bot.go b/src/bot.go index 4ff1568..b04e183 100644 --- a/src/bot.go +++ b/src/bot.go @@ -12,6 +12,7 @@ import "database/sql" import _ "github.com/mattn/go-sqlite3" var dead = true +var arsch = false type irc_msg struct { channel string @@ -52,7 +53,7 @@ func scanline_privmsg (msg string) irc_msg { t = strings.Split(irc.channel, " :") irc.channel, irc.msg = t[0], t[1] t = strings.Split(irc.msg, "\r\n") - irc.msg = t[0] + irc.msg = strings.TrimSpace(t[0]) if ! strings.HasPrefix(irc.channel, "#") { irc.channel = irc.author } @@ -79,26 +80,6 @@ func parsemsg(line string, foo bot) bool { "zinn_des_lebens": true, } -/* - if strings.HasPrefix(ircmsg.msg, ">") { - if strings.Compare(ircmsg.author, "cody") == 0 { - sendmsg(foo.conn, ircmsg.channel, "klein cody möchte bitte von mama mute aus dem bällebad abgeholt werden!") - return true - } else if strings.Compare(ircmsg.author, "mute") == 0 { - bloederspruch := []string{"awwwww mal wieder auf der Suche nach Liebe?", - "Hallo kleiner :)", - "Du suchst was lustiges oder? hamma ned", - "Kääääääääääääääääääsebrot!", - "Ja, das sind nur endlich viele dumme Sprüche...", - "lalallalaallaalaaaaaa", - "Bist du ein Blobfisch?", - "Erst haten und dann doch nutzen...."} - - sendmsg(foo.conn, ircmsg.channel, bloederspruch[rand.Int()%len(bloederspruch)]) - } - } -*/ - if strings.HasPrefix(ircmsg.msg, ">help") { // help input := strings.Split(ircmsg.msg, " ") @@ -128,10 +109,14 @@ func parsemsg(line string, foo bot) bool { helpmsg = "get your personalized database-related nickname by calling >idb or get one for your friend with >idb <name>" case "flirt": helpmsg = "get flirt messages with >flirt or flirt with your best friend using >flirt <your love>" + case "hate": + helpmsg = "get hate messages with >hate or hate with your best friend using >hate <your love>" case "add jokes": helpmsg = "type >add jokes for more information" case "add flirt": helpmsg = "add your best pick up line using >add flirt <pickup line>" + case "add hate": + helpmsg = "add your best break up line using >add hate <breakup line>" case "geh schlafen": helpmsg = "send the bot to sleep until the next reconnect" case "deutsch": @@ -147,6 +132,14 @@ func parsemsg(line string, foo bot) bool { fmt.Sprintf(strings.Join(functs, ", ")))) } + } else if strings.Compare(ircmsg.msg, ">arsch on") == 0 && strings.Compare(ircmsg.author, "horscchtey") == 0 { + // info + arsch = true + sendmsg(foo.conn, ircmsg.channel, "OH YEAH BABY") + } else if strings.Compare(ircmsg.msg, ">arsch off") == 0 && strings.Compare(ircmsg.author, "horscchtey") == 0 { + // info + arsch = false + sendmsg(foo.conn, ircmsg.channel, "dis not gud") } else if strings.Compare(ircmsg.msg, ">info") == 0 { // info sendmsg(foo.conn, ircmsg.channel, "created in golang with love, cats and tears >:)") @@ -268,26 +261,41 @@ func parsemsg(line string, foo bot) bool { if err != nil { fmt.Printf("nargh") } - fmt.Printf(joke) _, err = statement.Exec(count, curr, joke); if err != nil { panic(err) return true } sendmsg(foo.conn, ircmsg.channel, "i guess that worked") - } else if strings.HasPrefix(ircmsg.msg, ">flirt preisi") { - sendmsg(foo.conn, ircmsg.channel, "~PREISI IST SEXY~ - deine Verehrer von dem neuen Ecksofa.") - } else if strings.HasPrefix(ircmsg.msg, ">flirt") || strings.Contains(ircmsg.msg, " liebe ") || strings.Contains(ircmsg.msg, " Liebe ") || strings.Contains(ircmsg.msg, " love ") || strings.Contains(ircmsg.msg, " Love ") { + } else if strings.HasPrefix(ircmsg.msg, ">wisdom") { + // wisdom + db, err := sql.Open("sqlite3", "./boddle.db") + if err != nil { + panic(err) + return true + } + + rows, err := db.Query("select e.wisdom from wisdom e ORDER BY RANDOM() LIMIT 1") + if err != nil { + panic(err) + return true + } + var wisdom string + for rows.Next() { + var curr string + rows.Scan(&curr) + wisdom = curr + } + rows.Close() + + sendmsg(foo.conn, ircmsg.channel, wisdom) + } else if strings.HasPrefix(ircmsg.msg, ">flirt") { // flirt - var ppl []string - if strings.HasPrefix(ircmsg.msg, ">flirt") { - for _, v := range strings.Split(ircmsg.msg, " ") { - if ! strings.HasPrefix(v, ">flirt") { - ppl = append(ppl, v) - } - } + var ppl string + if len(ircmsg.msg) > 7 { + ppl = string(([]rune(ircmsg.msg))[7:len(ircmsg.msg)]) } else { - ppl = append(ppl,ircmsg.author) + ppl = ircmsg.author } db, err := sql.Open("sqlite3", "./boddle.db") @@ -309,12 +317,77 @@ func parsemsg(line string, foo bot) bool { } rows.Close() - if (len(ppl) == 0) { - sendmsg(foo.conn, ircmsg.channel, flirt) + endstring := len(flirt)-1 + + for endstring > 0 { + curr := int(flirt[endstring]) + if (curr > 64 && curr < 91) || (curr > 96 && curr < 123) { + break; + } + endstring = endstring - 1 + } + endstring = endstring + 1 + var outstr string + if (endstring > 0) && (endstring < len(flirt)) { + outstr = fmt.Sprintf("%s, %s%s <3", + string(flirt[0:endstring]), + ppl, + string(flirt[endstring:len(flirt)]) ) + } else { + outstr = fmt.Sprintf("%s, %s <3", + flirt, ppl ) + } + + sendmsg(foo.conn, ircmsg.channel, outstr) + } else if strings.HasPrefix(ircmsg.msg, ">hate") { + // hate + var ppl string + if len(ircmsg.msg) > 6 { + ppl = string(([]rune(ircmsg.msg))[6:len(ircmsg.msg)]) + } else { + ppl = ircmsg.author + } + + db, err := sql.Open("sqlite3", "./boddle.db") + if err != nil { + panic(err) + return true + } + + rows, err := db.Query("select e.hate from hate e ORDER BY RANDOM() LIMIT 1") + if err != nil { + panic(err) return true + } + var hate string + for rows.Next() { + var curr string + rows.Scan(&curr) + hate = curr + } + rows.Close() + + endstring := len(hate)-1 + + for endstring > 0 { + curr := int(hate[endstring]) + if (curr > 64 && curr < 91) || (curr > 96 && curr < 123) { + break; + } + endstring = endstring - 1 + } + endstring = endstring + 1 + var outstr string + if (endstring > 0) && (endstring < len(hate)) { + outstr = fmt.Sprintf("%s, %s%s :/", + string(hate[0:endstring]), + ppl, + string(hate[endstring:len(hate)]) ) } else { - sendmsg(foo.conn, ircmsg.channel, fmt.Sprintf("%s, %s <3", flirt, fmt.Sprintf(strings.Join(ppl, ", ")))) + outstr = fmt.Sprintf("%s, %s :/", + hate, ppl ) } + sendmsg(foo.conn, ircmsg.channel, outstr) } else if strings.HasPrefix(ircmsg.msg, "horscchtey: fix") { sendmsg(foo.conn, ircmsg.channel, "Hat mich denn hier niemand so lieb, wie ich bin? :(") } else if strings.HasPrefix(ircmsg.msg, ">add flirt") { @@ -353,6 +426,95 @@ func parsemsg(line string, foo bot) bool { return true } sendmsg(foo.conn, ircmsg.channel, "congrats, no woman will ever like you") + } else if strings.HasPrefix(ircmsg.msg, ">add flirt") { + if ! jokeusers[ircmsg.author] { + sendmsg(foo.conn, ircmsg.channel, "ur a cum-puter sciene student, learn how to flirt!") + } + t := strings.SplitN(ircmsg.msg, "add flirt ",2) + if len(t) != 2 { + sendmsg(foo.conn, ircmsg.channel, fmt.Sprintf("usage: add flirt <really romantic stuff here>")) + return true + } + flirt := t[1] + + // open database + db, err := sql.Open("sqlite3", "./boddle.db") + if err != nil { + panic(err) + return true + } + + // get number of jokes + var count int + row := db.QueryRow("SELECT COUNT(*) FROM flirt") + err = row.Scan(&count) + if err != nil { + fmt.Printf("num failed\n") + } + // insert ... + statement, err := db.Prepare ("insert into flirt (id, flirt) values (?,?)") + if err != nil { + fmt.Printf("nargh") + } + _, err = statement.Exec(count, flirt); + if err != nil { + panic(err) + return true + } + sendmsg(foo.conn, ircmsg.channel, "congrats, no woman will ever like you") + } else if strings.HasPrefix(ircmsg.msg, ">add hate") { + if ! jokeusers[ircmsg.author] { + sendmsg(foo.conn, ircmsg.channel, "ur a cum-puter sciene student, learn how to hate!") + } + t := strings.SplitN(ircmsg.msg, "add hate ",2) + if len(t) != 2 { + sendmsg(foo.conn, ircmsg.channel, fmt.Sprintf("usage: add hate <really romantic stuff here>")) + return true + } + hate := t[1] + + // open database + db, err := sql.Open("sqlite3", "./boddle.db") + if err != nil { + panic(err) + return true + } + // insert ... + statement, err := db.Prepare ("insert into hate (hate) values (?)") + if err != nil { + fmt.Printf("nargh") + } + _, err = statement.Exec(hate); + if err != nil { + panic(err) + return true + } + sendmsg(foo.conn, ircmsg.channel, "congrats, no woman will ever like you") + } else if strings.HasPrefix(ircmsg.msg, ">add wisdom") { + t := strings.SplitN(ircmsg.msg, "add wisdom ",2) + if len(t) != 2 { + sendmsg(foo.conn, ircmsg.channel, fmt.Sprintf("usage: add wisdom <really romantic stuff here>")) + return true + } + wisdom := t[1] + + // open database + db, err := sql.Open("sqlite3", "./boddle.db") + if err != nil { + panic(err) + return true + } + // insert ... + statement, err := db.Prepare ("insert into wisdom (wisdom) values (?)") + if err != nil { + fmt.Printf("nargh") + } + _, err = statement.Exec(wisdom); + if err != nil { + panic(err) + return true + } + sendmsg(foo.conn, ircmsg.channel, "wise words added") } else if strings.HasPrefix(ircmsg.msg, ">idb") { // idb t := strings.SplitN(ircmsg.msg, " ", 2) @@ -451,6 +613,15 @@ func parsemsg(line string, foo bot) bool { sorrybro := "Sorry bro I did not understand that..." helpingoffer := "you can type >help for more information on my skills" sendmsg(foo.conn, ircmsg.channel, fmt.Sprintf("%s %s", sorrybro, helpingoffer)) + } else if (rand.Int()%50) == 0 && arsch == true { + var words []string + for _, v := range strings.Split(ircmsg.msg, " ") { + words = append(words, v) + } + if len(words) > 2 { + words[rand.Int()%len(words)] = "arsch" + } + sendmsg(foo.conn, ircmsg.channel, fmt.Sprintf(strings.Join(words, " "))) } return true } -- GitLab