Made nick_clean function to handle all nick de-decorating

This commit is contained in:
Shauna 2014-10-18 00:48:09 -04:00
parent 59f9caeadc
commit 06077c3e63

19
bot.py
View File

@ -6,9 +6,9 @@ from threading import Thread
# Some basic variables used to configure the bot. # Some basic variables used to configure the bot.
server = "irc.freenode.net" server = "irc.freenode.net"
channel = "#openhatch" # Please use #openhatch-bots rather than #openhatch for testing channel = "#openhatch-bots" # Please use #openhatch-bots rather than #openhatch for testing
botnick = "WelcomeBot" botnick = "WelcomeBot"
channel_greeters = ['shauna', 'paulproteus', 'marktraceur'] channel_greeters = ['shauna'] #, 'paulproteus', 'marktraceur']
hello_list = [r'hello', r'hi', r'hey', r'yo', r'sup'] hello_list = [r'hello', r'hi', r'hey', r'yo', r'sup']
help_list = [r'help', r'info', r'faq', r'explain yourself'] help_list = [r'help', r'info', r'faq', r'explain yourself']
@ -20,13 +20,14 @@ help_list = [r'help', r'info', r'faq', r'explain yourself']
# Defines a bot # Defines a bot
class Bot(object): class Bot(object):
def __init__(self, nick_source='nicks.csv', wait_time=60): def __init__(self, nick_source='nicks.csv', wait_time=5):
self.nick_source = nick_source self.nick_source = nick_source
self.wait_time = wait_time self.wait_time = wait_time
self.known_nicks = [] self.known_nicks = []
with open(self.nick_source, 'rb') as csv_file: with open(self.nick_source, 'rb') as csv_file:
csv_file_data = csv.reader(csv_file, delimiter=',', quotechar='|') csv_file_data = csv.reader(csv_file, delimiter=',', quotechar='|')
for row in csv_file_data: for row in csv_file_data:
row = clean_nick(row[0]) # Sends nicks to remove unnecessary decorators. Hacked to deal with list-of-string format. :(
self.known_nicks.append(row) self.known_nicks.append(row)
self.newcomers = [] self.newcomers = []
self.hello_regex = re.compile(get_regex(hello_list), re.I) # Regexed version of hello list self.hello_regex = re.compile(get_regex(hello_list), re.I) # Regexed version of hello list
@ -115,10 +116,20 @@ def process_newcomers(bot, newcomerlist, ircsock, welcome=1):
def parse_messages(ircmsg): def parse_messages(ircmsg):
try: try:
actor = ircmsg.split(":")[1].split("!")[0] # and get the nick of the msg sender actor = ircmsg.split(":")[1].split("!")[0] # and get the nick of the msg sender
actor = clean_nick(actor)
return " ".join(ircmsg.split()), actor return " ".join(ircmsg.split()), actor
except: except:
return None, None return None, None
# Cleans a nickname of decorators/identifiers
def clean_nick(actor):
actor = actor.replace("_", "") # Strip out trailing _ characters
while(actor[-1]) in "1234567890": # Remove trailing numbers
actor = actor[:-1]
if ('|' in actor): # Remove location specifiers, etc.
actor = actor.split('|')[0]
return actor
# Parses messages and responds to them appropriately. # Parses messages and responds to them appropriately.
def message_response(bot, ircmsg, actor, ircsock): def message_response(bot, ircmsg, actor, ircsock):
@ -135,7 +146,7 @@ def message_response(bot, ircmsg, actor, ircsock):
if ircmsg.find("NICK :") != -1 and actor != botnick: if ircmsg.find("NICK :") != -1 and actor != botnick:
for i in bot.newcomers: # if that person was in the newlist for i in bot.newcomers: # if that person was in the newlist
if i.nick == actor: if i.nick == actor:
i.nick = ircmsg.split(":")[2] # update to new nick i.nick = clean_nick(ircmsg.split(":")[2]) # update to new nick (and clean up the nick)
# If someone parts or quits the #channel... # If someone parts or quits the #channel...
if ircmsg.find("PART " + channel) != -1 or ircmsg.find("QUIT") != -1: if ircmsg.find("PART " + channel) != -1 or ircmsg.find("QUIT") != -1: