aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGravatar jesopo2019-11-14 11:48:51 +0000
committerGravatar jesopo2019-11-14 11:48:51 +0000
commit160fab8f4fe485c3a32e94f5d36d1ccd1833d41c (patch)
tree09e0ddaecf4ef8257ee334f2516472b482c8bbc8
parentShow more fediverse errors to the end user (diff)
signature
separate formatted lines from pretty formatted lines
-rw-r--r--modules/format_activity.py199
-rw-r--r--modules/print_activity.py9
2 files changed, 130 insertions, 78 deletions
diff --git a/modules/format_activity.py b/modules/format_activity.py
index 4cdfe08a..316ed5be 100644
--- a/modules/format_activity.py
+++ b/modules/format_activity.py
@@ -1,19 +1,15 @@
import datetime
from src import EventManager, ModuleManager, utils
-@utils.export("botset", utils.BoolSetting("colorize-nicknames",
- "Whether or not to format nicknames with calculated colors"))
class Module(ModuleManager.BaseModule):
- def _colorize(self, nickname):
- if self.bot.get_setting("colorize-nicknames", False):
- return utils.irc.hash_colorize(nickname)
- return nickname
+ def _color(self, nickname):
+ return utils.irc.hash_colorize(nickname)
- def _event(self, type, server, line, context, minimal=None,
+ def _event(self, type, server, line, context, minimal=None, pretty=None,
channel=None, user=None, **kwargs):
self.events.on("formatted").on(type).call(server=server,
context=context, line=line, channel=channel, user=user,
- minimal=minimal, **kwargs)
+ minimal=minimal, pretty=pretty, **kwargs)
def _mode_symbols(self, user, channel, server):
modes = list(channel.get_user_modes(user))
@@ -28,12 +24,17 @@ class Module(ModuleManager.BaseModule):
if channel:
symbols = self._mode_symbols(user, channel, event["server"])
- nickname = self._colorize(nickname)
-
if event["action"]:
- return "* %s%s %s" % (symbols, nickname, event["message"])
+ format = "* %s%s %s"
else:
- return "<%s%s> %s" % (symbols, nickname, event["message"])
+ format = "<%s%s> %s"
+
+ minimal = format % ("", nickname, event["message"])
+ normal = format % (symbols, nickname, event["message"])
+ pretty = format % (symbols, self._color(nickname),
+ event["message"])
+
+ return minimal, normal, pretty
@utils.hook("send.message.channel")
@utils.hook("received.message.channel")
@@ -47,24 +48,31 @@ class Module(ModuleManager.BaseModule):
nickname = event["server"].nickname
user = event["server"].get_user(nickname)
- line = self._privmsg(event, event["channel"], user, nickname)
- self._event("message.channel", event["server"], line,
+ minimal, normal, pretty = self._privmsg(event, event["channel"], user,
+ nickname)
+
+ self._event("message.channel", event["server"], normal,
event["channel"].name, channel=event["channel"], user=user,
- parsed_line=event["line"])
+ parsed_line=event["line"], minimal=minimal, pretty=pretty)
def _on_notice(self, event, nickname):
- nickname = self._colorize(nickname)
- return "-%s- %s" % (nickname, event["message"])
+ format = "-%s- %s"
+ minimal = format % (nickname, event["message"])
+ normal = minimal
+ pretty = format % (self._color(nickname), event["message"])
+
+ return minimal, normal, pretty
def _channel_notice(self, event, nickname, channel):
- line = self._on_notice(event, nickname)
- self._event("notice.channel", event["server"], line,
+ minimal, normal, pretty = self._on_notice(event, nickname)
+ self._event("notice.channel", event["server"], normal,
event["channel"].name, parsed_line=event["line"], channel=channel,
- user=event["user"])
+ user=event["user"], minimal=minimal, pretty=prettyb)
def _private_notice(self, event, nickname, target):
- line = self._on_notice(event, nickname)
- self._event("notice.private", event["server"], line, None,
- parsed_line=event["line"], user=event["user"])
+ minimal, normal, pretty = self._on_notice(event, nickname)
+ self._event("notice.private", event["server"], normal, None,
+ parsed_line=event["line"], user=event["user"], minimal=minimal,
+ pretty=pretty)
@utils.hook("received.notice.channel")
def channel_notice(self, event):
@@ -82,15 +90,18 @@ class Module(ModuleManager.BaseModule):
event["user"].nickname)
def _on_join(self, event, user):
- nickname = self._colorize(user.nickname)
- hostmask = "%s!%s" % (nickname, user.userhost())
+ channel_name = event["channel"].name
+
+ minimal = "%s joined %s" % (user.nickname, channel_name)
- line = "- %s (%s) joined %s" % (nickname, user.userhost(),
- event["channel"].name)
- minimal_line = "%s joined %s" % (nickname, event["channel"].name)
+ normal_format = "- %s (%s) joined %s"
+ normal = normal_format % (user.nickname, user.userhost(), channel_name)
+ pretty = normal_format % (self._color(user.nickname), user.userhost(),
+ channel_name)
- self._event("join", event["server"], line, event["channel"].name,
- channel=event["channel"], user=user, minimal=minimal_line)
+ self._event("join", event["server"], normal, event["channel"].name,
+ channel=event["channel"], user=user, minimal=minimal,
+ pretty=pretty)
@utils.hook("received.join")
def join(self, event):
self._on_join(event, event["user"])
@@ -100,23 +111,30 @@ class Module(ModuleManager.BaseModule):
@utils.hook("received.chghost")
def _on_chghost(self, event):
- nickname = self._colorize(event["user"].nickname)
- line_minimal = "%s changed host to %s@%s" % (nickname,
- event["username"], event["hostname"])
- line = "- %s" % line_minimal
- self._event("chghost", event["server"], line, None, user=event["user"],
- minimal=line_minimal)
+ format = "%s changed host to %s@%s" % ("%s", event["username"],
+ event["hostname"])
+ minimal = format % nickname
+
+ normal_format = "- %s" % format
+ normal = normal_format % nickname
+ pretty = normal_format % self._color(nickname)
+
+ self._event("chghost", event["server"], normal, None,
+ user=event["user"], minimal=minimal, pretty=pretty)
def _on_part(self, event, user):
- nickname = self._colorize(user.nickname)
reason = event["reason"]
reason = "" if not reason else " (%s)" % reason
- line_minimal = "%s left %s%s" % (nickname, event["channel"].name,
- reason)
- line = "- %s" % line_minimal
- self._event("part", event["server"], line, event["channel"].name,
- channel=event["channel"], user=user, minimal=line_minimal)
+ format = "%s left %s%s" % ("%s", event["channel"].name, reason)
+ minimal = format % nickname
+
+ normal_format = "- %s" % format
+ normal = normal_format % nickname
+ pretty = normal_format % self._color(nickname)
+
+ self._event("part", event["server"], normal, event["channel"].name,
+ channel=event["channel"], user=user, minimal=minimal, pretty=pretty)
@utils.hook("received.part")
def part(self, event):
self._on_part(event, event["user"])
@@ -125,14 +143,19 @@ class Module(ModuleManager.BaseModule):
self._on_part(event, event["server"].get_user(event["server"].nickname))
def _on_nick(self, event, user):
- old_nickname = self._colorize(event["old_nickname"])
- new_nickname = self._colorize(event["new_nickname"])
- line_minimal = "%s changed nickname to %s" % (old_nickname,
- new_nickname)
- line = "- %s" % line_minimal
+ old_nickname = event["old_nickname"]
+ new_nickname = event["new_nickname"]
+
+ format = "%s changed nickname to %s"
+ minimal = format % (old_nickname, new_nickname)
- self._event("nick", event["server"], line, None, user=user,
- minimal=line_minimal)
+ normal_format = "- %s" % format
+ normal = normal_format % (old_nickname, new_nickname)
+ pretty = normal_format % (
+ self._color(old_nickname), self._color(new_nickname))
+
+ self._event("nick", event["server"], normal, None, user=user,
+ minimal=minimal, pretty=pretty)
@utils.hook("received.nick")
def nick(self, event):
self._on_nick(event, event["user"])
@@ -147,11 +170,15 @@ class Module(ModuleManager.BaseModule):
@utils.hook("received.invite")
def invite(self, event):
- sender_nickname = self._colorize(event["user"].nickname)
- target_nickname = self._colorize(event["target_user"].nickname)
- line = "%s invited %s to %s" % (sender_nickname, target_nickname,
- event["target_channel"])
- self._event("invite", event["server"], line, event["target_channel"])
+ format = "%s invited %s to %s" % ("%s", "%s", event["target_channel"])
+ minimal = format % (event["user"].nickname,
+ event["target_user"].nickname)
+ normal = minimal
+ pretty = format % (self._color(event["user"].nickname),
+ self._color(event["user"].nickname))
+
+ self._event("invite", event["server"], normal, event["target_channel"],
+ minimal=minimal, pretty=pretty)
@utils.hook("received.mode.channel")
def mode(self, event):
@@ -159,20 +186,29 @@ class Module(ModuleManager.BaseModule):
if args:
args = " %s" % args
- nickname = self._colorize(event["user"].nickname)
- line_minimal = "%s set mode %s%s" % (nickname,
- "".join(event["modes_str"]), args)
- line = "- %s" % line_minimal
+ format = "%s set mode %s%s" % ("%s", "".join(event["mode_str"]),
+ args)
+ minimal = format % event["user"].nickname
+
+ normal_format = "- %s" % format
+ normal = normal_format % event["user"].nickname
+ pretty = normal_format % self._color(event["user"].nickname)
- self._event("mode.channel", event["server"], line,
+ self._event("mode.channel", event["server"], normal,
event["channel"].name, channel=event["channel"], user=event["user"],
- minimal=line_minimal)
+ minimal=minimal, pretty=pretty)
def _on_topic(self, event, nickname, action, topic):
- nickname = self._colorize(nickname)
- line = "topic %s by %s: %s" % (action, nickname, topic)
- self._event("topic", event["server"], line, event["channel"].name,
- channel=event["channel"], user=event.get("user", None))
+ format = "topic %s by %s: %s" % (action, "%s", topic)
+ minimal = format % nickname
+
+ normal_format = "- %s" % format
+ normal = normal_format % nickname
+ pretty = normal_format % self._color(nickname)
+
+ self._event("topic", event["server"], normal, event["channel"].name,
+ channel=event["channel"], user=event.get("user", None),
+ minimal=minimal, pretty=pretty)
@utils.hook("received.topic")
def on_topic(self, event):
self._on_topic(event, event["user"].nickname, "changed",
@@ -188,20 +224,25 @@ class Module(ModuleManager.BaseModule):
self._event("topic-timestamp", event["server"], line,
event["channel"].name, channel=event["channel"])
- def _on_kick(self, event, nickname):
- sender_nickname = self._colorize(event["user"].nickname)
- kicked_nickname = self._colorize(nickname)
+ def _on_kick(self, event, kicked_nickname):
+ sender_nickname = event["user"].nickname
reason = ""
if event["reason"]:
reason = " (%s)" % event["reason"]
- line_minimal = "%s kicked %s from %s%s" % (
- sender_nickname, kicked_nickname, event["channel"].name, reason)
- line = "- %s" % line_minimal
- self._event("kick", event["server"], line, event["channel"].name,
+ format = "%s kicked %s from %s%s" % ("%s", "%s", event["channel"].name,
+ reason)
+ minimal = format % (sender_nickname, kicked_nickname)
+
+ normal_format = "- %s" % format
+ normal = normal_format % (sender_nickname, kicked_nickname)
+ pretty = normal_format % (self._color(sender_nickname),
+ self._color(kicked_nickname))
+
+ self._event("kick", event["server"], normal, event["channel"].name,
channel=event["channel"], user=event.get("user", None),
- minimal=line_minimal)
+ minimal=minimal, pretty=pretty)
@utils.hook("received.kick")
def kick(self, event):
self._on_kick(event, event["target_user"].nickname)
@@ -210,13 +251,17 @@ class Module(ModuleManager.BaseModule):
self._on_kick(event, event["server"].nickname)
def _quit(self, event, user, reason):
- nickname = self._colorize(user.nickname)
reason = "" if not reason else " (%s)" % reason
- line_minimal = "%s quit%s" % (nickname, reason)
- line = "- %s" % line_minimal
- self._event("quit", event["server"], line, None, user=user,
- minimal=line_minimal)
+ format = "%s quit%s" % ("%s", reason)
+ minimal = format % user.nickname
+
+ normal_format = "- %s" % format
+ normal = normal_format % user.nickname
+ pretty = normal_format % self._color(user.nickname)
+
+ self._event("quit", event["server"], normal, None, user=user,
+ minimal=minimal, pretty=pretty)
@utils.hook("received.quit")
def on_quit(self, event):
self._quit(event, event["user"], event["reason"])
diff --git a/modules/print_activity.py b/modules/print_activity.py
index 2a4ae77f..2852fe8e 100644
--- a/modules/print_activity.py
+++ b/modules/print_activity.py
@@ -6,11 +6,18 @@ from src import EventManager, ModuleManager, utils
@utils.export("botset",
utils.BoolSetting("print-motd", "Set whether I print /motd"))
+@utils.export("botset", utils.BoolSetting("pretty-activity",
+ "Whether or not to pretty print activity"))
class Module(ModuleManager.BaseModule):
def _print(self, event):
+ line = event["line"]
+ if ("pretty" in event and
+ self.bot.get_setting("pretty-activity", False)):
+ line = event["pretty"]
+
self.bot.log.info("%s%s | %s", [
str(event["server"]), event["context"] or "",
- utils.irc.parse_format(event["line"])])
+ utils.irc.parse_format(line)])
@utils.hook("formatted.message.channel")
@utils.hook("formatted.notice.channel")