o
    rhnN                  	   @   s  d dl Z d dlmZmZmZmZ d dlmZ d dlm	Z	m
Z
 d dlmZ d dlmZ d dlmZ d dlmZmZmZmZ d d	lmZ d d
lmZmZm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%m&Z& e Z'e'(e
ddej)dedefddZ*e'(e	 dej)dededdfddZ+e'(e!j,dej)dededdfddZ-e'.ej/0de!j1dej2dededdfddZ3e'(e!j4dej)dededdfdd Z5e'.ej/0d!e!j6dej2dededdfd"d#Z7e'.ej/0d$e!j8dej2dededdfd%d&Z9e'.ej/0d'e!j:dej2dededdfd(d)Z;e'.ej/0d*e!j<dej2dededdfd+d,Z=e'.ej/0d-dej2deddfd.d/Z>e'.ej/0d0dej2deddfd1d/Z>e'.ej/0d2dej2deddfd3d/Z>e'(e!j?dej)dededdfd4d5Z@e'(ejAdej)dededdfd6d5Z@e'.ej/d7kdej2defd8d7ZBe'.ej/d9kdej2defd:d9ZCe'.ej/d;kdej2defd<d;ZDdS )=    N)RoutertypesFBot)TelegramBadRequest)CommandStartCommand)
FSMContext)InlineKeyboardBuilder)sessionmaker)create_userget_userdelete_userget_user_perm)	UserAddDB)write_response_gptgenerate_30_day_planclient)save_user_strategyget_user_strategyupdate_user_strategy)CreateUserFSM)_)add_new_userdelete_user_from_sheet
clear_usermessagesession_makerbotc              
      s   |  dI d H }t| jj|I d H  t| jjI d H  zt| jddD ]}|j| jj|dI d H  q$W n tyO } z|j	dkrEt
d W Y d }~nd }~ww | I d H  d S )Nu   очистка...r   )chat_id
message_idz(Bad Request: message to delete not foundu(   Все сообщения удалены)answerr   chatidr   ranger!   delete_messager   r   printdelete)r   r   r   msgiex r,   1/var/www/html/tgBotAssistant/bot/handlers/main.py	cmd_clear   s$   

r.   statereturnc                    s   t | jj|I d H }t| |s| dI d H  d S t| jj|I d H }|d u rV| td| jj|I d H I d H  | td| jj|I d H I d H  |	t
jI d H  d S | dI d H  |	t
jI d H  d S )Nu    У вас нет доступа!START_MESSAGEMSG_QUESTION_NAMEu-   Вы уже зарегистрированы!)r   	from_userusernamer'   r"   r   r#   r$   r   	set_stater   namefinish)r   r   r/   permuserr,   r,   r-   	cmd_start.   s*   



r:   c                    s   |j | jdI d H  |tjI d H  t }|tjt	d| j
j|I d H dd |tjt	d| j
j|I d H dd | jt	d| j
j|I d H | dI d H  d S )	N)r6   MAN
gender_MANtextcallback_dataWOMENgender_WOMENMSG_QUESTION_GENDERreply_markup)update_datar>   r5   r   genderr
   rowr   InlineKeyboardButtonr   r#   r$   r"   	as_markup)r   r/   r   gender_markupr,   r,   r-   	name_userG   s(   rK   gender_callc                    s   | j dd  }|j|dI d H  |tjI d H  | jtd| jjj	|I d H d t|| jjj	|I d H  I d H  |
 I d H }| jtd| jjj	|I d H |d I d H  tdI d H  | jtd| jjj	|I d H I d H  d S )	N   )rF   rB    GREETINGr6      MSG_QUESTION_CITY)datarE   r5   r   cityr   	edit_textr   r#   r$   get_datar"   formatasynciosleep)rM   r/   r   rF   rS   r,   r,   r-   gender_user^   s"   
 
rZ   c                    s   | j }|j|dI d H  |tjI d H  t }|tjt	d| j
j|I d H dd |tjt	d| j
j|I d H dd |tjt	d| j
j|I d H dd |tjt	d	| j
j|I d H d
d | jt	d| j
j|I d H | dI d H  d S )N)rT   HOUSEwhere_practicing_HOUSEr=   	DEPARTUREwhere_practicing_DEPARTUREOFFICEwhere_practicing_OFFICENOWHEREwhere_practicing_NOWHEREMSG_PRACTICErC   )r>   rE   r5   r   where_practicingr
   rG   r   rH   r   r#   r$   r"   rI   )r   r/   r   rT   where_practicing_markupr,   r,   r-   	city_userq   sB   rf   where_practicing_c                    &  | j dd  }|j|dI d H  |tjI d H  | jtd| jjj	|I d H d t|| jjj	|I d H  I d H  t
 }|tjtd| jjj	|I d H dd |tjtd| jjj	|I d H d	d |tjtd
| jjj	|I d H dd | jjtd| jjj	|I d H | dI d H  d S )N   )rd   rc   
NOwere_clients_NOr=   zWERE_1-2zwere_clients_WERE_1-2NO_REGULARLYwere_clients_NO_REGULARLYMSG_QUESTION_CLIENTSrC   )rS   rE   r5   r   were_clientsr   rU   r   r#   r$   r
   rG   r   rH   r"   rI   )rM   r/   r   rd   were_clients_markupr,   r,   r-   where_practicing_user   @   
rr   were_clients_c                    sN  | j dd  }|j|dI d H  |tjI d H  | jtd| jjj	|I d H d t|| jjj	|I d H  I d H  t
 }|tjtd| jjj	|I d H dd |tjtd| jjj	|I d H d	d |tjtd
| jjj	|I d H dd |tjtd| jjj	|I d H dd | jjtd| jjj	|I d H | dI d H  d S )N   )rp   ro   rj   FACEmassage_technique_FACEr=   BODYmassage_technique_BODYFOOTmassage_technique_FOOT	LYMPHATICmassage_technique_LYMPHATICMSG_QUESTION_TECHNIQUErC   )rS   rE   r5   r   massage_techniquer   rU   r   r#   r$   r
   rG   r   rH   r"   rI   )rM   r/   r   rp   massage_technique_markupr,   r,   r-   were_clients_user   sL   
r   massage_technique_c                    rh   )N   )r   r~   rj   GOODusing_social_GOODr=   
LITTLE_BIGusing_social_LITTLE_BIGWITHOUT_THEMusing_social_WITHOUT_THEMMSG_QUESTION_SNWrC   )rS   rE   r5   r   using_socialr   rU   r   r#   r$   r
   rG   r   rH   r"   rI   )rM   r/   r   r   using_social_markupr,   r,   r-   massage_technique_user   rs   r   using_social_c                    sh  | j dd  }|j|dI d H  | I d H }|tjI d H  | jjj|	dt
|	d| jjj|I d H |	dt
|	d| jjj|I d H t
|	d| jjj|I d H t
|	d| jjj|I d H t
|	d	| jjj|I d H g}t|I d H }t|d
 |d |d |d |d |d |d |d |d	}t||I d H  |j|j|j|j|j|j|jd}t| jjj|I d H }	t|	|I d H }
t| jjj|
 |
d d }d}t|dD ]\}}|| d7 }qt|
dkr|d7 }| jd| dI d H  |
d
 }t }|tjddd |tjddd |tjddd | jjd | | d!I d H  d S )"Nru   )r   r6   rF   rT   rd   rp   r   r   r      rQ               rN   )	r    r4   rF   rT   rd   rp   r   r   	row_sheet)u   имяu   полu
   городu   формат приёмаu   техникаu   цифровые навыкиu   соцсети rj   u6   ...
и ещё задания на весь месяц!u  ✅ Отлично, вот твой персональный план на 30 дней!

Каждый день я пришлю тебе одно задание для развития твоего массажного бизнеса.

Пример первых шагов:

uF   

Будь готов работать и развиваться! 🚀   ✅ Сделалstrategy_doner=      ❌ Не сделалstrategy_fail    🤔 Хочу подсказкуstrategy_hintuB   🔔 Сегодняшнее задание (День 1 из 30):

rC   )rS   rE   rV   r5   r   r7   r   r#   r$   getr   r   r   r   r4   rF   rT   rd   r   r   r   r   r   	enumeratelenr"   r
   rG   r   rH   rI   )rM   r/   r   r   rS   resultsrG   new_user	user_datadb_userplanpreview_linespreview_textidxline
first_stepmarkupr,   r,   r-   using_social_user  st   	
r   	okey_DID_c                    s   | j dd  }| jtd| jjj|I d H d t|| jjj|I d H  I d H  d}|dks/d}t| jt|| jjj|I d H | |I d H  d S )Nr   MSG_QUESTION_HINTrj   r   	DID_WOMENDID_MANu!    Дай новое заданиеrS   r   rU   r   r#   r$   r   )rM   r   DIDr)   r,   r,   r-   didI  s   
r   hint_DID_NOTc                    ~   | j dd  }| jtd| jjj|I d H d t|| jjj|I d H  I d H  t| jt|| jjj|I d H |I d H  d S Nr   r   rj   r   rM   r   hintr,   r,   r-   r   Z  s   
hint_WANT_HINTc                    r   r   r   r   r,   r,   r-   r   h  s   
c                    s,   t | | j|I d H  |tjI d H  d S )N)r   r>   r5   r   r7   )r   r/   r   r,   r,   r-   message_gpt  s   
r   c                    sd   t | jj|I d H }td |d ur(t| | j|I d H  |tjI d H  d S | 	dI d H  d S )Nthisu(   Выполните команду /start)
r   r#   r$   r'   r   r>   r5   r   r7   r"   )r   r/   r   r9   r,   r,   r-   r     s   
r   c                    s   | j  I d H  t| j jj}|s| dI d H  d S |d d |d  d7  < t| j jj|d |d d | j	| j jjdI d H  t
dI d H  | j d	I d H  d S )
Nu   План не найден.historydone
day_numberr   r   typingrQ   uT   ✅ Отлично! Жду вас завтра для следующего шага.)r   r(   r   r#   r$   r"   appendr   r   send_chat_actionrX   rY   )rM   r   stratr,   r,   r-   r     s   r   c                    s$  | j  I d H  t| j jj}|sd S |d |d  }| j| j jjdI d H  d| d}tjjj	dd|dgd	d
I d H }|j
d j j }|d d t|d k r_||d |d d < |d d |d  d7  < t| j jj|d |d |d d tdI d H  | j dI d H  d S )Nr   r   r   u>   Это задание не удалось выполнить:
u   
Придумай более простой вариант этого задания для массажиста, коротко и понятно (1-2 предложения).gpt-4or9   rolecontent      ?modelmessagestemperaturer   r   r   fail)r   r   r   rQ   uo   Я учёл твой ответ. На завтра подготовлю более лёгкое задание!)r   r(   r   r#   r$   r   r   r   completionscreatechoicesr   stripr   r   r   rX   rY   r"   )rM   r   r   previous_stepprompt
completioneasierr,   r,   r-   r     s>   
r   c                    s*  | j  I d H  t| j jj}|sd S |d |d  }| j| j jjdI d H  d| }tjjj	dd|dgdd	I d H }|j
d
 j j }|d d t| j jj|d d tdI d H  t }|tjddd |tjddd |tjddd | j jd| | dI d H  d S )Nr   r   r   u   Дай очень короткую (2-3 предложения) полезную подсказку массажисту по выполнению этого задания:
r   r9   r   r   r   r   r   r   r   rQ   r   r   r=   r   r   r   r   u6   Вот твоя короткая подсказка:

rC   )r   r(   r   r#   r$   r   r   r   r   r   r   r   r   r   r   rX   rY   r
   rG   r   rH   r"   rI   )rM   r   r   current_stepr   r   r   r   r,   r,   r-   r     s8   
)ErX   aiogramr   r   r   r   aiogram.exceptionsr   aiogram.filtersr   r   aiogram.fsm.contextr	   aiogram.utils.keyboardr
   sqlalchemy.ormr   bot.db.requestsr   r   r   r   bot.db.schemas.usersr   bot.handlers.chat_GPTr   r   r   bot.handlers.strategy_storager   r   r   bot.structures.fsm_groupsr   bot.translationsr   bot.handlers.google_sheet_apir   r   routerr   Messager.   r:   r6   rK   callback_queryrS   
startswithrF   CallbackQueryrZ   rT   rf   rd   rr   rp   r   r   r   r   r   r   r7   r   r>   r   r   r   r,   r,   r,   r-   <module>   sb    


#!'!G
&
	-