o
     »WjU�  ã                   @   sz  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 d dlZd dlZej d ej ej ej e¡¡¡¡ d dlmZmZmZmZmZmZ d dlmZmZmZm Z m!Z!m"Z"m#Z#m$Z$m%Z%m&Z&m'Z'm(Z(m)Z)m*Z*m+Z+m,Z,m-Z-m.Z.m/Z/m0Z0 eed	d
ddd�Z1ee1ed	d�Z2e	deedf fdd„ƒZ3dd„ Z4dd„ Z5dd„ Z6dd„ Z7dd„ Z8de9de:dB de:defdd „Z;de9dedB fd!d"„Z<de9fd#d$„Z=de>e fd%d&„Z?de>e fd'd(„Z@de!fd)d*„ZAde!fd+d,„ZBde>e" fd-d.„ZCd/e:de"dB fd0d1„ZDd/e:fd2d3„ZEdeFfd4d5„ZGde&fd6d7„ZHd8d9„ ZIde>e% fd:d;„ZJde:fd<d=„ZKd>e:fd?d@„ZLdAdB„ ZMdCdD„ ZNde>e# fdEdF„ZOde>e$ fdGdH„ZPd—dIe9fdJdK„ZQd—dIe9fdLdM„ZRd—dIe9de>e( fdNdO„ZSdPe9de(dB fdQdR„ZTdPe9dSe9dTe9fdUdV„ZUd—dSe9dTe9dIe9de(fdWdX„ZVdPe9fdYdZ„ZWd—dIe9de)fd[d\„ZXd—d]e9dIe9fd^d_„ZYd—de9dIe9de9fd`da„ZZd—de9dbe9dIe9fdcdd„Z[d—de9dbe9dIe9de\fdedf„Z]dge:de\fdhdi„Z^d—de9dge:dSe9dje9dIe9f
dkdl„Z_dme9de,dB fdndo„Z`d—dme9de9dIe9de,fdpdq„Zadme9fdrds„Zbd—dme9de9dIe9de,fdtdu„Zcdme9dve9deFfdwdx„Zdd—de9dIe9de>e fdydz„Zed—de9dIe9de>e fd{d|„Zfd}e:de\fd~d„Zgd˜dIe9de>e, fd€d�„Zhdme9dedB fd‚dƒ„Zide>eF fd„d…„Zjde>eF fd†d‡„Zkdˆe9de9dme9de\fd‰dŠ„Zldˆe9deme9e9f fd‹dŒ„Zndˆe9fd�dŽ„Zodˆe9de9dme9fd�d�„Zpdˆe9de9dme9de\fd‘d’„Zqdˆe9de9dme9fd“d”„Zrdˆe9fd•d–„ZsdS )™é    )ÚAsyncSessionÚcreate_async_engineÚasync_sessionmaker)ÚselectÚfuncÚand_)Úasynccontextmanager)ÚAsyncGenerator)ÚdatetimeÚ	timedeltaN)ÚDATABASE_URLÚMAX_BOTS_PER_USERÚBOTS_CHANNEL_URLÚSOURCE_CHANNEL_URLÚDEVELOPER_URLÚDEVELOPER_IDS)ÚBaseÚUserÚBotÚBotTransferÚFactorySettingsÚButtonSettingÚMandatoryChannelÚFundedChannelÚBotGroupÚBroadcastSettingsÚ	CobotUserÚPaymentPackageÚPaymentSettingsÚUserBalanceÚPaymentTransactionÚBotSubscriptionÚCobotMandatoryChannelÚCobotFundedChannelÚCobotFundedSubscriptionÚCobotFundedPendingFé   é(   T)ÚechoÚ	pool_sizeÚmax_overflowÚpool_pre_ping)Úclass_Úexpire_on_commitÚreturnc               	   C  sz   �t ƒ 4 I d H š(} z| V  |  ¡ I d H  W n ty$   |  ¡ I d H  ‚ w W d   ƒI d H  d S 1 I d H s6w   Y  d S ©N)ÚAsyncSessionFactoryÚcommitÚ	ExceptionÚrollback)Úsession© r5   ú-/var/www/kodo/factory/information/database.pyÚget_session&   s   €þÿ.ýr7   c               	   Ã   s¦   �t  ¡ 4 I d H š} |  tjj¡I d H  W d   ƒI d H  n1 I d H s$w   Y  tƒ I d H  tƒ I d H  tƒ I d H  t	ƒ I d H  t
ƒ I d H  tƒ I d H  tdƒ d S )Nu+   âœ… Ù‚Ø§Ø¹Ø¯Ø© Ø§Ù„Ø¨ÙŠØ§Ù†Ø§Øª Ø¬Ø§Ù‡Ø²Ø©.)ÚengineÚbeginÚrun_syncr   ÚmetadataÚ
create_allÚ_init_factory_settingsÚ_init_broadcast_settingsÚ_init_button_settingsÚ_init_developersÚ_init_payment_settingsÚ_init_payment_packagesÚprint)Úconnr5   r5   r6   Úinit_db0   s   €(ÿrE   c               	   Ã   s�   �t ƒ 4 I d H š3} |  ttƒ d¡¡I d H }| ¡ s0|  tttt	t
d�¡ W d   ƒI d H  d S W d   ƒI d H  d S 1 I d H sAw   Y  d S )Né   )Úmax_bots_per_userÚbots_channel_urlÚsource_channel_urlÚdeveloper_url)r7   Úexecuter   r   ÚlimitÚscalar_one_or_noneÚaddr   r   r   r   ©r4   Úresultr5   r5   r6   r=   =   s   €
üý.þr=   c               	   Ã   s†   �t ƒ 4 I d H š.} |  ttƒ d¡¡I d H }| ¡ s+|  tƒ ¡ W d   ƒI d H  d S W d   ƒI d H  d S 1 I d H s<w   Y  d S ©NrF   )r7   rK   r   r   rL   rM   rN   rO   r5   r5   r6   r>   I   s   €ý.þr>   c               	   Ã   s0  �g ddd dd d dœ‘ddd dd d dœ‘ddd dd d dœ‘d	d
d dd d dœ‘ddd dd d dœ‘ddd dt d dœ‘ddd dtd dœ‘ddd dtd dœ‘ddd dd d dœ‘ddd dd d dœ‘ddd dd d dœ‘ddd dd d dœ‘ddd dd d dœ‘ddd dd d dœ‘dd d dd d dœ‘d!d"d dd d dœ‘d#d$d dd d dœ‘d%d&d dd d dœ‘d'd(d dd d dœ‘d)d*d dd d dœ‘d+d,d dd d dœ‘d-d.d dd d dœ‘d/d0d dd d dœ‘d1d2d dd d dœ‘d3d4d dd d dœ‘d5d6d dd d dœ‘d7d8d dd d dœ‘d9d:d dd d dœ‘d;d<d dd d dœ‘d=d>d dd d dœ‘d?d@d dd d dœ‘dAdBd dd d dœ‘dCdDd dd d dœ‘dEdFd dd d dœ‘dGdHd dd d dœ‘dIdJd dd d dœ‘dKdLd dd d dœ‘} tƒ 4 I d H š3}| D ]$}| ttƒ tj|dM k¡¡I d H }| 	¡ �s}| 
tdNi |¤Ž¡ �qZW d   ƒI d H  d S 1 I d H �s‘w   Y  d S )ONÚcreateu   Ø¥Ù†Ø´Ø§Ø¡ Ø¨ÙˆØªÚdefault)Ú
button_keyÚlabelÚemojiÚcolorÚurlÚcustom_emoji_idÚmybotsu   Ø¨ÙˆØªØ§ØªÙŠÚhelpu   Ø§Ù„ØªØ¹Ù„ÙŠÙ…Ø§ØªÚpaid_createu!   Ø¥Ù†Ø´Ø§Ø¡ Ø¨ÙˆØª Ù…Ø¯Ù�ÙˆØ¹ ðŸ’ŽÚsubscriptionu   Ø§Ø´ØªØ±Ø§Ùƒ ðŸŒŸÚbots_channelu   Ù‚Ù†Ø§Ø© Ø§Ù„Ø¨ÙˆØªØ§ØªÚsource_channelu   Ù‚Ù†Ø§Ø© Ø§Ù„Ø³ÙˆØ±Ø³Ú	developeru   Ø§Ù„Ù…Ø·ÙˆØ±Úbacku   Ø±Ø¬ÙˆØ¹Úfactoryu%   Ø§ØµÙ†Ø¹ ØµØ§Ù†Ø¹ Ø¨ÙˆØªØ§Øª Ø®Ø¯Ù…ÙŠÚcommunicationu   Ø¨ÙˆØª ØªÙˆØ§ØµÙ„ Ø§Ùˆ Ø³Ø§ÙŠØªÚdownloadu   ØµÙ†Ø¹ Ø¨ÙˆØª ØªØ­Ù…ÙŠÙ„Údecoru   Ø¨ÙˆØª Ø²ØºØ±Ù�Ù‡ Ø§Ø³Ù…Ø§Ø¡Úbuttonsu   Ø¨ÙˆØª Ø§Ø²Ø±Ø§Ø±Útranscodingu   Ø¨ÙˆØª ØªØ­ÙˆÙŠÙ„ ØµÙŠØºÚtranslationu   Ø¨ÙˆØª ØªØ±Ø¬Ù…Ù‡Úaiu,   Ø¨ÙˆØª ØªØ­Ø¯Ø« Ù…Ø¹ Ø°ÙƒØ§Ø¡ Ø§ØµØ·Ù†Ø§Ø¹ÙŠÚ	pay_topupu   Ø¥Ø¶Ø§Ù�Ø© Ø±ØµÙŠØ¯Úpay_subscribeu   Ø§Ø´ØªØ±Ø§Ùƒ Ù…Ø¯Ù�ÙˆØ¹Úpay_paid_botsu$   Ø§Ù„Ø¨ÙˆØªØ§Øª Ø§Ù„Ù…Ø¯Ù�ÙˆØ¹Ø© ðŸ’ŽÚ
owner_selfu   ðŸ‘¤ Ø£Ù†Ø§Úowner_otheru   ðŸ‘¥ Ø´Ø®Øµ Ø¢Ø®Ø±Úbot_transferu   Ù†Ù‚Ù„ Ø§Ù„Ø¨ÙˆØªÚbot_edit_photou   ØªØºÙŠÙŠØ± Ø§Ù„ØµÙˆØ±Ø©Úbot_edit_nameu   ØªØºÙŠÙŠØ± Ø§Ù„Ø§Ø³Ù…Úbot_change_typeu   ØªØºÙŠÙŠØ± Ù†ÙˆØ¹ Ø§Ù„Ø¨ÙˆØªÚtransfer_acceptu   Ù…ÙˆØ§Ù�Ù‚Ø©Útransfer_rejectu   Ø±Ù�Ø¶Útransfer_confirmu
   ØªØ£ÙƒÙŠØ¯Úopen_bot_urlu   ðŸš€ Ù�ØªØ­Úback_to_mainu(   Ø±Ø¬ÙˆØ¹ Ù„Ù„Ù‚Ø§Ø¦Ù…Ø© Ø§Ù„Ø±Ø¦ÙŠØ³ÙŠØ©Úconfirm_tokenu   Ù†Ø¹Ù…ØŒ Ù…ØªØ§Ø¨Ø¹Ø©Úbot_urlz	@usernameÚ
bot_deleteu   Ø­Ø°Ù� Ø§Ù„Ø¨ÙˆØªÚ
bot_manageu
   Ø¥Ø¯Ø§Ø±Ø©Ú	check_subu"   âœ… ØªØ­Ù‚Ù‚ Ù…Ù† Ø§Ù„Ø§Ø´ØªØ±Ø§ÙƒÚsub_channel_urlu   Ø±Ø§Ø¨Ø· Ø§Ù„Ù‚Ù†Ø§Ø©rT   r5   )r   r   r   r7   rK   r   r   ÚwhererT   rM   rN   )Údefaultsr4   ÚbtnrP   r5   r5   r6   r?   P   s¬   €ÿþýüûúùø	÷
öõôóòñðïîíìëêéèçæåäãâá à!ß"Þ#Ý$Ü%Û'
ÿ
€û0ÿr?   c               	   Ã   sš   �t ƒ 4 I d H š8} tD ])}|  ttƒ tj|k¡¡I d H }| ¡ }|s.|  t|ddd�¡ q|j	s4d|_	qW d   ƒI d H  d S 1 I d H sFw   Y  d S )NÚ	DeveloperT)ÚidÚ
first_nameÚis_dev)
r7   r   rK   r   r   r~   r‚   rM   rN   r„   )r4   Údev_idrP   Úuserr5   r5   r6   r@   �   s   € €ú.ÿr@   Úuser_idÚusernamerƒ   c              	   Ã   s    �t ƒ 4 I d H š;}| ttƒ tj| k¡¡I d H }| ¡ }|s,t| ||d�}| |¡ n||_||_	t
 ¡ |_|W  d   ƒI d H  S 1 I d H sIw   Y  d S )N)r‚   rˆ   rƒ   )r7   rK   r   r   r~   r‚   rM   rN   rˆ   rƒ   r
   ÚutcnowÚlast_active)r‡   rˆ   rƒ   r4   rP   r†   r5   r5   r6   Úget_or_create_user‹   s   € 
0ör‹   c              	   Ã   óh   �t ƒ 4 I d H š}| ttƒ tj| k¡¡I d H }| ¡ W  d   ƒI d H  S 1 I d H s-w   Y  d S r/   )r7   rK   r   r   r~   r‚   rM   )r‡   r4   rP   r5   r5   r6   Úget_user™   ó
   € 0þr�   c              	   Ã   sx   �t ƒ 4 I d H š'}| ttƒ tj| k¡¡I d H }| ¡ }|r$t ¡ |_	W d   ƒI d H  d S 1 I d H s5w   Y  d S r/   )
r7   rK   r   r   r~   r‚   rM   r
   r‰   rŠ   )r‡   r4   rP   r†   r5   r5   r6   Úupdate_last_activeŸ   s   € .ür�   c               	   Ã   st   �t ƒ 4 I d H š%} |  ttƒ tjdktjdk¡¡I d H }| ¡  ¡ W  d   ƒI d H  S 1 I d H s3w   Y  d S ©NF)	r7   rK   r   r   r~   Ú	is_bannedÚis_blocked_botÚscalarsÚallrO   r5   r5   r6   Úget_all_active_users§   s   €þ
ÿ
0ùr•   c               	   Ã   ól   �t ƒ 4 I d H š!} |  ttƒ tjdk¡¡I d H }| ¡  ¡ W  d   ƒI d H  S 1 I d H s/w   Y  d S r�   )r7   rK   r   r   r~   r’   r“   r”   rO   r5   r5   r6   Úget_all_users_for_open_msg²   ó   €
ÿ
0ür—   c               	   Ã   ób   �t ƒ 4 I d H š} |  ttƒ d¡¡I d H }| ¡ W  d   ƒI d H  S 1 I d H s*w   Y  d S rQ   )r7   rK   r   r   rL   Ú
scalar_onerO   r5   r5   r6   Úget_settings¹   ó
   €0þr›   c               	   Ë   s„   �t ƒ 4 I d H š-}| ttƒ d¡¡I d H }| ¡ }|  ¡ D ]
\}}t|||ƒ q|W  d   ƒI d H  S 1 I d H s;w   Y  d S rQ   )r7   rK   r   r   rL   rš   ÚitemsÚsetattr)Úkwargsr4   rP   ÚsettingsÚkeyÚvaluer5   r5   r6   Úupdate_settings¿   s   €0ûr£   c               	   Ã   s`   �t ƒ 4 I d H š} |  ttƒ¡I d H }| ¡  ¡ W  d   ƒI d H  S 1 I d H s)w   Y  d S r/   )r7   rK   r   r   r“   r”   rO   r5   r5   r6   Úget_all_buttonsÇ   s
   €
