Made nick_clean function to handle all nick de-decorating
This commit is contained in:
parent
59f9caeadc
commit
06077c3e63
19
bot.py
19
bot.py
@ -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:
|
||||||
|
Loading…
Reference in New Issue
Block a user