o
    HEDiBW                     @   sV   d dl Z d dlZd dlmZ d dlmZ ddgZG dd deZG dd	 d	e jZ	dS )
    N)types)BaseMiddleware	UnhandledHandledc                       s  e Zd Ze f fdd	Zdd ZdejdefddZdejdefd	d
Z	dej
defddZdej
defddZdefddZdefddZdej
defddZdej
defddZdej
defddZdej
defddZdejdefdd Zdejdefd!d"Zd#ejdefd$d%Zdefd&d'Zd(ejdefd)d*Zdefd+d,Zd-ejdefd.d/Zdefd0d1Zd2ejdefd3d4Z defd5d6Z!defd7d8Z"d9d: Z#d;d< Z$d=d> Z%d?d@ Z&dAdB Z'dCdD Z(dEdF Z)dGdH Z*dIdJ Z+dKdL Z,  Z-S )MLoggingMiddlewarec                    s.   t |tjst|}|| _tt|   d S )N)
isinstanceloggingLogger	getLoggerloggersuperr   __init__)selfr   	__class__ r/var/www/www-root/data/www/ovozai.pdev.uz/venv/lib/python3.10/site-packages/aiogram/contrib/middlewares/logging.pyr      s   
zLoggingMiddleware.__init__c                 C   s2   |j dd }|r|j d= tt | d S dS )N_starti  )confgetroundtime)r   objstartr   r   r   check_timeout   s
   zLoggingMiddleware.check_timeoutupdatedatac                    s*   t   |jd< | jd|j d d S )Nr   zReceived update [ID:])r   r   r   debug	update_id)r   r   r   r   r   r   on_pre_process_update   s   z'LoggingMiddleware.on_pre_process_updatec                    8   |  |}|dkr| jd|j d| d d S d S )Nr   Process update [ID:z]: [success] (in  ms)r   r   infor    )r   r   resultr   timeoutr   r   r   on_post_process_update   
   
 z(LoggingMiddleware.on_post_process_updatemessagec              	      0   | j d|j d|jj d|jj d d S )NzReceived message [ID:] in chat [:r   r   r&   
message_idchattypeid)r   r+   r   r   r   r   on_pre_process_message#   s   .z(LoggingMiddleware.on_pre_process_messagec              
      @   | j ttt|  d|j d|jj d|jj d d S )Nz message [ID:r-   r.   r   	r   r   HANDLED_STRboollenr0   r1   r2   r3   )r   r+   resultsr   r   r   r   on_post_process_message&   s   z)LoggingMiddleware.on_post_process_messagec              	      r,   )NzReceived edited message [ID:r-   r.   r   r/   )r   edited_messager   r   r   r   on_pre_process_edited_message*   s   z/LoggingMiddleware.on_pre_process_edited_messagec              
      r5   )Nz edited message [ID:r-   r.   r   r6   )r   r<   r:   r   r   r   r   on_post_process_edited_message.      z0LoggingMiddleware.on_post_process_edited_messagechannel_postc                    &   | j d|j d|jj d d S )NzReceived channel post [ID:] in channel [ID:r   r   r&   r0   r1   r3   )r   r@   r   r   r   r   on_pre_process_channel_post3      z-LoggingMiddleware.on_pre_process_channel_postc              
      r5   )Nz channel post [ID:r-   r.   r   r6   )r   r@   r:   r   r   r   r   on_post_process_channel_post7   r?   z.LoggingMiddleware.on_post_process_channel_postedited_channel_postc                    rA   )Nz!Received edited channel post [ID:rB   r   rC   )r   rG   r   r   r   r   "on_pre_process_edited_channel_post<   rE   z4LoggingMiddleware.on_pre_process_edited_channel_postc                    6   | j ttt|  d|j d|jj d d S )Nz edited channel post [ID:rB   r   )r   r   r7   r8   r9   r0   r1   r3   )r   rG   r:   r   r   r   r   #on_post_process_edited_channel_post@      z5LoggingMiddleware.on_post_process_edited_channel_postinline_queryc                    &   | j d|j d|jj d d S )NzReceived inline query [ID:] from user [ID:r   r   r&   r3   	from_user)r   rL   r   r   r   r   on_pre_process_inline_queryE   rE   z-LoggingMiddleware.on_pre_process_inline_queryc                    6   | j ttt|  d|j d|jj d d S )Nz inline query [ID:rN   r   r   r   r7   r8   r9   r3   rP   )r   rL   r:   r   r   r   r   on_post_process_inline_queryI   rK   z.LoggingMiddleware.on_post_process_inline_querychosen_inline_resultc              	      s.   | j d|j d|jj d|j d d S )Nz-Received chosen inline result [Inline msg ID:rN   ] result [ID:r   )r   r&   inline_message_idrP   r3   	result_id)r   rU   r   r   r   r   #on_pre_process_chosen_inline_resultN   s   z5LoggingMiddleware.on_pre_process_chosen_inline_resultc              
      s>   | j ttt|  d|j d|jj d|j d d S )Nz% chosen inline result [Inline msg ID:rN   rV   r   )	r   r   r7   r8   r9   rW   rP   r3   rX   )r   rU   r:   r   r   r   r   $on_post_process_chosen_inline_resultS   s   z6LoggingMiddleware.on_post_process_chosen_inline_resultcallback_queryc                    s   |j r9|j }d|j d|jj d|j d|jj d|jj d|j }|jr1| d|jj d}| j| d S | jd|j d|jj d	|j	 d
 d S )NzReceived callback query [ID:rN   ] for message [ID:r-   r.   ] with data:  originally posted by user [ID:r   z] for inline message [ID:z] )
r+   r3   rP   r0   r1   r2   r   r   r&   rW   )r   r[   r   r+   textr   r   r   on_pre_process_callback_queryY   s,   
z/LoggingMiddleware.on_pre_process_callback_queryc                    s   |j rA|j }ttt|  d|j d|jj d|j d|jj d|jj d|j	 }|jr9| d|jj d}| j
| d S | j
ttt|  d|j d|jj d	|j d d S )
Nz callback query [ID:rN   r\   r-   r.   r]   r^   r   z]from inline message [ID:)r+   r7   r8   r9   r3   rP   r0   r1   r2   r   r   r&   r   rW   )r   r[   r:   r   r+   r_   r   r   r   on_post_process_callback_queryl   s4   z0LoggingMiddleware.on_post_process_callback_queryshipping_queryc                    rM   )NzReceived shipping query [ID:rN   r   rO   )r   rb   r   r   r   r   on_pre_process_shipping_query   rE   z/LoggingMiddleware.on_pre_process_shipping_queryc                    rR   )Nz shipping query [ID:rN   r   rS   )r   rb   r:   r   r   r   r   on_post_process_shipping_query   rK   z0LoggingMiddleware.on_post_process_shipping_querypre_checkout_queryc                    rM   )Nz Received pre-checkout query [ID:rN   r   rO   )r   re   r   r   r   r   !on_pre_process_pre_checkout_query   rE   z3LoggingMiddleware.on_pre_process_pre_checkout_queryc                    rR   )Nz pre-checkout query [ID:rN   r   rS   )r   re   r:   r   r   r   r   "on_post_process_pre_checkout_query   rK   z4LoggingMiddleware.on_post_process_pre_checkout_queryc                    r"   )Nr   r#   z]: [failed] (in r$   r%   )r   r   errorr   r(   r   r   r   on_pre_process_error   r*   z&LoggingMiddleware.on_pre_process_errorc                    s   | j d|j d d S )NzReceived poll [ID:r   )r   r&   r3   )r   pollr   r   r   r   on_pre_process_poll   s   z%LoggingMiddleware.on_pre_process_pollc                    s,   | j ttt|  d|j d d S )Nz
 poll [ID:r   )r   r   r7   r8   r9   r3   )r   rj   r:   r   r   r   r   on_post_process_poll   s   *z&LoggingMiddleware.on_post_process_pollc                    rA   )NzReceived poll answer [ID:rN   r   )r   r&   poll_iduserr3   )r   poll_answerr   r   r   r   on_pre_process_poll_answer   rE   z,LoggingMiddleware.on_pre_process_poll_answerc                    rI   )Nz poll answer [ID:rN   r   )r   r   r7   r8   r9   rm   rn   r3   )r   ro   r:   r   r   r   r   on_post_process_poll_answer   s    z-LoggingMiddleware.on_post_process_poll_answerc              	      6   | j d|jj d|j  d|j  d d S Nz)Received chat member update for user [ID:z]. Old state: z New state:  r   r&   rP   r3   old_chat_member	to_pythonnew_chat_member)r   my_chat_member_updater   r   r   r   on_pre_process_my_chat_member      z/LoggingMiddleware.on_pre_process_my_chat_memberc                    .   | j ttt|  d|jj d d S )Nz my_chat_member for user [ID:r   r   r   r7   r8   r9   rP   r3   )r   ry   r:   r   r   r   r   on_post_process_my_chat_member      z0LoggingMiddleware.on_post_process_my_chat_memberc              	      rr   rs   ru   )r   chat_member_updater   r   r   r   on_pre_process_chat_member   r{   z,LoggingMiddleware.on_pre_process_chat_memberc                    r|   )Nz chat_member for user [ID:r   r}   )r   r   r:   r   r   r   r   on_post_process_chat_member   r   z-LoggingMiddleware.on_post_process_chat_memberc                    s(   | j d|jj d|jj d d S )Nz(Received chat join request for user [ID:] in chat [ID:r   )r   r&   rP   r3   r1   )r   chat_join_requestr   r   r   r   on_pre_chat_join_request   s   z*LoggingMiddleware.on_pre_chat_join_requestc                    s8   | j ttt|  d|jj d|jj d d S )Nz  chat join request for user [ID:r   r   )r   r   r7   r8   r9   rP   r3   r1   )r   r   r:   r   r   r   r   on_post_chat_join_request   s   z+LoggingMiddleware.on_post_chat_join_request).__name__