0þr¤   rT   c              	   Ã   rŒ   r/   )r7   rK   r   r   r~   rT   rM   )rT   r4   rP   r5   r5   r6   Ú
get_buttonÍ   ó   €
ÿ0ür¥   c              	   Ë   s¢   �t ƒ 4 I d H š<}| ttƒ tj| k¡¡I d H }| ¡ }|r.| ¡ D ]\}}t|||ƒ q#W d   ƒI d H  d S W d   ƒI d H  d S 1 I d H sJw   Y  d S r/   )	r7   rK   r   r   r~   rT   rM   r�   rž   )rT   rŸ   r4   rP   r€   r¡   r¢   r5   r5   r6   Úupdate_buttonÕ   s   €
ÿþû.úr§   c                  Ã   sÔ  �t ƒ 4 I d H �šS} t ¡ }|jddddd�}|jdddddd�}|tdd� }|  tt t	j
¡ƒ¡I d H  ¡ }|  tt t	j
¡ƒ t	j|k¡¡I d H  ¡ }|  tt t	j
¡ƒ t	jdk¡¡I d H  ¡ }|  tt t	j
¡ƒ t	jdk¡¡I d H  ¡ }|  tt tj
¡ƒ tjdk¡¡I d H  ¡ }	|  tt tj
¡ƒ tjdktj|k¡¡I d H  ¡ }
|  tt tj
¡ƒ tjdktj|k¡¡I d H  ¡ }|  tt tj
¡ƒ¡I d H  ¡ }|  tt tj
¡ƒ tj|k¡¡I d H  ¡ }|  tt t	j
¡ƒ t	jdk¡¡I d H  ¡ }|  tt t	j
¡ƒ t	jdk¡¡I d H  ¡ }|  tt tj
¡ƒ tjdk¡¡I d H  ¡ }|  tt tj
¡ƒ tjdk¡¡I d H  ¡ }|||||	|
|||||||dœW  d   ƒI d H  S 1 I d H �scw   Y  d S )	Nr   )ÚhourÚminuteÚsecondÚmicrosecondrF   )Údayr¨   r©   rª   r«   é   )ÚhoursT)Útotal_usersÚ
active_24hÚbanned_usersÚblocked_botÚ
total_botsÚ
bots_todayÚ
bots_monthÚcobot_users_totalÚcobot_users_24hÚ
total_devsÚtotal_adminsÚmandatory_countÚfunded_count)r7   r
   r‰   Úreplacer   rK   r   r   Úcountr   r‚   Úscalarr~   rŠ   r‘   r’   r   Ú	is_activeÚ
