From bc54503ab4a688b1296a91f690a067e65566218d Mon Sep 17 00:00:00 2001 From: Horscchtey <eva.dengler@fau.de> Date: Sat, 11 Apr 2020 08:43:34 +0000 Subject: [PATCH] update. --- src/boddle.db | Bin 73728 -> 110592 bytes src/bot.go | 137 +++++++++++++++++++++++++++++--------------------- 2 files changed, 80 insertions(+), 57 deletions(-) diff --git a/src/boddle.db b/src/boddle.db index ab1582695156c8bb71bc67a2ada26bb4e1365965..c68bb08cdb3af69e5f08e528e0c83da0c4d58b6a 100644 GIT binary patch delta 34778 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 OGzOFd9SY7&&Hw<rr$cuD delta 304 zcmZp8z}9epWr7qNQvw46gV00;I}l5c)oEkO0(l`;{wE9!3=DkyzxluMzvBPE|75eG z!WRCC6J#ep*Oz6M;IP}wZeYx`v5|#svz^5;cP>W$-yjV_{J*#IF}~&JVPIeowBTZ3 zU<l#kp3H8ra<ig9H1B5adEX3UxgIlUG0kV<<>tA{vy>-}{|pZY_eSnS{v@t9Tno5l zINxzD=d|Lu!jZ-Pk9|LTIy*nxCAQ^k?rbcqCs>PE6<GGLw6G{KFK2FK4rO}9Z^n0l zFNIH@_c8A@rujT}8yg*&CJS8l-mHH0Cp#yP9RnxGSqzgE?v_sefA=;UZvbxqgTh2d znaO<jKd~?{Ft|-@blMz!`3&Rasduv`-@0eA=>dxYvkV9Kbanwo%Z-hv*|&2`Fn(nR E0MoZxR{#J2 diff --git a/src/bot.go b/src/bot.go index e7216a9..4ff1568 100644 --- a/src/bot.go +++ b/src/bot.go @@ -25,6 +25,10 @@ type bot struct { channel1 string channel2 string channel3 string + channel4 string + channel5 string + channel6 string + channel7 string port int server string conn net.Conn @@ -58,7 +62,7 @@ func scanline_privmsg (msg string) irc_msg { func parsemsg(line string, foo bot) bool { ircmsg := scanline_privmsg (line) - functs := []string{"help", "info", "meow", "jokes", "gra", "idb", "flirt", "add jokes", "add flirt", "geh schlafen", "deutsch"} + functs := []string{"help", "info", "meow", "jokes", "idb", "flirt", "add jokes", "add flirt", "geh schlafen", "deutsch"} blobs := []string{"frauen", "GRa", "egalwie", "scherzfragen", "sterben", "deinemudder", "gulasch", "flach", "maenner", "telefon"} @@ -75,7 +79,27 @@ func parsemsg(line string, foo bot) bool { "zinn_des_lebens": true, } - if strings.HasPrefix(ircmsg.msg, "+help") { +/* + 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, " ") if len(input) == 2 { @@ -99,39 +123,37 @@ func parsemsg(line string, foo bot) bool { case "meow": helpmsg = "the bot changes to a not really helpful cat like every cat but is not fluffy during that phase so this function is kinda useless?" case "jokes": - helpmsg = fmt.Sprintf("call with +jokes for a random category, call with one or more categories from %s to receive a joke selected from those categories", fmt.Sprintf(strings.Join(blobs, ", "))) - case "gra": - helpmsg = "print famous citations from a small group of GRa-ndiose students" + helpmsg = fmt.Sprintf("call with >jokes for a random category, call with one or more categories from %s to receive a joke selected from those categories", fmt.Sprintf(strings.Join(blobs, ", "))) case "idb": - helpmsg = "get your personalized database-related nickname by calling +idb or get one for your friend with +idb <name>" + 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>" + helpmsg = "get flirt messages with >flirt or flirt with your best friend using >flirt <your love>" case "add jokes": - helpmsg = "type +add jokes for more information" + helpmsg = "type >add jokes for more information" case "add flirt": - helpmsg = "add your best pick up line using +add flirt <pickup line>" + helpmsg = "add your best pick up line using >add flirt <pickup line>" case "geh schlafen": helpmsg = "send the bot to sleep until the next reconnect" case "deutsch": - helpmsg = "get a personalized nickname, enriched by some mysterious german word, by calling +deutsch or get one for your friend with +deutsch <name>" + helpmsg = "get a personalized nickname, enriched by some mysterious german word, by calling >deutsch or get one for your friend with >deutsch <name>" } - sendmsg(foo.conn, ircmsg.channel, fmt.Sprintf("+%s: %s", req, helpmsg)) + sendmsg(foo.conn, ircmsg.channel, fmt.Sprintf(">%s: %s", req, helpmsg)) } } else if len(input) > 2 { sendmsg(foo.conn, ircmsg.channel, fmt.Sprintf("Please choose only one function for help: %s", fmt.Sprintf(strings.Join(functs, ", ")))) } else { sendmsg(foo.conn, ircmsg.channel, "Segmentation fault") - sendmsg(foo.conn, ircmsg.channel, fmt.Sprintf("I haz functs: %s, call +help <func> for more information on da function :)", + sendmsg(foo.conn, ircmsg.channel, fmt.Sprintf("I haz functs: %s, call >help <func> for more information on da function :)", fmt.Sprintf(strings.Join(functs, ", ")))) } - } else if strings.Compare(ircmsg.msg, "+info") == 0 { + } else if strings.Compare(ircmsg.msg, ">info") == 0 { // info sendmsg(foo.conn, ircmsg.channel, "created in golang with love, cats and tears >:)") - } else if strings.Compare(ircmsg.msg, "+meow") == 0 { + } else if strings.Compare(ircmsg.msg, ">meow") == 0 { // meow sendmsg(foo.conn, ircmsg.channel, meow[rand.Int()%len(meow)]) - } else if strings.HasPrefix(ircmsg.msg, "+jokes") { + } else if strings.HasPrefix(ircmsg.msg, ">jokes") { // jokes var jokes []string @@ -152,9 +174,9 @@ func parsemsg(line string, foo bot) bool { var tasks string if (len(jokes) == 0) { - tasks = fmt.Sprintf("select e.line, c.name from jokes e join category c on c.id = e.category") + tasks = fmt.Sprintf("select e.line, c.name from jokes e join category c on c.id = e.category ORDER BY RANDOM() LIMIT 1") } else { - tasks = fmt.Sprintf("select e.line from jokes e join category c on c.id = e.category where c.name = '%s'", fmt.Sprintf(strings.Join(jokes, "' or c.name = '"))) + tasks = fmt.Sprintf("select e.line from jokes e join category c on c.id = e.category where c.name = '%s' ORDER BY RANDOM() LIMIT 1", fmt.Sprintf(strings.Join(jokes, "' or c.name = '"))) } rows, err := db.Query(tasks) @@ -162,35 +184,34 @@ func parsemsg(line string, foo bot) bool { panic(err) return true } - var joke []string - var cats []string + var joke string + var cats string for rows.Next() { if (len(jokes) == 0) { var curr string var catc string rows.Scan(&curr, &catc) - joke = append(joke, curr) - cats = append(cats, catc) + joke = curr + cats = catc } else { var curr string rows.Scan(&curr) - print(curr) - joke = append(joke, curr) + joke = curr } } rows.Close() + if (len(joke) == 0) { sendmsg(foo.conn, ircmsg.channel, "There are no jokes bitch. Or this programmer sucks...") } else { if (len(jokes) == 0) { - tmp := rand.Int()%len(joke) - sendmsg(foo.conn, ircmsg.channel, fmt.Sprintf("from category %s: %s", cats[tmp], joke[tmp])) + sendmsg(foo.conn, ircmsg.channel, fmt.Sprintf("from category %s: %s", cats, joke)) } else { - sendmsg(foo.conn, ircmsg.channel, joke[rand.Int()%len(joke)]) + sendmsg(foo.conn, ircmsg.channel, joke) } } - } else if strings.HasPrefix(ircmsg.msg, "+add jokes") { + } else if strings.HasPrefix(ircmsg.msg, ">add jokes") { if ! jokeusers[ircmsg.author] { sendmsg(foo.conn, ircmsg.channel, "lol bitch get funnier") // return true @@ -254,13 +275,19 @@ func parsemsg(line string, foo bot) bool { return true } sendmsg(foo.conn, ircmsg.channel, "i guess that worked") - } else if strings.HasPrefix(ircmsg.msg, "+flirt") { + } 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 ") { // flirt var ppl []string - for _, v := range strings.Split(ircmsg.msg, " ") { - if ! strings.HasPrefix(v, "+flirt") { - ppl = append(ppl, v) + if strings.HasPrefix(ircmsg.msg, ">flirt") { + for _, v := range strings.Split(ircmsg.msg, " ") { + if ! strings.HasPrefix(v, ">flirt") { + ppl = append(ppl, v) + } } + } else { + ppl = append(ppl,ircmsg.author) } db, err := sql.Open("sqlite3", "./boddle.db") @@ -269,26 +296,28 @@ func parsemsg(line string, foo bot) bool { return true } - rows, err := db.Query("select e.flirt from flirt e") + rows, err := db.Query("select e.flirt from flirt e ORDER BY RANDOM() LIMIT 1") if err != nil { panic(err) return true } - var flirt []string + var flirt string for rows.Next() { var curr string rows.Scan(&curr) - flirt = append(flirt, curr) + flirt = curr } rows.Close() if (len(ppl) == 0) { - sendmsg(foo.conn, ircmsg.channel, flirt[rand.Int()%len(flirt)]) + sendmsg(foo.conn, ircmsg.channel, flirt) return true } else { - sendmsg(foo.conn, ircmsg.channel, fmt.Sprintf("%s, %s <3", flirt[rand.Int()%len(flirt)], fmt.Sprintf(strings.Join(ppl, ", ")))) + sendmsg(foo.conn, ircmsg.channel, fmt.Sprintf("%s, %s <3", flirt, fmt.Sprintf(strings.Join(ppl, ", ")))) } - } else if strings.HasPrefix(ircmsg.msg, "+add flirt") { + } 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") { if ! jokeusers[ircmsg.author] { sendmsg(foo.conn, ircmsg.channel, "ur a cum-puter sciene student, learn how to flirt!") } @@ -324,15 +353,11 @@ 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, "+idb") { - // flirt - t := strings.SplitN(ircmsg.msg, "idb ", 2) + } else if strings.HasPrefix(ircmsg.msg, ">idb") { + // idb + t := strings.SplitN(ircmsg.msg, " ", 2) var name string - if len(t) > 2 { - sendmsg(foo.conn, ircmsg.channel, fmt.Sprintf("usage: deutsch <ONE name here>")) - return true - } - if len(t[1]) < 2 { + if len(t) < 2 { name = ircmsg.author } else { name = t[1] @@ -371,15 +396,11 @@ func parsemsg(line string, foo bot) bool { rows.Close() sendmsg(foo.conn, ircmsg.channel, fmt.Sprintf("%s-%s", idb[rand.Int()%len(idb)], name)) - } else if strings.HasPrefix(ircmsg.msg, "+deutsch") { - // flirt - t := strings.SplitN(ircmsg.msg, "deutsch ", 2) + } else if strings.HasPrefix(ircmsg.msg, ">deutsch") { + // deutsch + t := strings.SplitN(ircmsg.msg, " ", 2) var name string - if len(t) > 2 { - sendmsg(foo.conn, ircmsg.channel, fmt.Sprintf("usage: deutsch <ONE name here>")) - return true - } - if len(t[1]) < 2 { + if len(t) < 2 { name = ircmsg.author } else { name = t[1] @@ -418,7 +439,7 @@ func parsemsg(line string, foo bot) bool { rows.Close() sendmsg(foo.conn, ircmsg.channel, fmt.Sprintf("%s-%s", idb[rand.Int()%len(idb)], name)) - } else if strings.Compare(ircmsg.msg, "+geh schlafen") == 0 { + } else if strings.Compare(ircmsg.msg, ">geh schlafen") == 0 { if strings.Compare(ircmsg.author, "horscchtey") == 0 || strings.Compare(ircmsg.author, "rincewind") == 0 { sendmsg(foo.conn, ircmsg.channel, "はい、マスター") @@ -426,9 +447,9 @@ func parsemsg(line string, foo bot) bool { } else { sendmsg(foo.conn, ircmsg.channel, "lol nope") } - } else if strings.HasPrefix(ircmsg.msg, "+") { + } else if strings.HasPrefix(ircmsg.msg, ">") { sorrybro := "Sorry bro I did not understand that..." - helpingoffer := "you can type +help for more information on my skills" + helpingoffer := "you can type >help for more information on my skills" sendmsg(foo.conn, ircmsg.channel, fmt.Sprintf("%s %s", sorrybro, helpingoffer)) } return true @@ -491,6 +512,7 @@ func connect(boddle bot) <-chan []byte { fmt.Fprintf(boddle.conn, "JOIN %s\r\n", boddle.channel1) fmt.Fprintf(boddle.conn, "JOIN %s\r\n", boddle.channel2) fmt.Fprintf(boddle.conn, "JOIN %s\r\n", boddle.channel3) + fmt.Fprintf(boddle.conn, "JOIN %s\r\n", boddle.channel4) return listenToIRC(boddle) } @@ -503,7 +525,8 @@ func main() { channel0: "#faui2k16", channel1: "#fau", channel2: "#faui2k18", - channel3: "#faui2k19", + channel3: "#sigfreibad", + channel4: "#faui2k15", port: 6667, server: "irc.fau.de", } -- GitLab