aboutsummaryrefslogtreecommitdiff
path: root/IRCLineHandler.py
diff options
context:
space:
mode:
authorGravatar jesopo2018-09-03 22:17:34 +0100
committerGravatar jesopo2018-09-03 22:17:34 +0100
commit1c474771c513beaaecea90ec30e732d8c8cdc9c0 (patch)
tree08b622db9e328a58897649759bcb3f23a2c67709 /IRCLineHandler.py
parentKeep a list of CAP capabilities in IRCServer (diff)
Support IRCv3's echo-message
Diffstat (limited to 'IRCLineHandler.py')
-rw-r--r--IRCLineHandler.py32
1 files changed, 23 insertions, 9 deletions
diff --git a/IRCLineHandler.py b/IRCLineHandler.py
index 082aa884..045bc33d 100644
--- a/IRCLineHandler.py
+++ b/IRCLineHandler.py
@@ -8,7 +8,8 @@ RE_CHANTYPES = re.compile(r"\bCHANTYPES=(\W+)(?:\b|$)")
RE_MODES = re.compile(r"[-+]\w+")
CAPABILITIES = {"message-tags", "multi-prefix", "chghost", "invite-notify",
- "account-tag", "account-notify", "extended-join", "away-notify"}
+ "account-tag", "account-notify", "extended-join", "away-notify",
+ "echo-message"}
class LineHandler(object):
def __init__(self, bot, events):
@@ -372,17 +373,30 @@ class LineHandler(object):
action = message.startswith("\01ACTION ") and message.endswith("\01")
if action:
message = message.replace("\01ACTION ", "", 1)[:-1]
+
+ kwargs = {"message": message, "message_split": message_split,
+ "server": event["server"], "tags": event["tags"],
+ "action": action}
+
if target[0] in event["server"].channel_types:
channel = event["server"].get_channel(event["args"][0])
- self.events.on("received").on("message").on("channel").call(
- user=user, message=message, message_split=message_split,
- channel=channel, action=action, server=event["server"],
- tags=event["tags"])
- channel.buffer.add_line(user.nickname, message, action)
+
+ if not event["server"].is_own_nickname(nickname):
+ self.events.on("received.message.channel").call(
+ user=user, channel=channel, **kwargs)
+ channel.buffer.add_line(user.nickname, message, action)
+ else:
+ # supporting echo-message
+ self.events.on("self.message.channel").call(
+ channel=channel, **kwargs)
+ channel.buffer.add_line(user.nickname, message, action, True)
+ elif event["server"].is_own_nickname(nickname):
+ # supporting echo-message
+ self.events.on("self.message.private").call(
+ user=event["server"].get_user(target), **kwargs)
elif event["server"].is_own_nickname(target):
- self.events.on("received").on("message").on("private").call(
- user=user, message=message, message_split=message_split,
- action=action, server=event["server"], tags=event["tags"])
+ self.events.on("received.message.private").call(
+ user=user, **kwargs)
user.buffer.add_line(user.nickname, message, action)
# we've received a notice