created_atr   r„   Úis_adminr   r   )r4   ÚnowÚtodayÚ
this_monthÚlast_24hr¯   r°   r±   r²   r³   r´   rµ   r¶   r·   r¸   r¹   rº   r»   r5   r5   r6   Úget_statisticsß   s¸   €ÿþÿþÿþÿþÿþþÿûþÿûÿþÿþÿþÿþÿþÿþó2ÀrÆ   c               	   Ã   r™   rQ   )r7   rK   r   r   rL   rš   rO   r5   r5   r6   Úget_broadcast_settings0  rœ   rÇ   c               	   Ë   s‚   �t ƒ 4 I d H š,}| ttƒ d¡¡I d H }| ¡ }|  ¡ D ]
\}}t|||ƒ qW d   ƒI d H  d S 1 I d H s:w   Y  d S rQ   )r7   rK   r   r   rL   rš   r�   rž   )rŸ   r4   rP   Úbsr¡   r¢   r5   r5   r6   Úupdate_broadcast_settings6  s   €ÿ.ýrÉ   c               	   Ã   r–   ©NT)r7   rK   r   r   r~   r¿   r“   r”   rO   r5   r5   r6   Úget_all_bot_groups>  r˜   rË   c               	   Ã   sÆ   �t ƒ 4 I d H šM} |  ttƒ d¡¡I d H }| ¡ }|r1t|dƒr=|jrI|jW  d   ƒI d H  S W d   ƒI d H  	 dS W d   ƒI d H  	 dS W d   ƒI d H  	 dS 1 I d H s[w   Y  	 dS )NrF   Ú	help_textuN  ðŸ“– <b>Ø§Ù„ØªØ¹Ù„ÙŠÙ…Ø§Øª</b>

ðŸ”¹ <b>Ø¥Ù†Ø´Ø§Ø¡ Ø¨ÙˆØª:</b> Ø§Ø®ØªØ± Ù†ÙˆØ¹ Ø§Ù„Ø¨ÙˆØª ÙˆØ£Ø±Ø³Ù„ ØªÙˆÙƒÙ†Ù‡ Ù…Ù† @BotFather
ðŸ”¹ <b>Ø¨ÙˆØªØ§ØªÙŠ:</b> Ø¹Ø±Ø¶ ÙˆØ¥Ø¯Ø§Ø±Ø© Ø¨ÙˆØªØ§ØªÙƒ
ðŸ”¹ <b>Ù†Ù‚Ù„ Ø§Ù„Ø¨ÙˆØª:</b> ÙŠÙ…ÙƒÙ†Ùƒ Ù†Ù‚Ù„ Ø¨ÙˆØªÙƒ Ù„Ù…Ø³ØªØ®Ø¯Ù… Ø¢Ø®Ø±
ðŸ”¹ <b>ØªØºÙŠÙŠØ± Ø§Ù„Ø§Ø³Ù…/Ø§Ù„ØµÙˆØ±Ø©:</b> ØªØ®ØµÙŠØµ Ø¨ÙˆØªÙƒ)r7   rK   r   r   rL   rM   ÚhasattrrÌ   ©r4   rP   Úsr5   r5   r6   Úget_help_textE  s,   €üýÿþýÿþýÿûÿrÐ   Útextc              	   Ã   sn   �t ƒ 4 I d H š"}| ttƒ d¡¡I d H }| ¡ }|r| |_W d   ƒI d H  d S 1 I d H s0w   Y  d S rQ   )r7   rK   r   r   rL   rM   rÌ   )rÑ   r4   rP   rÏ   r5   r5   r6   Úupdate_help_textT  s   €.ürÒ   c               	   Ã   óŠ   �t ƒ 4 I d H š0} |  ttƒ d¡¡I d H }| ¡ }|s(	 W d   ƒI d H  dS |j|jfW  d   ƒI d H  S 1 I d H s>w   Y  d S ©NrF   )NN)r7   rK   r   r   rL   rM   Ústart_templateÚstart_template_entitiesrÎ   r5   r5   r6   Ú get_start_template_with_entities\  ó   €ü
0ûr×   c               	   Ã   rÓ   rÔ   )r7   rK   r   r   rL   rM   Útoken_templateÚtoken_template_entitiesrÎ   r5   r5   r6   Ú get_token_template_with_entitiese  rØ   rÛ   c               	   Ã   r–   rÊ   )r7   rK   r   r   r~   r¿   r“   r”   rO   r5   r5   r6   Úget_mandatory_channelsn  r˜   rÜ   c               	   Ã   r–   rÊ   )r7   rK   r   r   r~   r¿   r“   r”   rO   r5   r5   r6   Úget_funded_channelsv  r˜   rÝ   Úfactory_bot_idc              	   Ã   s˜   �t ƒ 4 I d H š7}| ttƒ tj| k¡ d¡¡I d H }| ¡ s4| td| d�¡ W d   ƒI d H  d S W d   ƒI d H  d S 1 I d H sEw   Y  d S ©NrF   éÈ   )Úbot_price_usdrÞ   )	r7   rK   r   r   r~   rÞ   rL   rM   rN   ©rÞ   r4   rP   r5   r5   r6   rA   ‚  s   €
ÿû.ürA   c              	   Ã   s¶   �g d¢}t ƒ 4 I d H šB}| tt tj¡ƒ tj| k¡¡I d H }| 	¡ dkr8|D ]\}}| 
t||| d�¡ q)W d   ƒI d H  d S W d   ƒI d H  d S 1 I d H sTw   Y  d S )N))éd   rà   )éú   éô  )rå   éè  )iî  éÜ  )ræ   éÐ  )rç   i¸  )rè   i   r   ©ÚstarsÚusdrÞ   )r7   rK   r   r   r½   r   r‚   r~   rÞ   r¾   rN   )rÞ   r   r4   rP   rê   rë   r5   r5   r6   rB   ‹  s   €	
ÿþü.ûrB   c              	   Ã   s|   �t ƒ 4 I d H š)}| ttƒ tjdktj| k¡ tj¡¡I d H }| 	¡  
¡ W  d   ƒI d H  S 1 I d H s7w   Y  d S rÊ   )r7   rK   r   r   r~   r¿   rÞ   Úorder_byrê   r“   r”   râ   r5   r5   r6   Úget_payment_packages   s   €þ
ü
0ùrí   Úpkg_idc              	   Ã   rŒ   r/   )r7   rK   r   r   r~   r‚   rM   )rî   r4   rP   r5   r5   r6   Úget_payment_package«  r¦   rï   rê   rë   c              	   Ã   sz   �t ƒ 4 I d H š(}| ttƒ tj| k¡¡I d H }| ¡ }|r%||_||_W d   ƒI d H  d S 1 I d H s6w   Y  d S r/   )	r7   rK   r   r   r~   r‚   rM   rê   rë   )rî   rê   rë   r4   rP   Úpkgr5   r5   r6   Úupdate_payment_package³  s   €
ÿ.ùrñ   c              	   Ã   sj   �t ƒ 4 I d H š }t| ||d�}| |¡ | ¡ I d H  |W  d   ƒI d H  S 1 I d H s.w   Y  d S )Nré   )r7   r   rN   Úflush)rê   rë   rÞ   r4   rð   r5   r5   r6   Úadd_payment_package¾  s   €
0üró   c              	   Ã   st   �t ƒ 4 I d H š%}| ttƒ tj| k¡¡I d H }| ¡ }|r"d|_W d   ƒI d H  d S 1 I d H s3w   Y  d S r�   )r7   rK   r   r   r~   r‚   rM   r¿   )rî   r4   rP   rð   r5   r5   r6   Údelete_payment_packageÆ  s   €
ÿ.úrô   c              	   Ã   sš   �t ƒ 4 I d H š8}| ttƒ tj| k¡ d¡¡I d H }| ¡ }|s4td| d�}| |¡ | 	¡ I d H  |W  d   ƒI d H  S 1 I d H sFw   Y  d S rß   )
r7   rK   r   r   r~   rÞ   rL   rM   rN   rò   )rÞ   r4   rP   Úpsr5   r5   r6   Úget_payment_settingsÒ  s   €
ÿ
0÷rö   Úprice_usd_centsc              	   Ã   sz   �t ƒ 4 I d H š(}| ttƒ tj|k¡ d¡¡I d H }| ¡ }|r%| |_W d   ƒI d H  d S 1 I d H s6w   Y  d S rQ   )	r7   rK   r   r   r~   rÞ   rL   rM   rá   )r÷   rÞ   r4   rP   rõ   r5   r5   r6   Úupdate_bot_priceß  s   €
ÿ.úrø   c              	   Ã   s~   �t ƒ 4 I dH š*}| ttƒ tj| ktj|k¡¡I dH }| ¡ }|r&|jndW  d  ƒI dH  S 1 I dH s8w   Y  dS )u7   ÙŠÙ�Ø±Ø¬Ø¹ Ø§Ù„Ø±ØµÙŠØ¯ Ã— 100 (Ù…Ø«Ù„Ø§Ù‹ 200 = 2.00$)Nr   ©	r7   rK   r   r   r~   r‡   rÞ   rM   Úbalance)r‡   rÞ   r4   rP   Úubr5   r5   r6   Úget_user_balanceë  s   €þ
ÿ0ørü   Úamount_centsc              	   Ã   s°   �t ƒ 4 I d H šC}| ttƒ tj| ktj|k¡¡I d H }| ¡ }|r+| j|7  _n| 	t| ||d�¡ W d   ƒI d H  d S W d   ƒI d H  d S 1 I d H sQw   Y  d S )N)r‡   rú   rÞ   )
r7   rK   r   r   r~   r‡   rÞ   rM   rú   rN   ©r‡   rý   rÞ   r4   rP   rû   r5   r5   r6   Úadd_user_balanceø  s   €þ
ÿõ	.÷rÿ   c              	   Ã   s¨   �t ƒ 4 I d H š?}| ttƒ tj| ktj|k¡¡I d H }| ¡ }|r(|j|k r4	 W d   ƒI d H  dS | j|8  _	 W d   ƒI d H  dS 1 I d H sMw   Y  d S )NFTrù   rþ   r5   r5   r6   Údeduct_user_balance  s   €þ
ÿ÷
0õr   Ú	charge_idc              	   Ã   sl   �t ƒ 4 I d H š!}| ttƒ tj| k¡¡I d H }| ¡ d uW  d   ƒI d H  S 1 I d H s/w   Y  d S r/   )r7   rK   r   r    r~   Útelegram_charge_idrM   )r  r4   rP   r5   r5   r6   Úis_payment_processed  r˜   r  Ú	usd_centsc              
   Ã   sZ   �t ƒ 4 I d H š}| t| ||||d�¡ W d   ƒI d H  d S 1 I d H s&w   Y  d S )N)r‡   r  rê   Úusd_creditedrÞ   )r7   rN   r    )r‡   r  rê   r  rÞ   r4   r5   r5   r6   Úrecord_payment   s   €
