diff options
| author | 2018-09-03 22:17:34 +0100 | |
|---|---|---|
| committer | 2018-09-03 22:17:34 +0100 | |
| commit | 1c474771c513beaaecea90ec30e732d8c8cdc9c0 (patch) | |
| tree | 08b622db9e328a58897649759bcb3f23a2c67709 /IRCLineHandler.py | |
| parent | Keep a list of CAP capabilities in IRCServer (diff) | |
Support IRCv3's echo-message
Diffstat (limited to 'IRCLineHandler.py')
| -rw-r--r-- | IRCLineHandler.py | 32 |
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 |
