2019-03-06 13:36:46 +00:00
|
|
|
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")
|
|
|
|
|
2019-03-06 13:57:41 +00:00
|
|
|
@utils.export("channelset", {"setting": "log",
|
|
|
|
"help": "Enable/disable channel logging",
|
|
|
|
"validate": utils.bool_or_none})
|
2019-03-06 13:36:46 +00:00
|
|
|
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")
|
2019-03-06 14:30:33 +00:00
|
|
|
log.write("%s %s\n" % (timestamp, event["line"]))
|
2019-03-06 13:36:46 +00:00
|
|
|
|
|
|
|
@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)
|