o
    Bi                     @  s   d dl mZ d dlZd dlZd dlZd dlZd dlZd dlmZm	Z	m
Z
 d dlmZ d dlmZ d dlmZ d dlmZ edZejejd	d
 e ZdddZd ddZd ddZd ddZd ddZd!ddZdd Zedkrze e  dS dS )"    )annotationsN)Bot
DispatcherF)Message)Command)settings)DatabaseManagerbotz4%(asctime)s | %(levelname)s | %(name)s | %(message)s)levelformatreturnstrc              	   C  sn   d}| j d ur| jd urd| j  d| j }| jr d| j dnd}| j d| j | | d| j d| j 	S )	N  :z (z')    — z [z]
)
home_score
away_scoreminute	home_team	away_teamstatus	match_url)mscorer    r   1/var/www/www-root/data/www/77.83.87.30/bot/bot.py	fmt_match   s
   *r   messager   c                   sP   t jddI d H }ddd |d d D pd}| |d d I d H  d S )N   limit

c                 s      | ]}t |V  qd S Nr   .0rr   r   r   	<genexpr>       zcmd_today.<locals>.<genexpr>u   Нет матчей в БД  dblist_matchesjoinanswerr   rowstextr   r   r   	cmd_today   s    r5   c                   sJ   t jdddI d H }ddd |D pd}| |d d I d H  d S )	Nlive   )r   r"   r#   c                 s  r$   r%   r&   r'   r   r   r   r*      r+   zcmd_live.<locals>.<genexpr>u%   Сейчас нет live-матчейr,   r-   r2   r   r   r   cmd_live   s   r8   c                   s   t jddI d H }g }|d d D ]>}t j|jddI d H }|s"q||j d|j d|jdd|jdd	|j	dd
|j
dd|jdd|jdd|j  q| |r^d|d d ndI d H  d S )N
   r!   poisson+formmodelr   z
P1=z.2fz X=z P2=z conf=z
EG=r   
r#   r,   u!   Нет прогнозов в БД)r.   r/   get_prediction_for_matchidappendr   r   
p_home_winp_draw
p_away_win
confidenceexp_home_goalsexp_away_goalsr   r1   r0   )r   r3   outr   pr   r   r   cmd_predict   s2   *rI   c                   sv   t jddI d H }|s| dI d H  d S | d|j d|j d|jdd|jdd	|jdd
|j I d H  d S )Nr:   r;   uY   Метрик пока нет. Дай воркеру накопить finished-матчи.zModel: z

Matches: z
Accuracy: z.3fz
Brier: z

LogLoss: z

Updated: )	r.   get_metricsr1   r<   	n_matchesaccuracybrierlogloss
updated_ts)r   aggr   r   r   cmd_metrics-   s$   
rQ   r   c              
     s$  t jstd d S t j}|dkrtd d S tt d }td| 	 zHtj|ddI d H }|D ]9}t	||j
}|jd	krCq5t|jpId
}d|v sSd|v rnd|j dtj|dd }| ||d d I d H  q5W n ty } ztd| W Y d }~nd }~ww tdI d H  q()NzGoal notifications disabledr   z8TELEGRAM_ADMIN_CHAT_ID=0; notifications will not be sent<   z'Notification loop started to chat_id=%sT   r!   match_updatez{}r   r   u   ⚽️ Update z: F)ensure_asciir,   znotify loop error: %s   )r   ENABLE_GOAL_NOTIFICATIONSloginfoTELEGRAM_ADMIN_CHAT_IDinttimer.   list_events_sincemax
created_ts
event_typejsonloadspayload_jsonmatch_iddumpssend_message	Exception	exceptionasynciosleep)r
   adminlast_tseventsevpayloadmsger   r   r   notify_loop;   s:   


	rr   c                    s   t tjd} t }|jttd |jttd |jt	td |jt
td tt|  td || I d H  d S )N)tokentodayr6   predictmetricszBot started)r   r   TELEGRAM_BOT_TOKENr   r   registerr5   r   r8   rI   rQ   ri   create_taskrr   rX   rY   start_polling)r
   dpr   r   r   mainW   s   
r|   __main__)r   r   )r   r   )r
   r   )!
__future__r   ri   r\   ra   loggingosaiogramr   r   r   aiogram.typesr   aiogram.filtersr   configr   database.managerr	   	getLoggerrX   basicConfigINFOr.   r   r5   r8   rI   rQ   rr   r|   __name__runr   r   r   r   <module>   s(    (






