From d7842734ac319e7ffb75278b4871e1add4e74bb8 Mon Sep 17 00:00:00 2001 From: Russell Date: Tue, 20 Nov 2018 16:41:16 -0500 Subject: [PATCH] Added some more debugging stuffs to banterbot. Fixed some utils --- Code/irc/banterbot.py | 82 +++++++++++++++++++++++--------------- Code/irc/run_banter.sh | 2 +- Code/irc/tildescores.txt | 28 ++++++------- Code/irc/tumblr.py | 2 +- Code/irc/util.py | 17 +++++++- Code/irc/whosaid.py | 6 +-- Code/irc/wikiphilosophy.py | 5 ++- 7 files changed, 87 insertions(+), 55 deletions(-) diff --git a/Code/irc/banterbot.py b/Code/irc/banterbot.py index 4c35bc6..7b4f3b7 100755 --- a/Code/irc/banterbot.py +++ b/Code/irc/banterbot.py @@ -55,6 +55,14 @@ parser.add_argument( help="the nick to use", metavar="NICK", ) +parser.add_argument( + "-o", + "--owner", + dest="owner", + default="krowbar", + help="the owner of this bot", + metavar="OWNER", +) args = parser.parse_args() @@ -225,7 +233,8 @@ def get_xkcd(channel, text): def get_wphilosophy(channel, text): - steps = wikiphilosophy.get_philosophy_lower(text[17:]) + util.sendmsg(ircsock, channel, "Ok, give me a minute while I look up '{}'".format(text)) + steps = wikiphilosophy.get_philosophy_lower(text) if not steps: util.sendmsg( ircsock, channel, "Couldn't find a wikipedia entry for {}".format(text) @@ -302,7 +311,7 @@ def get_whosaid(channel, text): def get_notice(user, channel): - ircsock.send("CNOTICE " + user + " " + channel + " :Notice me senpai!\r\n") + util.notice(ircsock, user, channel, "Notice me senpai!") def get_water(user, channel, msg, botnick): @@ -316,12 +325,9 @@ def mug_off(channel): def rollcall(channel): text = """ - U wot m8? I score all the top drawer #banter and #bantz on this channel! - Find new top-shelf banter with !newbanter, !rhymes, and !define. - Look up things with !acronym and !whosaid. - Make your chatter #legend with !rainbow, !toilet, and !figlet. - Find interesting things with !xkcd and !wiki-philosophy. - Get jokes with !welch and !evil + U wot m8? I score all the top drawer #banter and #bantz on this channel! / Find new top-shelf banter with !newbanter, !rhymes, and !define. + Look up things with !acronym and !whosaid / Make your chatter #legend with !rainbow, !toilet, and !figlet. + Find interesting things with !xkcd and !wiki-philosophy / Get jokes with !welch !evil !kjp and !help """ for line in textwrap.dedent(text).split("\n"): if line == "": @@ -337,6 +343,7 @@ def listen(botnick): if ircmsg[:4] == "PING": util.ping(ircsock, ircmsg) + print("** " + ircmsg) continue formatted = util.format_message(ircmsg) @@ -344,66 +351,77 @@ def listen(botnick): if "" == formatted: continue - # print formatted + print(formatted) _time, user, _command, channel, messageText = formatted.split("\t") - if ircmsg.find("#banter") != -1 or ircmsg.find("#bantz") != -1: + if messageText.find("#banter") != -1 or messageText.find("#bantz") != -1: score_banter(channel, user, messageText) - if ircmsg.find(":!newbanter") != -1: + if messageText.startswith("!newbanter"): get_new_banter(channel, user) - if ircmsg.find(":!rhymes") != -1: + if messageText.startswith("!rhymes"): get_rhymes(channel, user, messageText) - if ircmsg.find(":!define") != -1: + if messageText.startswith("!define"): define_word(channel, user, messageText) - if ircmsg.find(":!rainbow") != -1: + if messageText.startswith("!rainbow"): make_rainbow(channel, user, messageText) - if ircmsg.find(":!welch") != -1: + if messageText.startswith("!welch"): get_welch(channel) - if ircmsg.find(":!evil") != -1: + if messageText.startswith("!evil"): get_evil(channel) - if ircmsg.find(":!kjp") != -1: + if messageText.startswith("!kjp"): get_tumble("http://kingjamesprogramming.tumblr.com", channel) - if ircmsg.find(":!help") != -1: + if messageText.startswith("!help"): get_tumble("http://thedoomthatcametopuppet.tumblr.com", channel) - if ircmsg.find(":!xkcd") != -1: + if messageText.startswith("!xkcd"): get_xkcd(channel, messageText) - if ircmsg.find(":!wiki-philosophy") != -1: - get_wphilosophy(channel, messageText) - if ircmsg.find(":!figlet") != -1: + if messageText.startswith("!wiki-philosophy"): + get_wphilosophy(channel, messageText[17:]) + + if messageText.startswith("!figlet"): figlet(channel, messageText[8:]) - if ircmsg.find(":!toilet") != -1: + if messageText.startswith("!toilet"): toilet(channel, messageText[8:]) - if ircmsg.find(":!acronym") != -1: + if messageText.startswith("!acronym"): get_acronym(channel, messageText[9:]) - if ircmsg.find(":!whosaid") != -1: + if messageText.startswith("!whosaid"): get_whosaid(channel, messageText[9:]) - if ircmsg.find(":!notice") != -1: + if messageText.startswith("!notice"): get_notice(user, channel) - if ircmsg.find(":!water") != -1: + if messageText.startswith("!water"): get_water(user, channel, messageText[7:], botnick) - if ircmsg.find(":!rollcall") != -1: + if messageText.startswith("!rollcall"): rollcall(channel) - if ircmsg.find(":" + botnick + ":") != -1: + if messageText.startswith(botnick + ":"): mug_off(channel) + if messageText.startswith("!join") and user == args.owner: + util.joinchan(ircsock, messageText[6:]) + + if messageText.startswith("!part") and user == args.owner: + util.part(ircsock, messageText[6:]) + + if messageText.startswith("!quit") and user == args.owner: + util.part(ircsock, "Later chumps!") + return + sys.stdout.flush() time.sleep(1) @@ -412,6 +430,6 @@ def listen(botnick): # ROOT: i commented this out until it stops pegging the CPU. -#ircsock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) -#util.connect(ircsock, args) -#listen(args.nick) +ircsock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) +util.connect(ircsock, args) +listen(args.nick) diff --git a/Code/irc/run_banter.sh b/Code/irc/run_banter.sh index 2e3b02d..7bd4253 100755 --- a/Code/irc/run_banter.sh +++ b/Code/irc/run_banter.sh @@ -3,7 +3,7 @@ if [[ ! `pidof -sx banterbot.py` ]]; then #nohup ./banterbot.py -s 127.0.0.1:6667 -n banterbot -c \#tildetown \#bots >> banterlog 2>> banterlog & echo "Starting banterbot" - nohup ./banterbot.py -s 127.0.0.1:6667 -n banterbot -c \#bots >> banterlog 2>> banterlog & + nohup ./banterbot.py -s 127.0.0.1:6667 -n banterbot -c \#tildetown \#bots >> banterlog 2>> banterlog & else echo "Banterbot has already been started" fi diff --git a/Code/irc/tildescores.txt b/Code/irc/tildescores.txt index 712bcbf..242e9e6 100644 --- a/Code/irc/tildescores.txt +++ b/Code/irc/tildescores.txt @@ -1,4 +1,4 @@ -krowbar&^%2590&^%1542633864 +krowbar&^%2596&^%1542728099 karlen&^%498&^%1527613440 endorphant&^%801&^%1444775660 jumblesale&^%25&^%1426171214 @@ -43,7 +43,7 @@ cosnok&^%807&^%1508878859 escobar&^%1&^%1475431401 amicabot&^%30&^%1481225205 caff&^%1030&^%1540040705 -kadin&^%18&^%1541514839 +kadin&^%19&^%1542733284 desvox&^%36&^%1542379512 mankins&^%3&^%1480211581 cinch&^%2&^%1480454755 @@ -57,7 +57,7 @@ tehfraga&^%671&^%1542490496 sushi&^%10&^%1493253212 troido&^%302&^%1538991819 gamebot&^%203&^%1542505151 -nilaky&^%1501&^%1542491307 +nilaky&^%1511&^%1542738605 bucket&^%103&^%1507931139 lolbot&^%1&^%1502568407 m455&^%12&^%1512076715 @@ -70,8 +70,8 @@ pinhook&^%8&^%1509744722 emfor&^%3&^%1509671353 k2l8m11n2&^%11&^%1510932395 sacredpix&^%3&^%1522082931 -deltawitch&^%3304&^%1542620562 -login&^%2633&^%1542634018 +deltawitch&^%3309&^%1542655912 +login&^%2643&^%1542737740 kelpiebot&^%3&^%1513101957 unreal&^%2&^%1534387108 tildethief&^%7421&^%1542467787 @@ -90,7 +90,7 @@ saturn597&^%3&^%1521429369 cwmccabe&^%2&^%1521598124 lucidiot&^%28&^%1526201925 tracer&^%1&^%1521744878 -jan6&^%1116&^%1542487863 +jan6&^%1116&^%1542729468 jan&^%10&^%1522319160 etathetae&^%3&^%1522937843 eeeeeta&^%52&^%1540361066 @@ -104,10 +104,10 @@ lunasspec&^%4&^%1524164784 littlebigly&^%49&^%1535927253 severak&^%17&^%1540822455 ralph&^%4&^%1526980620 -von&^%425&^%1542623529 +von&^%426&^%1542728162 ensis&^%1750&^%1539356542 simon&^%26&^%1527937489 -benharri&^%2277&^%1542609742 +benharri&^%2295&^%1542743369 cpb&^%3&^%1528930564 calmbit&^%160&^%1542220635 wisebot&^%5652&^%1542183214 @@ -118,23 +118,23 @@ pounce&^%19&^%1532133325 von_&^%5&^%1532502104 livix&^%7&^%1533603142 ben&^%3&^%1533767627 -npa&^%139&^%1542620546 +npa&^%146&^%1542708198 ezo&^%6&^%1533883842 aliasless&^%36&^%1541001821 -kirch&^%213&^%1542401397 +kirch&^%217&^%1542659656 root&^%2&^%1535558514 byte&^%5&^%1536416308 qbe&^%7&^%1537850181 informati&^%3&^%1536733938 h00fi&^%1&^%1537050053 -fantoro&^%26&^%1542538478 -benjaminwil&^%550&^%1542409435 +fantoro&^%31&^%1542657642 +benjaminwil&^%553&^%1542737924 diodelass&^%3&^%1539382302 brendantcc&^%3&^%1539908223 dozens&^%21&^%1542222479 bowlercaptain&^%6&^%1540926135 nicole&^%6&^%1541276844 midnightpupil&^%12&^%1542216854 -ahriman&^%79&^%1542617214 -tunas&^%37&^%1542583679 +ahriman&^%97&^%1542748742 +tunas&^%79&^%1542748854 khuxkm&^%2&^%1542566334 diff --git a/Code/irc/tumblr.py b/Code/irc/tumblr.py index c4411d2..286848a 100644 --- a/Code/irc/tumblr.py +++ b/Code/irc/tumblr.py @@ -41,7 +41,7 @@ def tumble(url): ) # just the date and notes - return quote.encode("ascii", "ignore") + return quote except: # sometimes we fail. let's retry a few times if tries == 0: return "" diff --git a/Code/irc/util.py b/Code/irc/util.py index d5e9b89..c68ce04 100644 --- a/Code/irc/util.py +++ b/Code/irc/util.py @@ -3,15 +3,28 @@ import time import random import re +MAX_LINE = 400 + def ping(ircsock, msg): ircsock.send("PONG {}\n".format(msg.split(" ")[1]).encode()) def sendmsg(ircsock, chan, msg): - print("sending {} to {}".format(msg, chan)) - ircsock.send("PRIVMSG {} :{}\r\n".format(chan, msg).encode()) + print("sending {} to {}".format(msg, chan)[0:MAX_LINE]) + ircsock.send("PRIVMSG {} :{}\r\n".format(chan, msg).encode()[0:MAX_LINE]) +def notice(ircsock, user, chan, msg): + print("sending notice {} to {} in {}".format(msg, user, chan)[0:MAX_LINE]) + ircsock.send("CNOTICE {} {} :{}\r\n".format(user, chan, msg).encode()[0:MAX_LINE]) + +def part(ircsock, chan, msg="Bye!"): + print("leaving channel {}".format(chan)) + ircsock.send("PART {} {}\r\n".format(chan, msg).encode()) + +def quit(ircsock, msg="Quitting!"): + print("!! quitting !!") + ircsock.send("QUIT {}".format(msg).encode()) def joinchan(ircsock, chan): print("joining {}".format(chan)) diff --git a/Code/irc/whosaid.py b/Code/irc/whosaid.py index e16f19b..95fa54f 100755 --- a/Code/irc/whosaid.py +++ b/Code/irc/whosaid.py @@ -1,4 +1,4 @@ -#!/usr/bin/python +#!/usr/bin/python3 import fileinput import time import calendar @@ -7,7 +7,7 @@ import operator MAX_NODES = 5 -logfile = "/home/jumblesale/Code/irc/log" +logfile = "/home/archangelic/irc/log" timeCutoff = calendar.timegm(time.gmtime()) - (3 * 7 * 24 * 60 * 60) # 3 weeks nameFix = { @@ -31,7 +31,7 @@ def whoSaid(word): try: time, user, message = line.split("\t", 3) time = int(time) - if nameFix.has_key(user): + if user in nameFix: user = nameFix[user] else: user = user.lower() diff --git a/Code/irc/wikiphilosophy.py b/Code/irc/wikiphilosophy.py index 4b31359..93bc6a1 100644 --- a/Code/irc/wikiphilosophy.py +++ b/Code/irc/wikiphilosophy.py @@ -1,3 +1,4 @@ +#!/usr/bin/python3 import urllib from bs4 import BeautifulSoup import random @@ -9,7 +10,7 @@ def get_philosophy(word, max_steps=20): url = "https://en.wikipedia.org/wiki/%s" % word while steps < max_steps: - soup = BeautifulSoup(urllib.urlopen(url).read(), "html.parser") + soup = BeautifulSoup(urllib.request.urlopen(url).read(), "html.parser") title = soup.find("h1", id="firstHeading") content = soup.find("div", id="mw-content-text") if not content: @@ -49,7 +50,7 @@ def get_philosophy_lower(word, max_steps=20): url = "https://en.wikipedia.org/wiki/%s" % word while steps < max_steps: - soup = BeautifulSoup(urllib.urlopen(url).read(), "html.parser") + soup = BeautifulSoup(urllib.request.urlopen(url).read(), "html.parser") title = soup.find("h1", id="firstHeading") content = soup.find("div", id="mw-content-text") if not content: