3
_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   sb   | j d jdj }xH|D ]@}t|}d|d  |d< d|d  |d< | j|dt|  qW d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   sr   | j d jdj }xX|D ]P}t|}d|d  |d< d|d  |d< d|d  |d< | j|d	t|  qW d
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  |d dkr*t| j|n
t| j |}| jd jd|fj }|s`|d|  n6d|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    $
r   zcmdchar.usedz^(!|@)$namec             C   s   |s| j |t  |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    $r$   zcmdchar.addc       	      C   s@  |s| j |t  |d dkr*t| j|n
t| j |}|j }| jd jd|d j }|rx|d |krx|d|d  S | jj	|s| j|dS | jd jd|d j
 }| jd jd	|d |d |f | jd jr$|r
|d
|d |d djdd |D f  n|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   authZ	is_authedr
   Zrowcountr#   )	r   r   r   r   r   r   argsZboZalready_existsr   r   r   add_cmdchar@   s$    $
,r(   zcmdchar.delc             C   s   |s| j |t  |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    $r)   N)Zutil.decoratorsr   Z	util.datar   	functoolsr   r   r   r   r$   r(   r)   r   r   r   r   <module>   s   