mirror of
https://github.com/jlu5/PyLink.git
synced 2024-11-23 19:19:31 +01:00
clientbot: filter PART hooks for only parts we didn't initialize
This fixes Relay being confused by its own "Relay plugin unloaded" /part's, and makes Clientbot's behaviour in this regard consistent with other protocols.
This commit is contained in:
parent
12f6bb5e18
commit
9cf507183d
@ -287,6 +287,7 @@ class ClientbotWrapperProtocol(IRCCommonProtocol):
|
||||
|
||||
# Only parts for the main PyLink client are actually forwarded. Others are ignored.
|
||||
if self.pseudoclient and source == self.pseudoclient.uid:
|
||||
self._channels[channel]._clientbot_part_requested = True
|
||||
self.send('PART %s :%s' % (channel, reason))
|
||||
else:
|
||||
self.call_hooks([source, 'CLIENTBOT_PART', {'channel': channel, 'text': reason}])
|
||||
@ -1041,7 +1042,21 @@ class ClientbotWrapperProtocol(IRCCommonProtocol):
|
||||
self._channels[channel].remove_user(source)
|
||||
self.users[source].channels -= set(channels)
|
||||
|
||||
return {'channels': channels, 'text': reason}
|
||||
# Only send the PART hook for parts not initiated by us - this is for consistency with other
|
||||
# protocols
|
||||
notify_channels = []
|
||||
for channel in channels:
|
||||
is_part_requested = getattr(self._channels[channel], '_clientbot_part_requested', False)
|
||||
if is_part_requested:
|
||||
log.debug('(%s) clientbot.handle_part: not forwarding part hook for %s since we requested it', self.name, channel)
|
||||
self._channels[channel]._clientbot_part_requested = False
|
||||
continue
|
||||
else:
|
||||
notify_channels.append(channel)
|
||||
|
||||
if notify_channels:
|
||||
log.debug('(%s) clientbot.handle_part: returning part hook for %s (original: %s)', self.name, notify_channels, channels)
|
||||
return {'channels': notify_channels, 'text': reason}
|
||||
|
||||
def handle_ping(self, source, command, args):
|
||||
"""
|
||||
|
Loading…
Reference in New Issue
Block a user