û.ÿr  Úbot_idc              	   Ã   sp   �t ƒ 4 I d H š#}| ttƒ tj| ktjdk¡¡I d H }| ¡ W  d   ƒI d H  S 1 I d H s1w   Y  d S rÊ   )r7   rK   r   r!   r~   r  r¿   rM   ©r  r4   rP   r5   r5   r6   Úget_bot_subscription-  s   €þ
ÿ0ùr	  c           	   
   Ã   sÀ   �ddl m} tƒ 4 I d H šE}t  ¡ }t| |||||dd� dd�}| |¡ | ttƒ 	tj
| k¡¡I d H }| ¡ }|r@d|_| ¡ I d H  |W  d   ƒI d H  S 1 I d H sYw   Y  d S )Nr   ©r   é   ©ÚdaysT©r  r‡   rÞ   Ú
started_atÚ
expires_atr¿   )r
   r   r7   r‰   r!   rN   rK   r   r   r~   r‚   rM   Úis_paidrò   )	r  r‡   rÞ   r   r4   rÂ   ÚsubrP   Úbotr5   r5   r6   Úcreate_bot_subscription8  s(   €ú
 0ïr  c              	   Ã   s¦   �t ƒ 4 I d H š>}| ttƒ tj| k¡¡I d H }| ¡ }|r"d|_| ttƒ tj	| k¡¡I d H }| ¡ }|r;d|_
