
    iU                     <    d Z d Zd ZdedefdZdedefdZd Zd	S )
aL  
CLI commands for the DM pairing system.

Usage:
    hermes pairing list              # Show all pending + approved users
    hermes pairing approve <platform> <code>  # Approve a pairing code
    hermes pairing revoke <platform> <user_id> # Revoke user access
    hermes pairing clear-pending     # Clear all expired/pending codes
c                 l   ddl m}  |            }t          | dd          }|dk    rt          |           dS |dk    rt	          || j        | j                   dS |dk    rt          || j        | j                   dS |dk    rt          |           dS t          d	           t          d
           dS )z"Handle hermes pairing subcommands.    )PairingStorepairing_actionNlistapproverevokezclear-pendingz9Usage: hermes pairing {list|approve|revoke|clear-pending}z(Run 'hermes pairing --help' for details.)gateway.pairingr   getattr	_cmd_list_cmd_approveplatformcode_cmd_revokeuser_id_cmd_clear_pendingprint)argsr   storeactions       0/root/.hermes/hermes-agent/hermes_cli/pairing.pypairing_commandr      s    ,,,,,,LNNET+T22F%	9		UDM4955555	8		E4=$,77777	?	"	"5!!!!!IJJJ899999    c                    |                                  }|                                 }|s|st          d           dS |rt          dt          |           d           t          ddddd	d
dddddddd 
           t          dddddd
dddddddd 
           |D ]Q}t          d|d         dd|d         d
d|d         dd|                    dd          dd|d          d           Rnt          d           |rt          dt          |           d           t          ddddddddd           t          ddddddddd           |D ]=}t          d|d         dd|d         dd|                    dd          d           >nt          d           t                       dS )z$List all pending and approved users.z4No pairing data found. No one has tried to pair yet~Nz
  Pending Pairing Requests (z):z  Platformz<12 Codez<10zUser IDz<20NameAgez--------z----z-------z---r   r   r   	user_name age_minuteszm agoz
  No pending pairing requests.z
  Approved Users (z
  No approved users.)list_pendinglist_approvedr   lenget)r   pendingapprovedpas        r   r   r      s     ""G""$$H 8 DEEE 
2?s7||???@@@U:UUUFUUUUUUUUUeUUVVVU:UUUFUUUUUUUUUeUUVVV 	 	AHQz]L H H6L H H9L H H55b))GH H01-0@H H H   	 	0111 (6S]]666777@:@@@I@@@F@@@AAA@:@@@I@@@F@@@AAA 	\ 	\AZq}ZZZ1Y<ZZZaeeKQS>T>TZZZ[[[[	\ 	&'''	GGGGGr   r   r   c                    |                                                                 }|                                                                }|                     ||          }|rQ|d         }|                    dd          }|r| d| dn|}t          d| d| d           t          d	           dS t          d
| d| d           t          d           dS )zApprove a pairing code.r   r   r    z ()z
  Approved! User  on z can now use the bot~z=  They'll be recognized automatically on their next message.
z	
  Code 'z%' not found or expired for platform 'z'.z2  Run 'hermes pairing list' to see pending codes.
N)lowerstripupperapprove_coder%   r   )r   r   r   resultuidnamedisplays          r   r   r   @   s    ~~%%''H::<<D$//F EYzz+r**'+4T##S####PGPPPPPQQQNOOOOOR4RRhRRRSSSCDDDDDr   r   c                     |                                                                 }|                     ||          rt          d| d| d           dS t          d| d| d           dS )zRevoke a user's access.z
  Revoked access for user r,   z.
z
  User z  not found in approved list for N)r-   r.   r   r   )r   r   r   s      r   r   r   Q   s    ~~%%''H||Hg&& RGWGG(GGGHHHHHP'PP8PPPQQQQQr   c                 z    |                                  }|rt          d| d           dS t          d           dS )z Clear all pending pairing codes.z
  Cleared z pending pairing request(s).
z!
  No pending requests to clear.
N)clear_pendingr   )r   counts     r   r   r   [   sP    !!E 5BUBBBCCCCC344444r   N)__doc__r   r   strr   r   r    r   r   <module>r<      s    : : :(  BE# ES E E E E"R Rs R R R R5 5 5 5 5r   