§
    "ˆ›jZ  ã                  ó’   — d dl mZ d dlZd dlmZ d dlZd dlmZ d dlm	Z	m
Z
 d dlmZ  ej        d¦  «        Z G d„ d	e¦  «        ZdS )
é    )ÚannotationsN)ÚAny)Úget_settings)ÚTelegramResponseÚTelegramServiceStatus)ÚTelegramPortz&dscons.infrastructure.adapter.telegramc                  ó<   — e Zd ZdZ	 	 	 ddd„Z	 	 	 	 ddd„Zdd„ZdS )ÚTelegramHttpAdapterzHSecondary (Driven) Adapter for communicating with Telegram Bot HTTP API.Nç      .@Ú	bot_tokenú
str | NoneÚdefault_chat_idÚtimeout_secondsÚfloatÚreturnÚNonec                óˆ   — t          ¦   «         }|�|n|j        | _        |�|n|j        | _        |j        | _        || _        d S )N)r   Útelegram_bot_tokenr   Útelegram_chat_idr   Útelegram_enabledÚenabledÚ_timeout)Úselfr   r   r   Úsettingss        úWC:\Projects\DSCons\app\modules\integrations\infrastructure\adapters\telegram_adapter.pyÚ__init__zTelegramHttpAdapter.__init__   sW   € õ  ‘>”>ˆà"Ð.ˆIˆI°HÔ4Oð 	Œð
 Ð*ð ˆOàÔ*ð 	Ôð
  Ô0ˆŒØ'ˆŒˆˆó    ÚHTMLFÚtextÚstrÚchat_idÚ
parse_modeÚdisable_web_page_previewÚboolÚreply_markupúdict[str, Any] | Noner   c           
   ƒ  ó¤  K  — |p| j         }|sd}| j        s.t                               d¦  «         t	          ddddi¬¦  «        S | j        sht                               d||d	d
…         ¦  «         t	          ddt          t          |¦  «        ¦  «        d	d…         z   d||d	d…         ddœ¬¦  «        S d| j        › d�}||||dœ}|r||d<   	 t          j	        | j
        ¬¦  «        4 ƒd	{V —†}	|	                     ||¬¦  «        ƒ d	{V —†}
|
                     ¦   «         }|
j        rx|                     d¦  «        rc|                     di ¦  «                             d¦  «        }t	          d|dd|                     d¦  «        i¬¦  «        cd	d	d	¦  «        ƒd	{V —† S t	          dd|                     d¦  «        |                     d ¦  «        d!œ¬¦  «        cd	d	d	¦  «        ƒd	{V —† S # 1 ƒd	{V —†swxY w Y   d	S # t          $ rF}t                               d"|¦  «         t	          dd#d$t          |¦  «        i¬¦  «        cY d	}~S d	}~ww xY w)%z/Dispatches an outbound message to Telegram API.Údscons_management_channelz4Telegram service is disabled. Skipping message send.FÚdisabledÚreasonz*Telegram service disabled in configuration)ÚokÚstatusÚdetailsz,[TELEGRAM MOCK DISPATCH] Chat: %s | Text: %sNéx   Tz	mock-msg-é   Úsimulated_successé–   Údevelopment_offline)r!   ÚpreviewÚmode)r+   Ú
message_idr,   r-   zhttps://api.telegram.org/botz/sendMessage)r!   r   r"   r#   r%   )Útimeout)Újsonr+   Úresultr5   Ú	deliveredÚtelegram_resultÚ	api_errorÚ
error_codeÚdescription)r<   r=   z'Failed to dispatch Telegram message: %sÚnetwork_errorÚerror)r   r   ÚloggerÚinfor   r   r    ÚhashÚhttpxÚAsyncClientr   Úpostr7   Ú
is_successÚgetÚ	Exceptionr?   )r   r   r!   r"   r#   r%   Útarget_chatÚapi_urlÚpayloadÚclientÚresÚdataÚmsg_idÚexcs                 r   Úsend_messagez TelegramHttpAdapter.send_message$   s¨  è è € ð Ð5 Ô!5ˆØð 	6Ø5ˆKàŒ|ð 	Ý�KŠKÐNÑOÔOÐOÝ#ØØ!Ø!Ð#OÐPðñ ô ð ð Œ~ð 	Ý�KŠKØ>ÀÈTÐRVÐSVÐRVÌZñô ð õ $ØØ&­­T°$©Z¬Z©¬¸¸!¸Ô)<Ñ<Ø*à*Ø# D S DœzØ1ðð ð		ñ 	ô 	ð 	ð N°´ÐMÐMÐMˆà"ØØ$Ø(@ð	#
ð #
ˆð ð 	3Ø&2ˆG�NÑ#ð	ÝÔ(°´Ð?Ñ?Ô?ð ð ð ð ð ð ð À6Ø"ŸKšK¨°g˜KÑ>Ô>Ð>Ð>Ð>Ð>Ð>Ð>�Ø—x’x‘z”z�Ø”>ð  d§h¢h¨t¡n¤nð Ø!ŸXšX h°Ñ3Ô3×7Ò7¸ÑEÔE�FÝ+ØØ#)Ø*Ø!2°D·H²H¸XÑ4FÔ4FÐ Gð	ñ ô ðð ð ð ñ ô ð ð ð ð ð ð ð ð õ (ØØ&à&*§h¢h¨|Ñ&<Ô&<Ø'+§x¢x°Ñ'>Ô'>ðð ðñ ô ðð ð ð ñ ô ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð øøøð ð ð ð ð ð øõ& ð 	ð 	ð 	Ý�LŠLÐBÀCÑHÔHÐHÝ#ØØ&Ø ¥# c¡(¤(Ð+ðñ ô ð ð ð ð ð ð øøøøð	øøøsO   Ã G? Ã.BG,ÆG? Æ:G,ÇG? Ç,
G6Ç6G? Ç9G6Ç:G? Ç?
IÈ	;I
ÉIÉ
Ir   c           	     óÔ   — t          | j        t          | j        ¦  «        t          | j        ¦  «        dg d¢t          ¦   «         j        rt          ¦   «         j        dz   nd¬¦  «        S )zEReturn operational status and connectivity metrics of Telegram Suite.T)z/startz/helpz/duanz/camayz/hoadonz/nhatkyz/vattuz/warroomz/telematicsz/doisoatz/aiz/v1/telegram/webhookN)r   Úbot_configuredÚdefault_chat_configuredÚlive_gatewayÚsupported_commandsÚwebhook_url)r   r   r$   r   r   r   Úapp_public_url)r   s    r   Ú
get_statuszTelegramHttpAdapter.get_statusn   sq   € å$Ø”LÝ ¤Ñ/Ô/Ý$(¨Ô)=Ñ$>Ô$>Øð ð  ð  õ ‰~Œ~Ô,ð�™œÔ5Ð8NÑNÐNàð)
ñ 
ô 
ð 	
r   )NNr   )r   r   r   r   r   r   r   r   )Nr   FN)r   r    r!   r   r"   r    r#   r$   r%   r&   r   r   )r   r   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   rQ   rY   © r   r   r
   r
      s   € € € € € ØRÐRð !%Ø&*Ø!%ð	(ð (ð (ð (ð (ð* #Ø Ø).Ø.2ðHð Hð Hð Hð HðT
ð 
ð 
ð 
ð 
ð 
r   r
   )Ú
__future__r   ÚloggingÚtypingr   rC   Úapp.core.settingsr   Úapp.models.telegram_schemasr   r   Ú3app.modules.integrations.domain.ports.telegram_portr   Ú	getLoggerr@   r
   r^   r   r   ú<module>rf      sÈ   ðØ "Ð "Ð "Ð "Ð "Ð "à €€€Ø Ð Ð Ð Ð Ð à €€€à *Ð *Ð *Ð *Ð *Ð *Ø OÐ OÐ OÐ OÐ OÐ OÐ OÐ OØ LÐ LÐ LÐ LÐ LÐ Là	ˆÔ	ÐCÑ	DÔ	D€ðv
ð v
ð v
ð v
ð v
˜,ñ v
ô v
ð v
ð v
ð v
r   