Fixes register logic so we only need password.txt when register set to True

This commit is contained in:
Shauna 2015-03-14 16:54:36 -04:00
parent 971c13cc25
commit b148c9a1e6
1 changed files with 20 additions and 21 deletions

41
bot.py
View File

@ -1,7 +1,7 @@
# Welcome to WelcomeBot. Find source, documentation, etc here: https://github.com/shaunagm/WelcomeBot/ Licensed https://creativecommons.org/licenses/by-sa/2.0/ # Welcome to WelcomeBot. Find source, documentation, etc here: https://github.com/shaunagm/WelcomeBot/ Licensed https://creativecommons.org/licenses/by-sa/2.0/
# Import some necessary libraries. # Import some necessary libraries.
import socket, sys, time, csv, Queue, random, re, pdb, select import socket, sys, time, csv, Queue, random, re, pdb, select, os.path
from threading import Thread from threading import Thread
# Some basic variables used to configure the bot. # Some basic variables used to configure the bot.
@ -10,9 +10,9 @@ channel = "#openhatch" # Please use #openhatch-bots rather than #openhatch for
botnick = "WelcomeBot" botnick = "WelcomeBot"
channel_greeters = ['shauna', 'paulproteus', 'marktraceur'] channel_greeters = ['shauna', 'paulproteus', 'marktraceur']
wait_time = 60 wait_time = 60
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']
registered = true # If users don't want to identify, change the value to false. registered = False # If users don't want to identify, change the value to false.
######################### #########################
@ -44,7 +44,7 @@ class Bot(object):
quoting=csv.QUOTE_MINIMAL) quoting=csv.QUOTE_MINIMAL)
nickwriter.writerow([new_known_nick]) nickwriter.writerow([new_known_nick])
# Defines a newcomer object # Defines a newcomer object
class NewComer(object): class NewComer(object):
def __init__(self, nick, bot): def __init__(self, nick, bot):
@ -58,7 +58,7 @@ class NewComer(object):
######################### #########################
### Startup Functions ### ### Startup Functions ###
######################### #########################
# Creates a socket that will be used to send and receive messages, # Creates a socket that will be used to send and receive messages,
@ -67,15 +67,16 @@ def irc_start(): # pragma: no cover (this excludes this function from testing)
ircsock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) ircsock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
ircsock.connect((server, 6667)) # Here we connect to server using port 6667. ircsock.connect((server, 6667)) # Here we connect to server using port 6667.
return ircsock return ircsock
def join_irc(ircsock): def join_irc(ircsock):
ircsock.send("USER {0} {0} {0} :This is http://openhatch.org/'s greeter bot" ircsock.send("USER {0} {0} {0} :This is http://openhatch.org/'s greeter bot"
".\n".format(botnick)) # bot authentication ".\n".format(botnick)) # bot authentication
ircsock.send("NICK {}\n".format(botnick)) # Assign the nick to the bot. ircsock.send("NICK {}\n".format(botnick)) # Assign the nick to the bot.
with open("password.txt", 'r') as f: if os.path.isfile("password.txt"):
password = f.read() with open("password.txt", 'r') as f:
if registered == true: password = f.read()
ircsock.send("PRIVMSG {} {} {} {}".format("NickServ","IDENTIFY", botnick, password)) if registered == True:
ircsock.send("PRIVMSG {} {} {} {}".format("NickServ","IDENTIFY", botnick, password))
ircsock.send("JOIN {} \n".format(channel)) # Joins channel ircsock.send("JOIN {} \n".format(channel)) # Joins channel
# Reads the messages from the server and adds them to the Queue and prints # Reads the messages from the server and adds them to the Queue and prints
@ -117,7 +118,7 @@ def process_newcomers(bot, newcomerlist, ircsock, welcome=1):
if welcome == 1: if welcome == 1:
welcome_nick(person.nick, ircsock) welcome_nick(person.nick, ircsock)
bot.add_known_nick(person.clean_nick) bot.add_known_nick(person.clean_nick)
bot.newcomers.remove(person) bot.newcomers.remove(person)
# Checks for messages. # Checks for messages.
def parse_messages(ircmsg): def parse_messages(ircmsg):
@ -126,7 +127,7 @@ def parse_messages(ircmsg):
return " ".join(ircmsg.split()), actor return " ".join(ircmsg.split()), actor
except: except:
return None, None return None, None
# Cleans a nickname of decorators/identifiers # Cleans a nickname of decorators/identifiers
def clean_nick(actor): def clean_nick(actor):
if actor: # In case an empty string gets passed if actor: # In case an empty string gets passed
@ -150,9 +151,9 @@ def message_response(bot, ircmsg, actor, ircsock):
if ircmsg.find("JOIN " + channel) != -1 and actor != botnick: if ircmsg.find("JOIN " + channel) != -1 and actor != botnick:
if [clean_nick(actor)] not in bot.known_nicks + [i.clean_nick for i in bot.newcomers]: # And they're new if [clean_nick(actor)] not in bot.known_nicks + [i.clean_nick for i in bot.newcomers]: # And they're new
NewComer(actor, bot) NewComer(actor, bot)
# if someone changes their nick while still in newcomers update that nick # if someone changes their nick while still in newcomers update that nick
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 (and clean up the nick) i.nick = ircmsg.split(":")[2] # update to new nick (and clean up the nick)
@ -223,15 +224,15 @@ def wait_time_change(actor, ircmsg, ircsock):
# Responds to server Pings. # Responds to server Pings.
def pong(ircsock): def pong(ircsock):
ircsock.send("PONG :pingis\n") ircsock.send("PONG :pingis\n")
########################## ##########################
### The main function. ### ### The main function. ###
########################## ##########################
def main(): def main():
ircsock = irc_start() ircsock = irc_start()
join_irc(ircsock) join_irc(ircsock)
WelcomeBot = Bot() WelcomeBot = Bot()
while 1: # Loop forever while 1: # Loop forever
@ -245,5 +246,3 @@ def main():
if __name__ == "__main__": # This line tells the interpreter to only execute main() if the program is being run, not imported. if __name__ == "__main__": # This line tells the interpreter to only execute main() if the program is being run, not imported.
sys.exit(main()) sys.exit(main())