diff --git a/ircbot.py b/ircbot.py index 62a0ea0..4d6abdb 100644 --- a/ircbot.py +++ b/ircbot.py @@ -11,6 +11,39 @@ import line_handling Server = namedtuple('Server', ['host', 'port', 'nick', 'realname', 'channels']) +# API(serverthread_object) +# Create a new API object corresponding to given ServerThread object +class API: + def __init__(self, serverthread_object): + # We need to access the internal functions of the ServerThread object in order to send lines etc. + self.serverthread_object = serverthread_object + + def send_raw(self, line): + self.serverthread_object.send_line_raw(line) + + def msg(self, recipient, message): + """Make sending PRIVMSGs much nicer""" + line = b'PRIVMSG ' + recipient + b' :' + message + self.serverthread_object.send_line_raw(line) + + def nick(self, nick): + # Send a NICK command and update the internal nick tracking state + with self.serverthread_object.nick_lock: + line = b'NICK ' + nick + self.serverthread_object.send_line_raw(line) + self.serverthread_object.nick = nick + + def join(self, channel): + # Send a JOIN command and update the internal channel tracking state + with self.serverthread_object.channels_lock: + line = b'JOIN ' + channel + self.serverthread_object.send_line_raw(line) + self.serverthread_object.channels.add(channel) + + def error(self, message): + self.serverthread_object.logging_channel.send((constants.logmessage_types.internal, constants.internal_submessage_types.error, message)) + + # ServerThread(server, control_socket) # Creates a new server main loop thread class ServerThread(threading.Thread): @@ -108,7 +141,7 @@ class ServerThread(threading.Thread): return # Create an API object to give to outside line handler - self.api = line_handling.API(self) + self.api = API(self) # Run initialization self.send_line_raw(b'USER HynneFlip a a :' + self.server.realname.encode('utf-8')) diff --git a/line_handling.py b/line_handling.py index b504c93..6b84b45 100644 --- a/line_handling.py +++ b/line_handling.py @@ -4,36 +4,6 @@ import constants import botcmd -class API: - def __init__(self, serverthread_object): - # We need to access the internal functions of the ServerThread object in order to send lines etc. - self.serverthread_object = serverthread_object - - def send_raw(self, line): - self.serverthread_object.send_line_raw(line) - - def msg(self, recipient, message): - """Make sending PRIVMSGs much nicer""" - line = b'PRIVMSG ' + recipient + b' :' + message - self.serverthread_object.send_line_raw(line) - - def nick(self, nick): - # Send a NICK command and update the internal nick tracking state - with self.serverthread_object.nick_lock: - line = b'NICK ' + nick - self.serverthread_object.send_line_raw(line) - self.serverthread_object.nick = nick - - def join(self, channel): - # Send a JOIN command and update the internal channel tracking state - with self.serverthread_object.channels_lock: - line = b'JOIN ' + channel - self.serverthread_object.send_line_raw(line) - self.serverthread_object.channels.add(channel) - - def error(self, message): - self.serverthread_object.logging_channel.send((constants.logmessage_types.internal, constants.internal_submessage_types.error, message)) - class LineParsingError(Exception): None # parse_line(line) → prefix, command, arguments