
    i                         d dl Z d dlmZmZ ddlmZ  G d de          Z G d de          Z G d	 d
e          Z G d de          Z	 G d de          Z
dS )    N)List
NamedTuple   )
BaseObjectc                   (    e Zd ZU dZeed<   eed<   dS )
IDNamePairz2Simple type used to help with unpacking event dataidnameN)__name__
__module____qualname____doc__str__annotations__     Y/root/projects/butler/venv/lib/python3.11/site-packages/slack/web/classes/interactions.pyr   r      s(         <<GGG
IIIIIr   r   c                   N    e Zd ZU eed<   eed<   eed<   eed<   eed<   defdZdS )	InteractiveEventresponse_urluserteamchannel	raw_eventeventc                 .    || _         |d         | _        d S )Nr   )r   r   )selfr   s     r   __init__zInteractiveEvent.__init__   s    !.1r   N)r   r   r   r   r   r   dictr   r   r   r   r   r      sj         

OOO2d 2 2 2 2 2 2r   r   c                   b     e Zd ZU eed<   eed<   eed<   eed<   eed<   eed<   def fdZ xZS )	MessageInteractiveEvent
event_type
message_ts
trigger_id	action_idblock_idmessager   c                    t                                          |           t          |d         d         |d         d                   | _        t          |d         d         |d         d                   | _        t          |d         d         |d         d                   | _        |d         | _        |d	         d
         | _        |d         | _        |d         d         }|d         | _	        |d         | _
        |                    d          r|d         d         | _        n|d         | _        |d	         | _        dS )z
        Convenience class to parse an interactive message payload from the events API

        Args:
            event: the raw event dictionary
        r   r	   usernamer   domainr   r
   typer'   tsr$   actionsr   r%   r&   selected_optionvalueN)superr   r   r   r   r   r"   r#   r$   r%   r&   getr/   r'   )r   r   action	__class__s      r   r   z MessageInteractiveEvent.__init__#   s    	uV}T2E&M*4MNN	 *5=+>fh@W X X	#-eI.>t.DeIFVW]F^#_#_-	*40- y!!$,z*::'(( 	) 127;DJJDJY'r   )r   r   r   r   r   r   r   __classcell__r3   s   @r   r!   r!      s|         OOOOOOOOONNNMMMMMM(d ( ( ( ( ( ( ( ( ( (r   r!   c                   `     e Zd ZU eed<   eed<   eed<   def fdZdee         defdZ xZ	S )	DialogInteractiveEventr"   
submissionstater   c                    t                                          |           t          |d         d         |d         d                   | _        t          |d         d         |d         d                   | _        t          |d         d         |d         d                   | _        |d         | _        |d         | _        |d	         | _        |d
         r!t          j
        |d
                   | _        dS i | _        dS )z
        Convenience class to parse a dialog interaction payload from the events API

        Args:
            event: the raw event dictionary
        r   r	   r
   r   r*   r   callback_idr+   r8   r9   N)r0   r   r   r   r   r   r;   r"   r8   jsonloadsr9   r   r   r3   s     r   r   zDialogInteractiveEvent.__init__B   s     	uV}T2E&M&4IJJ	uV}T2E&M(4KLL	!%	"24"8%	:J6:RSS /--> 	E'N33DJJJDJJJr   requirementsreturnc                      t           fd|D                       ri S g } j        D ]}d}|                    ||d           d|iS )z
        Convenience method to construct the 'errors' response to send directly back to
        the invoking HTTP request

        Args:
          requirements: List of required dialog components, by name
        c              3   N   K   | ]}j                             |d           V   dS ) N)r8   r1   ).0requirementr   s     r   	<genexpr>z5DialogInteractiveEvent.require_any.<locals>.<genexpr>]   s5      TTt"";33TTTTTTr   zAt least one value is required)r
   errorerrors)anyr8   append)r   r?   rH   key
error_texts   `    r   require_anyz"DialogInteractiveEvent.require_anyU   st     TTTT|TTTTT 	&IF B B=
sZ@@AAAAf%%r   )
r   r   r   r   r   r   r   r   rM   r4   r5   s   @r   r7   r7   =   s         OOOKKKd      &&S	 &d & & & & & & & &r   r7   c                   b     e Zd ZU eed<   eed<   eed<   def fdZed	defd            Z xZ	S )
SlashCommandInteractiveEventr$   commandtextr   c                 ^   t                                          |           t          |d         |d                   | _        t          |d         |d                   | _        t          |d         |d                   | _        |d         | _        |d         | _        |d	         | _        d
S )z
        Convenience class to parse a slash command payload from the events API

        Args:
            event: the raw event dictionary
        user_id	user_name
channel_idchannel_nameteam_idteam_domainr$   rP   rQ   N)	r0   r   r   r   r   r   r$   rP   rQ   r>   s     r   r   z%SlashCommandInteractiveEvent.__init__l   s     	uY/{1CDD	!%"5u^7LMMuY/}1EFF	-Y'&M			r   Fr@   c                     |r| ddS | ddS )aR  
        Create a reply suitable to send directly back to the invoking HTTP request

        Args:
          message: Text to send
          ephemeral: Whether the response should be limited to a single user, or to
                broadcast the reply (_and_ the user's original invocation) to the
                channel publicly
        	ephemeral)rQ   response_type
in_channelr   )r'   rZ   s     r   create_replyz)SlashCommandInteractiveEvent.create_reply{   s)      	D#kBBB#lCCCr   )F)
r   r   r   r   r   r   r   staticmethodr]   r4   r5   s   @r   rO   rO   g   s         OOOLLL
III"d " " " " " " D D$ D D D \D D D D Dr   rO   )r<   typingr   r   rC   r   r   r   r!   r7   rO   r   r   r   <module>r`      s#    # # # # # # # #             
2 
2 
2 
2 
2z 
2 
2 
2( ( ( ( (. ( ( (D'& '& '& '& '&- '& '& '&T"D "D "D "D "D#3 "D "D "D "D "Dr   