W d   ƒI d H  d S 1 I d H sLw   Y  d S r�   )r7   rK   r   r!   r~   r  rM   r¿   r   r‚   r  )r  r4   rP   r  Úresult2r  r5   r5   r6   Úexpire_bot_subscriptionN  s   €
ÿ .ör  c           
   
   Ã   s
  �ddl m} tƒ 4 I dH šj}t  ¡ }| ttƒ tj| k¡¡I dH }| 	¡ }|r8d|_
||_||dd� |_nt| |||||dd� dd�}| |¡ | ttƒ tj| k¡¡I dH }| 	¡ }	|	red|	_| ¡ I dH  |W  d  ƒI dH  S 1 I dH s~w   Y  dS )ur   ÙŠØ¬Ø¹Ù„ Ø§Ù„Ø¨ÙˆØª Ù…Ø¯Ù�ÙˆØ¹Ø§Ù‹ (Ù…Ù† Ù‚Ø¨Ù„ Ø§Ù„Ø¥Ø¯Ø§Ø±Ø©) ÙˆÙŠÙ†Ø´Ø¦/ÙŠØ¬Ø¯Ø¯ Ø§Ø´ØªØ±Ø§ÙƒØ§Ù‹ 30 ÙŠÙˆÙ…Ø§Ù‹r   r
  NTr  r  r  )r
   r   r7   r‰   rK   r   r!   r~   r  rM   r¿   r  r  rN   r   r‚   r  rò   )
r  r‡   rÞ   r   r4   rÂ   rP   r  r  r  r5   r5   r6   Úmake_bot_paid\  s0   €
ÿþ
 0ër  r  c              	   Ã   sò   �ddl m} tƒ 4 I dH š^}| ttƒ tj| k¡¡I dH }| ¡ }|s5ddddœW  d  ƒI dH  S t  	¡ }|j
||d� }|dk rY||krYddddœW  d  ƒI dH  S ||_
d	d
|dœW  d  ƒI dH  S 1 I dH srw   Y  dS )uu   ÙŠØ²ÙŠØ¯ (days>0) Ø£Ùˆ ÙŠÙ‚Ù„Ù„ (days<0) Ù…Ø¯Ø© Ø§Ù„Ø§Ø´ØªØ±Ø§Ùƒ.
    ÙŠÙ�Ø±Ø¬Ø¹ dict Ù�ÙŠÙ‡: ok, reason, new_expiresr   r
  NFÚno_sub)ÚokÚreasonÚnew_expiresr  Útoo_muchTÚ )r
   r   r7   rK   r   r!   r~   r  rM   r‰   r  )r  r  r   r4   rP   r  rÂ   r  r5   r5   r6   Úadjust_bot_subscriptionw  s$   €
ÿ
ú
õ
0ór  c                 Ã   s”   �t ƒ 4 I d H š5}| ttƒ tj| ktjdktjdk|r"tj|kntj 	d ¡¡¡I d H }| 
¡  ¡ W  d   ƒI d H  S 1 I d H sCw   Y  d S rÊ   ©r7   rK   r   r   r~   Úowner_idr¿   r  Úcreated_by_bot_idÚis_r“   r”   ©r‡   rÞ   r4   rP   r5   r5   r6   Úget_user_paid_bots‹  ó   €ü
ÿ
0÷r$  c                 Ã   s”   �t ƒ 4 I d H š5}| ttƒ tj| ktjdktjdk|r"tj|kntj 	d ¡¡¡I d H }| 
¡  ¡ W  d   ƒI d H  S 1 I d H sCw   Y  d S ©NTFr  r#  r5   r5   r6   Úget_user_unpaid_bots˜  r%  r'  Úbot_usernamec              	   Ã   sˆ   �t ƒ 4 I d H š/}| ttƒ t tj¡|  ¡ ktjdk¡¡I d H }| 	¡ }|r+|j
ndW  d   ƒI d H  S 1 I d H s=w   Y  d S r&  )r7   rK   r   r   r~   r   Úlowerrˆ   r¿   rM   r  )r(  r4   rP   r  r5   r5   r6   Úis_bot_paid¥  s   €þ
ÿ0ør*  c              	   Ã   s–   �t ƒ 4 I dH š6}tjdktjt ¡ kg}| dur!| tj| k¡ | t	tƒj
|Ž ¡I dH }| ¡  ¡ W  d  ƒI dH  S 1 I dH sDw   Y  dS )ub   ÙŠÙ�Ø±Ø¬Ø¹ Ø§Ù„Ø§Ø´ØªØ±Ø§ÙƒØ§Øª Ø§Ù„Ù…Ù†ØªÙ‡ÙŠØ©. factory_bot_id=None ÙŠØ¹Ù†ÙŠ ÙƒÙ„ Ø§Ù„Ù…ØµØ§Ù†Ø¹NT)r7   r!   r¿   r  r
   r‰   ÚappendrÞ   rK   r   r~   r“   r”   )rÞ   r4   ÚcondsrP   r5   r5   r6   Úget_expiring_subscriptions±  s   €þ
