U
     &g(                     @   s  d dl 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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 d dlmZmZmZ d dlmZ d dlm Z  ej!dej"d	 e#e$Z%e ej&'d
dej&'ddej&'ddej&'dddZej()es e*e eej+ddddZ,eej+ddddZ-eej+ddddZ.eej+ddddZ/dddddZ0e$dkre0  dS )    N)UpdateInlineKeyboardButtonInlineKeyboardMarkup)ApplicationCommandHandlerMessageHandlerCallbackQueryHandlerContextTypesfilters)TOKENMAX_FILE_SIZETEMP_DOWNLOAD_DIRFORCE_CHANNEL_IDFORCE_CHANNEL_USERNAMESHOW_ADSSHOW_AD_MESSAGES)extract_terabox_urlcheck_url_patternsget_terabox_download_link)add_force_subscription_handler)	AdManagerz4%(asctime)s - %(name)s - %(levelname)s - %(message)s)formatlevelGPLINKS_API_KEY EZ4SHORT_API_KEYDROPLINK_API_KEYTNLINK_API_KEY)r   r   r   r   )updatecontextreturnc                    sF   | j }| jd|  dI dH  trBt }| j|I dH  dS )z-Mengirim pesan saat perintah /start diterima.zHalo u   ! 👋

Saya adalah bot untuk mengunduh file dari Terabox. Kirimkan link Terabox dan saya akan mengunduhkannya untuk Anda.

Gunakan /help untuk melihat bantuan penggunaan.N)effective_usermessage
reply_htmlmention_htmlr   
ad_managerget_ad_message
reply_text)r   r   user
ad_message r*   /var/www/html/telegram/bot.pystart_command0   s    
r,   c                    s   d}| j |I dH  dS )z4Mengirim pesan bantuan saat perintah /help diterima.u  🔍 *Cara Menggunakan Bot*

1. Kirim link Terabox yang ingin diunduh
2. Bot akan memproses link tersebut
3. Jika berhasil, bot akan mengirimkan file atau link download

🔗 *Domain Terabox yang Didukung*
- terabox.com
- teraboxapp.com
- 1024tera.com
- 4funbox.com
- dan domain terkait lainnya

⚠️ *Batasan*
- Ukuran maksimum file: 50 MB
- Beberapa file mungkin memerlukan akses premium

📋 *Perintah*
/start - Memulai bot
/help - Menampilkan bantuan ini
/status - Memeriksa status botN)r"   reply_markdown)r   r   Z	help_textr*   r*   r+   help_command@   s    r.   c              
      sR   dt d ddt dtrdnd dtjr4d	tjnd
 }| j|I dH  dS )z3Mengirim status bot saat perintah /status diterima.uH   ✅ *Status Bot*

Bot aktif dan berjalan dengan baik
Batas ukuran file: i   .1fz MB
Direktori unduhan: z
Fitur iklan: ZAktifZNonaktifz
Platform shortlink aktif: z, z	Tidak adaN)r   r   r   r%   Zenabled_platformsjoinr"   r-   )r   r   Zstatus_textr*   r*   r+   status_commandX   s    :r1   c              
      s  | j j}t|}|s*| j dI dH  dS | j d| dI dH  t|}|sf| j dI dH  dS |dd}|dd	}|d
}|dd}|r| j d| d| d| I dH  dS |drb|dtkrb| j d| d| d| I dH  tr^|r^t	|}	|	d rF| j d|	d  t
  I dH  n| j d| I dH  dS |rh| j d| d| dI dH  zFtjt|}
tj|dd}t|jdd}t|
d}d}t }|}|jddD ]|}|r|| |t|7 }t }|| dkr|| d  }|||  d! }| j d"|d#d$|d#d%I dH  |}qW 5 Q R X t|
d&*}| j j||d'| d| d(I dH  W 5 Q R X t|
 trt }| j |I dH  W n tk
rd } zttd)|  | j d*t| d+| I dH  trTt	|}	|	d rT| j d|	d  t
  I dH  W 5 d}~X Y nX n$| j d,| d| d-| I dH  dS ).z1Menangani URL Terabox yang dikirim oleh pengguna.u=   ❌ URL Terabox tidak valid atau tidak ditemukan dalam pesan.Nu   ✅ URL Terabox valid: u2   
⏳ Sedang memproses URL Terabox... Mohon tunggu.u1   ❌ Gagal mendapatkan link download dari Terabox.	file_nameZterabox_filesizeUnknowndirect_linkrequires_premiumFuI   ⚠️ File ini memerlukan akses premium untuk diunduh.

📄 Nama file: u   
📦 Ukuran: u   
🔗 Link: Z
size_bytesuC   ⚠️ File terlalu besar untuk diunduh langsung.

📄 Nama file: successu>   ✅ Link download berhasil dipersingkat!

🔗 Link download: Z	shortlinkuM   ⚠️ Gagal mempersingkat link. Gunakan link langsung:

🔗 Link download: u7   ✅ Link download berhasil ditemukan!

📄 Nama file: u+   
⏳ Sedang mengunduh file... Mohon tunggu.T)streamzcontent-lengthr   wbi    )
chunk_size   d   i   u   ⏳ Mengunduh: r/   z% (z KB/s)rbu+   ✅ File berhasil diunduh!
📄 Nama file: )documentfilenamecaptionzError downloading file: u   ❌ Gagal mengunduh file: u'   

Gunakan link download langsung:
🔗 uH   ⚠️ Tidak dapat mendapatkan link download langsung.

📄 Nama file: u   
🔗 Link asli: )r"   textr   r'   r   getr   r   r%   Zcreate_shortlinkZget_ad_footerospathr0   r   requestsintheadersopentimeZiter_contentwritelenreply_documentremover   r&   	Exceptionloggererrorstr)r   r   message_textZterabox_urlresultr2   	file_sizer5   r6   Zshortlink_result	file_pathresponse
total_sizefZ
downloadedZ
start_timeZlast_update_timechunkcurrent_timeZprogressZspeedr)   er*   r*   r+   handle_terabox_urle   s    












r\   )r    c                 C   s   | dkrt  t } t| }| tdt | tdt	 | tdt
 | ttjtj @ t | dkr||   dS )zMemulai bot.Nstarthelpstatus)r   buildertokenr   buildr   add_handlerr   r,   r.   r1   r   r
   TEXTCOMMANDr\   run_polling)applicationZforce_sub_filterr*   r*   r+   main   s    rh   __main__)N)1reloggingrC   rI   rE   jsontelegramr   r   r   telegram.extr   r   r   r   r	   r
   configr   r   r   r   r   r   r   Zteraboxr   r   r   Zforce_subscriber   r%   r   basicConfigINFO	getLogger__name__rO   environrB   rD   existsmakedirsDEFAULT_TYPEr,   r.   r1   r\   rh   r*   r*   r*   r+   <module>   s@    $

 
