3
0
mirror of https://github.com/jlu5/PyLink.git synced 2024-11-27 21:19:31 +01:00

clientbot: implement away-notify support (#290)

This commit is contained in:
James Lu 2017-08-19 22:04:24 -07:00
parent ffc734d8e2
commit 72145e09b8
2 changed files with 20 additions and 14 deletions

View File

@ -15,7 +15,9 @@ from pylinkirc.protocols.ircs2s_common import *
from pylinkirc.classes import * from pylinkirc.classes import *
FALLBACK_REALNAME = 'PyLink Relay Mirror Client' FALLBACK_REALNAME = 'PyLink Relay Mirror Client'
IRCV3_CAPABILITIES = {'multi-prefix', 'sasl'}
# IRCv3 capabilities to request when available
IRCV3_CAPABILITIES = {'multi-prefix', 'sasl', 'away-notify'}
class ClientbotWrapperProtocol(IRCCommonProtocol): class ClientbotWrapperProtocol(IRCCommonProtocol):
def __init__(self, *args, **kwargs): def __init__(self, *args, **kwargs):

View File

@ -176,6 +176,23 @@ class IRCCommonProtocol(IRCNetwork):
prefixsearch = re.search(r'\(([A-Za-z]+)\)(.*)', args) prefixsearch = re.search(r'\(([A-Za-z]+)\)(.*)', args)
return dict(zip(prefixsearch.group(1), prefixsearch.group(2))) return dict(zip(prefixsearch.group(1), prefixsearch.group(2)))
def handle_away(self, source, command, args):
"""Handles incoming AWAY messages."""
# TS6:
# <- :6ELAAAAAB AWAY :Auto-away
# <- :6ELAAAAAB AWAY
# P10:
# <- ABAAA A :blah
# <- ABAAA A
if source not in self.users:
return
try:
self.users[source].away = text = args[0]
except IndexError: # User is unsetting away status
self.users[source].away = text = ''
return {'text': text}
def handle_error(self, numeric, command, args): def handle_error(self, numeric, command, args):
"""Handles ERROR messages - these mean that our uplink has disconnected us!""" """Handles ERROR messages - these mean that our uplink has disconnected us!"""
raise ProtocolError('Received an ERROR, disconnecting!') raise ProtocolError('Received an ERROR, disconnecting!')
@ -455,19 +472,6 @@ class IRCS2SProtocol(IRCCommonProtocol):
self.channels[target].topicset = True self.channels[target].topicset = True
topic_burst = topic topic_burst = topic
def handle_away(self, numeric, command, args):
"""Handles incoming AWAY messages."""
# TS6:
# <- :6ELAAAAAB AWAY :Auto-away
# P10:
# <- ABAAA A :blah
# <- ABAAA A
try:
self.users[numeric].away = text = args[0]
except IndexError: # User is unsetting away status
self.users[numeric].away = text = ''
return {'text': text}
def handle_invite(self, numeric, command, args): def handle_invite(self, numeric, command, args):
"""Handles incoming INVITEs.""" """Handles incoming INVITEs."""
# TS6: # TS6: