
    Aj                        d dl mZ d dlZd dlmZ d dlmZ d dlmZm	Z	 d dl
Z
d dlmZ d$dZd%dZ ed           G d d                      Z ed           G d d                      Zd&dZddd'd#ZdS )(    )annotationsN)	dataclass)Path)AnyCallable)	AlertPlanpathr   returndict[str, str]c                   i }|                                  s|S |                     dd                                          D ]}|                                }|r|                    d          sd|vr2|                    dd          \  }}|                                                    d                              d          ||                                <   |S )	Nzutf-8replace)encodingerrors#=   "')exists	read_text
splitlinesstrip
startswithsplit)r	   valueslinestrippedkeyvalues         E/home/agent/projects/CryptoTradingBot/Crypto_Agent/telegram_alerts.py_parse_env_filer!      s    F;;== 	BBMMOO B B::<< 	8..s33 	s(7J7J^^C++
U#kkmm11#66<<SAAsyy{{M    r   strfile_values
str | Nonec                T    t          j        |           p|                    |           S )N)osgetenvget)r   r$   s     r    
_env_valuer*      s!    9S>>1[__S111r"   T)frozenc                  n    e Zd ZU dZded<   dZded<   dZded<   dZded	<   d
Zded<   e	dd            Z
dS )TelegramAlertConfigFboolenabledNr%   	bot_tokenchat_id
int | None	thread_id
   inttimeout_secondsr
   'TelegramAlertConfig'c           	        t          t          j        dt          t          j                    dz  dz  dz                                }t          |          }t          d|          pd}|                                                                dv }t          d|          }t          d	|          pd
} | |t          d|          t          d|          |rt          |          nd t          |                    S )NCTB_TELEGRAM_ENV_FILEz.hermessecretszcrypto_agent_telegram.envCTB_TELEGRAM_ALERTSfalse>   1yonyestrueCTB_TELEGRAM_THREAD_IDCTB_TELEGRAM_TIMEOUT10CTB_TELEGRAM_BOT_TOKENCTB_TELEGRAM_CHAT_ID)r/   r0   r1   r3   r6   )
r   r'   r(   r#   homer!   r*   r   lowerr5   )clsenv_filer$   enabled_rawr/   
thread_rawtimeout_raws          r    from_envzTelegramAlertConfig.from_env&   s   	"93ty{{Y?VYb?b  fA  @A  <B  <B  C  C  D  D%h// !6DDO##%%++--1PP 8+FF
 !7EEMs !9;GG5{CC)3=c*ooo,,
 
 
 	
r"   )r
   r7   )__name__
__module____qualname__r/   __annotations__r0   r1   r3   r6   classmethodrN    r"   r    r-   r-      s         G I    G I    O
 
 
 [
 
 
r"   r-   c                  2    e Zd ZU ded<   ded<   dZded<   dS )TelegramSendResultr.   sentr#   reasonNr2   
message_id)rO   rP   rQ   rR   rY   rT   r"   r    rV   rV   7   s5         JJJKKK!J!!!!!!r"   rV   urlpayloaddict[str, Any]timeoutr5   c                    t          j        | ||          }|                                 |                                S )N)jsonr]   )requestspostraise_for_statusr_   )rZ   r[   r]   responses       r    _default_senderrd   >   s8    }Sw@@@H==??r"   )senderalertr   configre   ;Callable[[str, dict[str, Any], int], dict[str, Any]] | Nonec                  |j         st          dd          S |j        r|j        st          dd          S |j        t          dd          S |j        |j        | j        dd}|pt          }d|j         d} ||||j                  }|                    d	          s2t          dt          |                    d
          pd                    S |                    di                               d          }t          dd	|          S )NFdisabledmissing_credentialsmissing_thread_idT)r1   message_thread_idtextdisable_web_page_previewzhttps://api.telegram.org/botz/sendMessageokdescriptiontelegram_errorresultrY   )rY   )
r/   rV   r0   r1   r3   rn   rd   r6   r)   r#   )rf   rg   re   r[   sendrZ   rs   rY   s           r    send_telegram_alertru   D   s*    > 5!%444 @6> @!%)>???!%)<=== >#-
$(	 G $_D
G)9
G
G
GCT#w 677F::d ]!%VZZ-F-F-ZJZ)[)[\\\Hb))--l;;JdDZ@@@@r"   )r	   r   r
   r   )r   r#   r$   r   r
   r%   )rZ   r#   r[   r\   r]   r5   r
   r\   )rf   r   rg   r-   re   rh   r
   rV   )
__future__r   r'   dataclassesr   pathlibr   typingr   r   r`   alertingr   r!   r*   r-   rV   rd   ru   rT   r"   r    <module>r{      sn   " " " " " " 				 ! ! ! ! ! !                             
 
 
 
2 2 2 2 $
 
 
 
 
 
 
 
0 $" " " " " " " "    KO	A A A A A A A Ar"   