0ør-  c              	   Ã   rŒ   r/   )r7   rK   r   r   r~   r‚   rM   r  r5   r5   r6   Úget_bot_by_id¾  rŽ   r.  c               	   Ã   sz   �t ƒ 4 I dH š(} |  ttƒ tjdk¡¡I dH }| ¡  ¡ }dd„ |D ƒW  d  ƒI dH  S 1 I dH s6w   Y  dS )uÏ   Ù‚Ù†ÙˆØ§Øª Ø§Ù„Ø§Ø´ØªØ±Ø§Ùƒ Ø§Ù„Ø¥Ø¬Ø¨Ø§Ø±ÙŠ Ø§Ù„ØªÙŠ ÙŠÙ�Ø±Ø¶Ù‡Ø§ Ø§Ù„Ù…ØµÙ†Ø¹ Ø§Ù„Ø£Ø³Ø§Ø³ÙŠ Ø¹Ù„Ù‰ ÙƒÙ„ Ø§Ù„Ø¨ÙˆØªØ§Øª Ø§Ù„Ù…ØµÙ†ÙˆØ¹Ø©.
    ØªÙ�Ù‚Ø±Ø£ Ù…Ù† Ø¬Ø¯ÙˆÙ„ CobotMandatoryChannel Ù�ÙŠ PostgreSQL.NTc              	   S   s6   g | ]}|j |j|j|j|j|jr|jjnd dœ‘qS )rf   )r‚   Ú
channel_idÚchannel_usernameÚchannel_titleÚinvite_linkÚdisplay_type)r‚   r/  r0  r1  r2  r3  r¢   ©Ú.0Úchr5   r5   r6   Ú
<listcomp>Ì  s    	ùúÿz8get_factory_cobot_mandatory_channels.<locals>.<listcomp>)r7   rK   r   r"   r~   r¿   r“   r”   ©r4   rP   Úchannelsr5   r5   r6   Ú$get_factory_cobot_mandatory_channelsÄ  s   €
ÿ	÷0ûr:  c               	   Ã   s„   �t ƒ 4 I dH š-} |  ttƒ tjdktj d¡¡¡I dH }| ¡  	¡ }dd„ |D ƒW  d  ƒI dH  S 1 I dH s;w   Y  dS )uò   Ø§Ù„Ù‚Ù†ÙˆØ§Øª Ø§Ù„Ù…Ù…ÙˆÙ„Ø© Ø§Ù„Ø¥Ø¬Ø¨Ø§Ø±ÙŠØ© Ø§Ù„ØªÙŠ ÙŠÙ�Ø±Ø¶Ù‡Ø§ Ø§Ù„Ù…ØµÙ†Ø¹ Ø§Ù„Ø£Ø³Ø§Ø³ÙŠ Ø¹Ù„Ù‰ Ø§Ù„Ø¨ÙˆØªØ§Øª Ø§Ù„Ù…ØµÙ†ÙˆØ¹Ø©.
    ØªÙ�Ù‚Ø±Ø£ Ù…Ù† CobotFundedChannel Ù�ÙŠ PostgreSQL (Ø§Ù„Ù†Ø´Ø·Ø© ÙˆØºÙŠØ± Ø§Ù„Ù…ÙƒØªÙ…Ù„Ø© Ù�Ù‚Ø·).NTc                 S   s>   g | ]}|j |j|j|j|j|jr|jjnd |j|jdœ‘qS )rf   )r‚   r/  r0  r1  r2  r3  Útarget_countÚcurrent_count)	r‚   r/  r0  r1  r2  r3  r¢   r;  r<  r4  r5   r5   r6   r7  ä  s    ÷øÿz5get_factory_cobot_funded_channels.<locals>.<listcomp>)
