
_W                 @   s   d  d l  m Z d  d l m Z d d l m Z e d d  d d    Z e d	 d  d
 d    Z e d d  d d    Z e d d  d d    Z	 e d d  d d    Z
 e d d  d d    Z d S)   )command)get_doc    )partialcmdcharsz^!$name$c             C   s{   |  j  d j d  j   } xX | D]P } t |  } d | d | d <d | d | d <|  j | d t |   q# Wd S)	z0 !cmdchars -> get all cmdchars currently in use dbzqSELECT cmdchar, string_agg(bot, ', ' ORDER BY bot)                                    FROM bots GROUP BY cmdchar;z02%sr   z10%sr   u	   %s — %sN)dataexecutefetchalllistnoticetuple)botnickchanarginfoitem r   ./plugins/cmdchar.pyget_cmdchars   s    r   Zbotsc             C   s   |  j  d j d  j   } xj | D]b } t |  } d | d | d <d | d | d <d | d | d <|  j | d	 t |   q# Wd
 S)z0 !bots -> get all bots that are known to the db r   z~SELECT bot, owner, string_agg(cmdchar, ' ' ORDER BY cmdchar)                                    FROM bots GROUP BY bot, owner;z02%sr   z10%sr   z11%s   z%s [%s] - %sN)r   r	   r
   r   r   r   )r   r   r   r   r   r   r   r   r   get_bots   s    r   r   z^(!|@)$name\sc       
      C   s   | s |  j  | t    n  | d d k r> t |  j |  n t |  j  |  } |  j d j d | f  j   } | s | d |  nA d | d } d | d } d	 | d
 }	 | d | | |	 f  d S)z= {!@}bot <bot name> -> get information about a bot in the db r   !r   zSELECT bot, owner, string_agg(cmdchar, ' ' ORDER BY cmdchar)                                    FROM bots WHERE bot = %s GROUP BY bot, owner;z%s is an unknown bot.z02%sz10%sr   z11%sr   z%s [%s] - %sN)msgr   r   r   r   r	   fetchone)
r   r   r   grr   msg_fnr   Zbot_nickownerr   r   r   r   get_bot   s    4"r   zcmdchar.usedz^(!|@)$namec             C   s   | s |  j  | t    n  | d d k r> t |  j |  n t |  j  |  } |  j d j d | f  j   } | s | d |  n* | d | d j d d	   | D  f  d
 S)z[ {!@}cmdchar.used <cmdchar> -> tells you whether the cmdchar you passed in is used already r   r   r   z(SELECT bot FROM bots WHERE cmdchar = %s;z%s is unused.z%s is used by %sz, c             S   s   g  |  ] } | d   q S)r   r   ).0ir   r   r   
<listcomp>>   s   	 z#is_cmdchar_used.<locals>.<listcomp>N)r   r   r   r   r   r	   r
   join)r   r   r   r   r   r   r   r   r   r   is_cmdchar_used2   s    4"r$   zcmdchar.addc       	      C   s  | s |  j  | t    n  | d d k r> t |  j |  n t |  j  |  } | j   } |  j d j d | d  j   } | r | d | k r | d | d  Sn  |  j j	 |  s |  j | d  S|  j d j d | d  j
   } |  j d j d	 | d | d | f  |  j d j r| re| d
 | d | d d j d d   | D  f  q| d | d | d f  n | d | d | d f  d S)z5 {!@}cmdchar.add <cmdchar> <bot> -> add a bots entry r   r   r   z;SELECT owner FROM bots WHERE lower(bot) = lower(%s) LIMIT 1r   zYou don't own %s!z@You are not registered with NickServ or not properly identified.z'SELECT bot FROM bots WHERE cmdchar = %szBINSERT INTO bots (cmdchar, bot, owner) VALUES        (%s, %s, %s);z.Command char %s added to %s (also used by: %s)z, c             S   s   g  |  ] } | d   q S)r   r   )r    r!   r   r   r   r"   Y   s   	 zadd_cmdchar.<locals>.<listcomp>zCommand char %s added to %sz&Command char %s is already used by %s!N)r   r   r   r   splitr   r	   r   auth	is_authedr
   rowcountr#   )	r   r   r   r   r   r   argsZboZalready_existsr   r   r   add_cmdchar@   s$    4##8r*   zcmdchar.delc             C   s  | s |  j  | t    n  | d d k r> t |  j |  n t |  j  |  } | j   } |  j d j d | d | d f  j   } | s | d | d | d f  S| d | k r | d | d  S|  j d j d | d | d f  | d	 | d | d f  d
 S)z8 {!@}cmdchar.del <cmdchar> <bot> -> remove a bots entry r   r   r   zMSELECT cmdchar, owner FROM bots WHERE lower(bot) = lower(%s) AND cmdchar = %sr   z"Command char %s is not used by %s!zYou don't own %s!z>DELETE FROM bots WHERE lower(bot) = lower(%s) AND cmdchar = %sz Removed command char %s from %s.N)r   r   r   r   r%   r   r	   r   )r   r   r   r   r   r   r)   r   r   r   r   del_cmdchar_   s    4-r+   N)Zutil.decoratorsr   Z	util.datar   	functoolsr   r   r   r   r$   r*   r+   r   r   r   r   <module>   s   