__module____qualname__r   r   r   Updatedictr!   r)   Messager4   r;   r=   r>   rD   rF   rH   rJ   InlineQueryrQ   rT   ChosenInlineResultrY   rZ   CallbackQueryr`   ra   ShippingQueryrc   rd   PreCheckoutQueryrf   rg   ri   rk   rl   rp   rq   rz   r~   r   r   r   r   __classcell__r   r   r   r   r   
   sD    r   c                       s   e Zd ZdZd' fdd	Zdejfdd	Zd
ej	fddZ
dd ZdejfddZdejfddZdejfddZdejfddZdejfddZdejfdd Zd!ejfd"d#Zd$ejfd%d&Z  ZS )(LoggingFiltera8  
    Extend LogRecord by data from Telegram Update object.

    Can be used in logging config:
    .. code-block: python3

        'filters': {
            'telegram': {
                '()': LoggingFilter,
                'include_content': True,
            }
        },
        ...
        'handlers': {
            'graypy': {
                '()': GELFRabbitHandler,
                'url': 'amqp://localhost:5672/',
                'routing_key': '#',
                'localname': 'testapp',
                'filters': ['telegram']
            },
        },

     tgFc                    s"   t t| j|d || _|| _dS )z
        :param name:
        :param prefix: prefix for all records
        :param include_content: pass into record all data from Update object
        )nameN)r   r   r   prefixinclude_content)r   r   r   r   r   r   r   r      s   
zLoggingFilter.__init__recordc                 C   s>   t jd}|r| | j| |D ]
\}}t||| qdS )zp
        Extend LogRecord by data from Telegram Update object.

        :param record:
        :return:
        T)r   r   get_currentmake_prefixr   process_updatesetattr)r   r   r   keyvaluer   r   r   filter   s
   zLoggingFilter.filterr   c                 c   s$   d|j fV  |jrdV  | |jE dH  |jr%dV  | |jE dH  |jr4dV  | |jE dH  |jrCdV  | |jE dH  |jrRdV  | |jE dH  |jradV  | 	|jE dH  |j
rpd	V  | |j
E dH  |jrd
V  | |jE dH  |jrdV  | |jE dH  dS dS )zN
        Parse Update object

        :param update:
        :return:
        r    )update_typer+   N)r   r<   )r   r@   )r   rG   )r   rL   )r   rU   )r   r[   )r   rb   )r   re   )r    r+   process_messager<   r@   rG   rL   process_inline_queryrU   process_chosen_inline_resultr[   process_callback_queryrb   process_shipping_queryre   process_pre_checkout_query)r   r   r   r   r   r      s<   zLoggingFilter.process_updatec                 c   s6    |s|E dH  |D ]\}}| d| |fV  q
dS )zk
        Add prefix to the label

        :param prefix:
        :param iterable:
        :return:
        N_r   )r   r   iterabler   r   r   r   r   r     s   
zLoggingFilter.make_prefixrn   c                 c   sL    |sdS d|j fV  | jr"d|jfV  |jr$dd|j fV  dS dS dS )zK
        Generate user data

        :param user:
        :return:
        Nuser_iduser_full_name	user_name@)r3   r   	full_nameusername)r   rn   r   r   r   process_user+  s   zLoggingFilter.process_userr1   c                 c   sX    |sdS d|j fV  d|jfV  | jr(d|jfV  |jr*dd|j fV  dS dS dS )zK
        Generate chat data

        :param chat:
        :return:
        Nchat_id	chat_type
chat_title	chat_namer   )r3   r2   r   r   r   )r   r1   r   r   r   process_chat;  s   zLoggingFilter.process_chatr+   c                 c   s   d|j fV  | |jE d H  | |jE d H  | jsd S |jr.| d| |jE d H  |j	r>| d| |j	E d H  |j
rN| d| |j
E d H  |jrWd|jfV  |jr`d|jfV  |jrid|jfV  |jrrd|jfV  |jr{d	|jfV  |jrd
|jp|jfV  d|jfV  d S |jrd|jjfV  d S |jrd|jjfV  d S |jrd|jjfV  d S |jrd|jjfV  d S |jrd|jd jfV  d S |jrd|jjfV  d S |jrd|jjfV  d S |jrd|jjfV  d S |jrd|jjfV  d S |jrd|jjfV  d|jj fV  d S |j!r.d|j!j"fV  d|j!j#j$fV  d|j!j#j%fV  d S |j#rBd|j#j$fV  d|j#j%fV  d S |j&rSddd |j&D fV  d S |j'rdddd |j&D fV  d S |j(rd |j(jfV  d!|j(j)fV  d"|j(j*fV  d#|j(j+fV  d$|j(j,fV  d S |j-rd%|j-j+fV  d&|j-j,fV  d'|j-j.fV  d(|j-j/fV  d)|j-j0fV  d*|j-j1fV  d S |j2rd+|j2fV  d S |j3rd,|j3fV  d S |j4rd-|j4fV  d S |j5r| d.|j5E d H  d S |j6rd/|j6fV  d S |j7rd0|j7d jfV  d S d S )1Nmessage_content_typereply_toforward_fromforward_from_chatmessage_forward_from_message_idmessage_forward_datemessage_edit_datemessage_media_group_idmessage_author_signaturer_   	html_textaudio	animationdocumentgamephotor   stickervideo
video_notevoicecontact_full_namecontact_phone_numbervenue_addresslocation_latitudelocation_longitudenew_chat_membersc                 S      g | ]}|j qS r   r3   .0rn   r   r   r   
<listcomp>      z1LoggingFilter.process_message.<locals>.<listcomp>left_chat_memberc                 S   r   r   r   r   r   r   r   r     r   invoice_titleinvoice_descriptioninvoice_start_parameterinvoice_currencyinvoice_total_amountsuccessful_payment_currencysuccessful_payment_total_amount"successful_payment_invoice_payload%successful_payment_shipping_option_id-successful_payment_telegram_payment_charge_id-successful_payment_provider_payment_charge_idconnected_websitemigrate_from_chat_idmigrate_to_chat_idpinned_messagenew_chat_titlenew_chat_photo)8content_typer   rP   r   r1   r   reply_to_messager   r   r   r   forward_from_message_idforward_date	edit_datemedia_group_idauthor_signaturer_   captionr   r   file_idr   r   r   titler   r   r   r   r   contactr   phone_numbervenueaddresslocationlatitude	longituder   r   invoicedescriptionstart_parametercurrencytotal_amountsuccessful_paymentinvoice_payloadshipping_option_idtelegram_payment_charge_idprovider_payment_charge_idr   r   r   r   r   r   )r   r+   r   r   r   r   L  s   zLoggingFilter.process_messagerL   c                 c   sr    d|j fV  | |jE d H  | jr5d|jfV  |jr*d|jjfV  d|jjfV  |jr7d|jfV  d S d S d S )Ninline_query_idinline_query_textr   r   inline_query_offset)	r3   r   rP   r   queryr   r   r   offset)r   rL   r   r   r   r     s   z"LoggingFilter.process_inline_queryrU   c                 c   s`    d|j fV  | |jE d H  | jr,d|jfV  |jr.d|jjfV  d|jjfV  d S d S d S )Nchosen_inline_result_idr  r   r   )rX   r   rP   r   r  r   r   r   )r   rU   r   r   r   r     s   z*LoggingFilter.process_chosen_inline_resultr[   c                 c   s~    |  |jE d H  d|jfV  |jr | d| |jE d H  |jr)d|jfV  |jr2d|jfV  |jr=d|jfV  d S d S )Ncallback_query_datacallback_query_message callback_query_inline_message_idcallback_query_chat_instancecallback_query_game_short_name)	r   rP   r   r+   r   r   rW   chat_instancegame_short_name)r   r[   r   r   r   r     s   z$LoggingFilter.process_callback_queryrb   c                 c   s:    d|j fV  | |jE d H  | jrd|jfV  d S d S )Nshipping_query_idshipping_query_invoice_payload)r3   r   rP   r   r   )r   rb   r   r   r   r     s   z$LoggingFilter.process_shipping_queryre   c                 c   s^    d|j fV  | |jE d H  | jr-d|jfV  d|jfV  d|jfV  d|jfV  d S d S )Npre_checkout_query_idpre_checkout_query_currencypre_checkout_query_total_amount"pre_checkout_query_invoice_payload%pre_checkout_query_shipping_option_id)r3   r   rP   r   r   r   r   r   )r   re   r   r   r   r     s   z(LoggingFilter.process_pre_checkout_query)r   r   F)r   r   r   __doc__r   r   	LogRecordr   r   r   r   r   Userr   Chatr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r      s    %\
r   )
r   r   aiogramr   aiogram.dispatcher.middlewaresr   r7   r   Filterr   r   r   r   r   <module>   s     <