o
    {g                     @   s   d dl Z d dlZd dlZd dlmZ d dl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 dd	lmZ G d
d dZG dd dZG dd dZG dd dZe Ze Ze ZdS )    N)Client)ChatType)	FloodWait)Message)	Telegraph)ENVLOGSdb   )readable_timec                   @   s   e Zd ZdddZdd ZdS )TelegraphAPIreturnNc                 C   s   d| _ d | _d S )N
TheHellbot)	shortname	telegraphself r   T/var/www/bot.gig.net.ua/public_html/telegram/P1/HellBot/Hellbot/functions/utility.py__init__      
zTelegraphAPI.__init__c                    sP   t tjI d H p| j}ztdd| _| j| W d S    t	d Y d S )Nz
telegra.ph)domainzFailed to setup Telegraph API)
r	   get_envr   telegraph_accountr   r   r   create_accountr   warning)r   r   r   r   r   setup   s   zTelegraphAPI.setupr   N)__name__
__module____qualname__r   r   r   r   r   r   r      s    
r   c                   @   sr   e Zd ZdddZdededefdd	Zd
edede	defddZ
d
ededefddZd
ededefddZdS )Gcastr   Nc                 C   s   d| _ d| _d S )Nzgcast_{0}.txtu  **🍀 𝖦𝖼𝖺𝗌𝗍 𝖢𝗈𝗆𝗉𝗅𝖾𝗍𝖾𝖽!** 

**𝖬𝖾𝗌𝗌𝖺𝗀𝖾:** [click here]({0})
**𝖢𝗈𝗎𝗇𝗍:** `{1} {2}`
**𝖥𝗈𝗋𝗐𝖺𝗋𝖽 𝗍𝖺𝗀:** `{3}`
**𝖳𝗂𝗆𝖾 𝗍𝖺𝗄𝖾𝗇:** `{4}`)	file_namecomplete_msgr   r   r   r   r       r   zGcast.__init__chat_idmsgtagc                    s.   |r| |I d H  d S ||I d H  d S N)forwardcopy)r   r$   r%   r&   r   r   r   	_send_msg$   s   ,zGcast._send_msgmessageclientmodec              
      s^  |j }|rdnd}t }|dkrs| |||I d H \}}	| |||I d H \}
}||
 }t|	ddd&}t|ddd}||  W d    n1 sOw   Y  W d    n1 s^w   Y  |  |  t	| |	}n$|dkr| |||I d H \}}n|d	kr| |||I d H \}}nd S t }| j
||||tt|| }||fS )
NEnabledRemovedallautf-8encodingrgroupsusers)linktimer7   r6   openwritereadcloseosremover#   formatr   int)r   r+   r,   r-   r&   r8   statusstartuCount	uFileNamegCount	gFileNamecountfile1file2fileNameendoutStrr   r   r   rC   '   s<    
zGcast.startc           
         @  | j tt }d}t|ddd|}|d | 2 zi3 d H W }|jjt	j
krz| |jj||I d H  |d7 }W q tyh } zt|jI d H  | |jj||I d H  |d7 }W Y d }~qd }~w ty }	 z||jj d|	 d W Y d }	~	qd }	~	ww q6 W d    n1 sw   Y  |  ||fS )	Nr   wr2   r3   zGroup ID | Error

r
    | 
)r"   r@   roundr9   r:   r;   get_dialogschattyper   
SUPERGROUPr*   idr   asynciosleepvalue	Exceptionr=   
r   r+   r,   r&   filenamerH   fdialogfwer   r   r   r6   F   0   
&zGcast.groupsc           
         rN   )	Nr   rO   r2   r3   zUser ID | Error

r
   rP   rQ   )r"   r@   rR   r9   r:   r;   rS   rT   rU   r   PRIVATEr*   rW   r   rX   rY   rZ   r[   r=   r\   r   r   r   r7   \   rb   zGcast.usersr   )r   r   r    r   rA   r   boolr*   r   strrC   r6   r7   r   r   r   r   r!      s    
