B
    5Ù&e'  ã               @   sr   d dl Z d dlmZ d dlmZ d dlmZ d dlmZ d dl	m
Z
mZ e
dƒZG dd„ dejƒZeeƒZeZdS )é    N)ÚPluginInternationalizationÚinternationalizeDocstringÚNickCapturec                   s|   e Zd ZdZdZ‡ fdd„Zdd„ Zdd„ Zd	d
„ Zdd„ Z	dd„ Z
dd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Z‡  ZS )r   z¥This plugin constantly tries to take whatever nick is configured as
    supybot.nick.  Just make sure that's set appropriately, and thus plugin
    will do the rest.Fc                s(   t t| ƒ| _| j |¡ d| _g | _d S )Nr   )Úsuperr   Ú_NickCapture__parentÚ__init__ÚlastIsonÚ
monitoring)ÚselfÚirc)Ú	__class__© úQ/home/dcms/DCMS/lib/python3.7/site-packages/supybot/plugins/NickCapture/plugin.pyr   -   s    zNickCapture.__init__c             C   s*   x$| j D ]}|  |j¡}| |¡ qW d S )N)r	   Ú_getNickÚnetworkÚ	unmonitor)r
   r   Únickr   r   r   Údie3   s    zNickCapture.diec             C   s,   t jj |¡ ¡ }|dkr$t j ¡ S |S d S )NÚ )ÚconfZsupybotZnetworksÚgetr   )r
   r   Znetwork_nickr   r   r   r   8   s    
zNickCapture._getNickc             C   sp   |j rl|  |j¡}|rlt ||j¡sld|jjkrR|| jkr^| 	|¡ | j 
|¡ n|  ||¡ | j ||¡ d S )NÚmonitor)ZafterConnectr   r   ÚircutilsÚstrEqualr   ÚstateÚ	supportedr	   r   ÚappendÚ_isonr   Ú__call__)r
   r   Úmsgr   r   r   r   r   ?   s    

zNickCapture.__call__c             C   sL   d|j jkst‚|  d¡rHt ¡ }|| j |  d¡krH|| _|  ||¡ d S )Nr   Úisonzison.period)r   r   ÚAssertionErrorZregistryValueÚtimer   Ú	_sendIson)r
   r   r   Únowr   r   r   r   N   s    
zNickCapture._isonc             C   s&   | j  d||j¡ | t |¡¡ d S )NzChecking if %s ISON %s.)ÚlogÚinfor   ZqueueMsgÚircmsgsr    )r
   r   r   r   r   r   r#   V   s    zNickCapture._sendIsonc             C   s&   | j  d||j¡ | t |¡¡ d S )Nz&Attempting to switch to nick %s on %s.)r%   r&   r   ÚsendMsgr'   r   )r
   r   r   r   r   r   Ú	_sendNickZ   s    
zNickCapture._sendNickc             C   s*   |   |j¡}t |j|¡r&|  ||¡ d S )N)r   r   r   r   r   r)   )r
   r   r   r   r   r   r   ÚdoQuit_   s    zNickCapture.doQuitc             C   s*   |   |j¡}t |j|¡r&|  ||¡ d S )N)r   r   r   r   r   r)   )r
   r   r   r   r   r   r   ÚdoNickd   s    zNickCapture.doNickc             C   s*   |j d s&|  |j¡}|r&|  ||¡ dS )z%This is returned by the ISON command.é   N)Úargsr   r   r)   )r
   r   r   r   r   r   r   Údo303i   s    
zNickCapture.do303c             C   sV   |   |j¡}xD|jd  d¡D ]0}||kr|  ||¡ | j |¡ | |¡ P qW dS )z5This is sent by the MONITOR when a nick goes offline.r,   ú,N)r   r   r-   Úsplitr)   r	   Úremover   )r
   r   r   r   Útargetr   r   r   Údo731p   s    
zNickCapture.do731c             C   sP   |  |jd ¡rdS | j d|jd |jf ¡ | t dd|jd  ¡¡ dS )z'Nick/channel is temporarily unavailabler,   Nz:Nick %s is unavailable; attempting NickServ release on %s.ZNickServz
release %s)Z	isChannelr-   r%   r&   r   r(   r'   Zprivmsg)r
   r   r   r   r   r   Údo437z   s
    zNickCapture.do437)Ú__name__Ú
__module__Ú__qualname__Ú__doc__Úpublicr   r   r   r   r   r#   r)   r*   r+   r.   r3   r4   Ú__classcell__r   r   )r   r   r   (   s   
)r"   Zsupybot.confr   Zsupybot.ircmsgsr'   Zsupybot.ircutilsr   Zsupybot.callbacksÚ	callbacksZsupybot.i18nr   r   Ú_ZPluginr   ÚClassr   r   r   r   Ú<module>   s   Y