r7   rK   r   r#   r~   r¿   Úcompleted_atr"  r“   r”   r8  r5   r5   r6   Ú!get_factory_cobot_funded_channelsÙ  s   €
þ
ÿõ0ør>  Ú
channel_pkc              	   Ã   sÎ   �t ƒ 4 I dH šR}| ttƒ tj| ktj|ktj|k¡¡I dH }| ¡ r1	 W d  ƒI dH  dS | 	t| ||d�¡ | 
t| ¡I dH }|rN|jpJdd |_	 W d  ƒI dH  dS 1 I dH s`w   Y  dS )u½   ÙŠØ³Ø¬Ù‘Ù„ Ø§Ø´ØªØ±Ø§Ùƒ Ù…Ø³ØªØ®Ø¯Ù… Ù�ÙŠ Ù‚Ù†Ø§Ø© Ù…Ù…ÙˆÙ„Ø© Ù„Ù„Ù…ØµÙ†Ø¹ Ø§Ù„Ø£Ø³Ø§Ø³ÙŠ.
    ÙŠÙ�Ø±Ø¬Ø¹ True Ø¥Ø°Ø§ ÙƒØ§Ù† Ø§Ø´ØªØ±Ø§ÙƒØ§Ù‹ Ø¬Ø¯ÙŠØ¯Ø§Ù‹ (Ù„Ù… ÙŠÙ�Ø³Ø¬ÙŽÙ‘Ù„ Ù…Ù† Ù‚Ø¨Ù„).NF©Úcobot_funded_channel_idr‡   r  r   rF   T)r7   rK   r   r$   r~   rA  r‡   r  rM   rN   Úgetr#   r<  )r?  r‡   r  r4   Úexistsr6  r5   r5   r6   Úrecord_factory_cobot_funded_subó  s,   €ý
ÿ÷
ý0îrD  c              	   Ã   s~   �t ƒ 4 I dH š*}| t| ¡I dH }|s 	 W d  ƒI dH  dS |jp$d|jfW  d  ƒI dH  S 1 I dH s8w   Y  dS )uG   ÙŠÙ�Ø±Ø¬Ø¹ (Ø§Ù„Ø¹Ø¯Ø¯ Ø§Ù„Ø­Ø§Ù„ÙŠ, Ø§Ù„Ù‡Ø¯Ù�) Ù„Ù‚Ù†Ø§Ø© Ù…Ù…ÙˆÙ„Ø©.N)r   r   r   )r7   rB  r#   r<  r;  ©r?  r4   r6  r5   r5   r6   Úget_factory_cobot_funded_count  s   €ý0ürF  c              	   Ã   sh   �t ƒ 4 I dH š}| t| ¡I dH }|rd|_t ¡ |_W d  ƒI dH  dS 1 I dH s-w   Y  dS )uW   ÙŠÙ�Ø¹Ù„Ù‘Ù… Ø§Ù„Ù‚Ù†Ø§Ø© Ø§Ù„Ù…Ù…ÙˆÙ„Ø© ÙƒÙ…ÙƒØªÙ…Ù„Ø© (ØªØªÙˆÙ‚Ù� Ø¹Ù† Ø§Ù„Ø¸Ù‡ÙˆØ±).NF)r7   rB  r#   r¿   r
   r‰   r=  rE  r5   r5   r6   Ú"mark_factory_cobot_funded_complete  s   €.ürG  c              	   Ã   s¦   �t ƒ 4 I dH š>}| ttƒ tj| ktj|ktj|k¡¡I dH }| ¡ r1	 W d  ƒI dH  dS | 	t| ||d�¡ W d  ƒI dH  dS 1 I dH sLw   Y  dS )u�   ÙŠØ¶Ø¹ Ø¹Ù„Ø§Ù…Ø© Ø£Ù† Ù‡Ø°Ø§ Ø§Ù„Ù…Ø³ØªØ®Ø¯Ù… Ø·Ù�Ù„Ø¨ Ù…Ù†Ù‡ Ø§Ù„Ø§Ø´ØªØ±Ø§Ùƒ Ù�ÙŠ Ø§Ù„Ù‚Ù†Ø§Ø© Ø§Ù„Ù…Ù…ÙˆÙ„Ø© (Ø§Ù„Ù…ØµÙ†Ø¹ Ø§Ù„Ø£Ø³Ø§Ø³ÙŠ).Nr@  )
r7   rK   r   r%   r~   rA  r‡   r  rM   rN   )r?  r‡   r  r4   rC  r5   r5   r6   Úmark_factory_funded_pending  s$   €ý
ÿ÷

ý.örH  c              	   Ã   s|   �t ƒ 4 I dH š)}| ttƒ tj| ktj|ktj|k¡¡I dH }| ¡ duW  d  ƒI dH  S 1 I dH s7w   Y  dS )uc   Ù‡Ù„ Ø·Ù�Ù„Ø¨ Ù…Ù† Ù‡Ø°Ø§ Ø§Ù„Ù…Ø³ØªØ®Ø¯Ù… Ø§Ù„Ø§Ø´ØªØ±Ø§Ùƒ Ø³Ø§Ø¨Ù‚Ø§Ù‹ Ù�ÙŠ Ù‡Ø°Ù‡ Ø§Ù„Ù‚Ù†Ø§Ø©ØŸN)	r7   rK   r   r%   r~   rA  r‡   r  rM   )r?  r‡   r  r4   rP   r5   r5   r6   Úis_factory_funded_pending0  s   €ý
ÿ
0ørI  c              	   Ã   s¤   �t ƒ 4 I dH š=}| ttƒ tj| ktj|ktj|k¡¡I dH }| ¡ }|r:| 	|¡I dH  W d  ƒI dH  dS W d  ƒI dH  dS 1 I dH sKw   Y  dS )u7   ÙŠØ²ÙŠÙ„ Ø¹Ù„Ø§Ù…Ø© Ø§Ù„Ø·Ù„Ø¨ Ø¨Ø¹Ø¯ Ø§Ù„Ø§Ø­ØªØ³Ø§Ø¨.N)
r7   rK   r   r%   r~   rA  r‡   r  rM   Údelete)r?  r‡   r  r4   rP   Úrowr5   r5   r6   Úclear_factory_funded_pending=  s   €ý
ÿö	.÷rL  c              	   Ã   s„   �t ƒ 4 I dH š-}| ttƒ tj| k¡¡I dH }| ¡  ¡ D ]
}| |¡I dH  qW d  ƒI dH  dS 1 I dH s;w   Y  dS )uX   ÙŠØ²ÙŠÙ„ ÙƒÙ„ Ø¹Ù„Ø§Ù…Ø§Øª Ø§Ù„Ø·Ù„Ø¨ Ù„Ù‚Ù†Ø§Ø© (Ø¹Ù†Ø¯ Ø§ÙƒØªÙ…Ø§Ù„Ù‡Ø§ ÙˆØ­Ø°Ù�Ù‡Ø§).N)	r7   rK   r   r%   r~   rA  r“   r”   rJ  )r?  r4   rP   rK  r5   r5   r6   Ú clear_all_factory_funded_pendingL  s   €ÿ
ÿÿ.úrM  )r   r/   )tÚsqlalchemy.ext.asyncior   r   r   Ú
sqlalchemyr   r   r   Ú
contextlibr   Útypingr	   r
   r   ÚsysÚosÚpathÚinsertÚdirnameÚabspathÚ__file__Úconfigr   r   r   r   r   r   Úinformation.modelsr   r   r   r   r   r   r   r   r   r   r   r   r   r   r    r!   r"   r#   r$   r%   r8   r0   r7   rE   r=   r>   r?   r@   ÚintÚstrr‹   r�   r�   Úlistr•   r—   r›   r£   r¤   r¥   r§   ÚdictrÆ   rÇ   rÉ   rË   rÐ   rÒ   r×   rÛ   rÜ   rÝ   rA   rB   rí   rï   rñ   ró   rô   rö   rø   rü   rÿ   Úboolr   r  r  r	  r  r  r  r  r$  r'  r*  r-  r.  r:  r>  rD  ÚtuplerF  rG  rH  rI  rL  rM  r5   r5   r5   r6   Ú<module>   s¢    & X
ûý	1

Q			 		