r!   c                	   @   s   e Zd ZdddZdededefdd	Zdededeeeef fd
dZ	dedededefddZ
dededeeef fddZdd ZdededefddZdS )	AntiFloodr   Nc                 C   s   i | _ i | _i | _d S r'   )
FloodCountsettingsclient_chatsr   r   r   r   r   t   s   
zAntiFlood.__init__r,   rT   datac                 C   s>   | dd}| dd}| dd}||||di| j|< d S )Nr-   muter9   r   limit   r-   r9   rl   )getrh   )r   r,   rT   rj   r-   mtimerl   r   r   r   updateSettingsy   s   zAntiFlood.updateSettingsc                 C   s`   d}d}d}| j |d }|r)||d }|r)|dd}|dd}|dd}|t||fS )Nrk   r   rm   r-   r9   rl   )rh   ro   rA   )r   r,   rT   r-   rp   rl   cli_settingschat_settingsr   r   r   getSettings   s   zAntiFlood.getSettingsuserrH   c                 C   s   |||di| j |< d S )N)	last_userrH   )rg   )r   r,   rT   ru   rH   r   r   r   updateFlood   s   zAntiFlood.updateFloodc                 C   s   z| j | }W n ty   i | j |< | j | }Y nw z|| }W n ty2   i ||< || }Y nw |dd}|dd}||fS )Nrv   r   rH   )rg   KeyErrorro   )r   r,   rT   cli_dict	chat_dictrv   rH   r   r   r   getLastUser   s   
zAntiFlood.getLastUserc           	   	      s   t  I d H }|D ]B}|d }|d }|dd}|dd}|dd}|||d	}| ||| z
| j| | W q
 tyL   |g| j|< Y q
w d S )
Nr,   rT   r-   rk   r9   r   rl   rm   rn   )r	   get_all_floodsro   rq   ri   appendrx   )	r   floodsfloodr,   rT   r-   rp   rl   rh   r   r   r   updateFromDB   s    zAntiFlood.updateFromDBc                 C   4   z| j | }W n
 ty   Y dS w ||v rdS dS NFT)ri   rx   r   r,   rT   chatsr   r   r   check_client_chat      zAntiFlood.check_client_chatr   )r   r   r    r   rA   dictrq   tuplere   rt   rw   r{   r   rd   r   r   r   r   r   rf   s   s    
 rf   c                   @   sv   e Zd ZdddZdd Zdeded	efd
dZdeded	efddZdedede	fddZ
dededefddZdS )
Blacklistsr   Nc                 C   s
   i | _ d S r'   )
blacklistsr   r   r   r   r      s   
zBlacklists.__init__c                    sR   t  I d H }|D ]}|d }|dg }|D ]}|d }||i| j|< qq
d S )Nr,   r   	blacklist)r	   get_blacklist_clientsro   r   )r   datasrj   r,   r   rT   r   r   r   r   updateBlacklists   s   zBlacklists.updateBlacklistsr,   rT   textc                    sV   z| j | | | W n ty   ||gi| j |< Y nw t|||I d H  d S r'   )r   r}   rx   r	   add_blacklistr   r,   rT   r   r   r   r   addBlacklist   s   zBlacklists.addBlacklistc                    sH   z| j | | | W n
 ty   Y d S w t|||I d H  d S r'   )r   r?   rx   r	   rm_blacklistr   r   r   r   rmBlacklist   s   zBlacklists.rmBlacklistc                 C   s(   z| j | | W S  ty   g  Y S w r'   r   rx   )r   r,   rT   r   r   r   getBlacklists   s
   zBlacklists.getBlacklistsc                 C   r   r   r   r   r   r   r   r      r   zBlacklists.check_client_chatr   )r   r   r    r   r   rA   re   r   r   listr   rd   r   r   r   r   r   r      s    
	r   )rX   r>   r9   pyrogramr   pyrogram.enumsr   pyrogram.errorsr   pyrogram.typesr   r   r   Hellbot.corer   r   r	   	formatterr   r   r!   rf   r   FloodBListTGraphr   r   r   r   <module>   s"    TM/
