diff options
| -rw-r--r-- | modules/line_handler.py (renamed from src/IRCLineHandler.py) | 31 | ||||
| -rw-r--r-- | src/IRCBot.py | 6 | ||||
| -rw-r--r-- | src/IRCServer.py | 2 | ||||
| -rwxr-xr-x | start.py | 5 |
4 files changed, 23 insertions, 21 deletions
diff --git a/src/IRCLineHandler.py b/modules/line_handler.py index 805daa20..41fa73cf 100644 --- a/src/IRCLineHandler.py +++ b/modules/line_handler.py @@ -1,5 +1,5 @@ import re, threading -from . import Utils +from src import Utils RE_PREFIXES = re.compile(r"\bPREFIX=\((\w+)\)(\W+)(?:\b|$)") RE_CHANMODES = re.compile( @@ -13,11 +13,12 @@ CAPABILITIES = {"multi-prefix", "chghost", "invite-notify", "account-tag", "draft/message-tags-0.2", "server-time", "cap-notify", "batch", "draft/labeled-response"} -class LineHandler(object): - def __init__(self, events, timers): +class Module(object): + def __init__(self, bot, events, exports): + self.bot = bot self.events = events - self.timers = timers - events.on("raw.PING").hook(self.ping) + + events.on("raw").hook(self.handle) events.on("raw.001").hook(self.handle_001, default_event=True) events.on("raw.005").hook(self.handle_005) @@ -34,6 +35,7 @@ class LineHandler(object): events.on("raw.433").hook(self.handle_433, default_event=True) events.on("raw.477").hook(self.handle_477, default_event=True) + events.on("raw.PING").hook(self.ping) events.on("raw.JOIN").hook(self.join) events.on("raw.PART").hook(self.part) events.on("raw.QUIT").hook(self.quit) @@ -53,8 +55,8 @@ class LineHandler(object): events.on("raw.AWAY").hook(self.away) events.on("raw.BATCH").hook(self.batch) - def handle(self, server, line): - original_line = line + def handle(self, event): + line = original_line = event["line"] tags = {} prefix = None command = None @@ -65,7 +67,7 @@ class LineHandler(object): if tag: tag_split = tag.split("=", 1) tags[tag_split[0]] = "".join(tag_split[1:]) - if "batch" in tags and tags["batch"] in server.batches: + if "batch" in tags and tags["batch"] in event["server"].batches: server.batches[tag["batch"]].append(line) return @@ -96,17 +98,20 @@ class LineHandler(object): last = arbitrary or args[-1] #server, prefix, command, args, arbitrary - self.events.on("raw").on(command).call(server=server, last=last, - prefix=prefix, args=args, arbitrary=arbitrary, tags=tags) + self.events.on("raw").on(command).call(server=event["server"], + last=last, prefix=prefix, args=args, arbitrary=arbitrary, + tags=tags) if default_event or not hooks: if command.isdigit(): self.events.on("received.numeric").on(command).call( - line=original_line, server=server, tags=tags, last=last, - line_split=original_line.split(" "), number=command) + line=original_line, server=event["server"], tags=tags, + last=last, line_split=original_line.split(" "), + number=command) else: self.events.on("received").on(command).call( line=original_line, line_split=original_line.split(" "), - command=command, server=server, tags=tags, last=last) + command=command, server=event["server"], tags=tags, + last=last) # ping from the server def ping(self, event): diff --git a/src/IRCBot.py b/src/IRCBot.py index 01121978..a776d8d6 100644 --- a/src/IRCBot.py +++ b/src/IRCBot.py @@ -1,10 +1,9 @@ import os, select, sys, threading, time, traceback, uuid -from . import EventManager, Exports, IRCLineHandler, IRCServer, Logging -from . import ModuleManager +from . import EventManager, Exports, IRCServer, Logging, ModuleManager class Bot(object): def __init__(self, directory, args, cache, config, database, events, - exports, line_handler, log, modules, timers): + exports, log, modules, timers): self.directory = directory self.args = args self.cache = cache @@ -12,7 +11,6 @@ class Bot(object): self.database = database self._events = events self._exports = exports - self.line_handler = line_handler self.log = log self.modules = modules self.timers = timers diff --git a/src/IRCServer.py b/src/IRCServer.py index d88cc38a..4e4281fb 100644 --- a/src/IRCServer.py +++ b/src/IRCServer.py @@ -198,7 +198,7 @@ class Server(object): def parse_line(self, line): if not line: return - self.bot.line_handler.handle(self, line) + self.events.on("raw").call(server=self, line=line) self.check_users() def check_users(self): for user in self.new_users: @@ -2,7 +2,7 @@ import argparse, os, sys, time from src import Cache, Config, Database, EventManager, Exports, IRCBot -from src import IRCLineHandler, Logging, ModuleManager, Timers +from src import Logging, ModuleManager, Timers def bool_input(s): result = input("%s (Y/n): " % s) @@ -37,12 +37,11 @@ database = Database.Database(log, args.database) events = events = EventManager.EventHook(log) exports = exports = Exports.Exports() timers = Timers.Timers(database, events, log) -line_handler = IRCLineHandler.LineHandler(events, timers) modules = modules = ModuleManager.ModuleManager(events, exports, config, log, os.path.join(directory, "modules")) bot = IRCBot.Bot(directory, args, cache, config, database, events, - exports, line_handler, log, modules, timers) + exports, log, modules, timers) whitelist = bot.get_setting("module-whitelist", []) blacklist = bot.get_setting("module-blacklist", []) |
