Add channel_log module for per-channel logging

This commit is contained in:
jesopo 2019-03-06 13:36:46 +00:00
parent 9920721bc5
commit 77dd36cbf6
2 changed files with 34 additions and 0 deletions

View file

@ -0,0 +1,34 @@
import datetime, os.path
from src import ModuleManager, utils
ROOT_DIRECTORY = os.path.dirname(os.path.realpath(__file__))
LOGS_DIRECTORY = os.path.join(ROOT_DIRECTORY, "logs")
class Module(ModuleManager.BaseModule):
def _log_file(self, server_name, channel_name):
return open(os.path.join(LOGS_DIRECTORY,
"%s%s.log" % (server_name, channel_name)), "a")
def _log(self, event, channel):
if channel.get_setting("log", False):
with self._log_file(str(event["server"]), str(channel)) as log:
timestamp = datetime.datetime.now().strftime("%x %X")
log.write("%s %s\n" % (timestamp, event["raw_line"]))
@utils.hook("formatted.message.channel")
@utils.hook("formatted.notice.channel")
@utils.hook("formatted.join")
@utils.hook("formatted.part")
@utils.hook("formatted.nick")
@utils.hook("formatted.invite")
@utils.hook("formatted.mode.channel")
@utils.hook("formatted.topic")
@utils.hook("formatted.topic-timestamp")
@utils.hook("formatted.kick")
@utils.hook("formatted.quit")
@utils.hook("formatted.rename")
def on_formatted(self, event):
if event["channel"]:
self._log(event, event["channel"])
elif event["user"]:
for channel in event["user"].channels:
self._log(event, channel)

View file