# Thunder/utils/messages.py # ===================================================================================== # ====== ERROR MESSAGES ====== # ===================================================================================== # ------ General Errors ------ MSG_ERROR_GENERIC = "⚠️ **Oops!** Something went wrong. Please try again. If the issue persists, contact support." MSG_ERROR_USER_INFO = "❗ **User Not Found:** Couldn't find user. Please check the ID or Username." # ------ User Input & Validation Errors ------ MSG_INVALID_USER_ID = "❌ **Invalid User ID:** Please provide a numeric user ID." MSG_ERROR_START_BOT = "⚠️ You need to start the bot in private first to use this command.\n👉 [Click here]({invite_link}) to start a private chat." MSG_ERROR_REPLY_FILE = "⚠️ Please use the /link command in reply to a file." MSG_ERROR_NO_FILE = "⚠️ The message you're replying to does not contain any file." MSG_ERROR_INVALID_NUMBER = "⚠️ **Invalid number specified.**" MSG_ERROR_NUMBER_RANGE = "⚠️ **Please specify a number between 1 and {max_files}.**" MSG_ERROR_DM_FAILED = "⚠️ I couldn't send you a Direct Message. Please start the bot first." # ------ File & Media Errors ------ MSG_ERROR_PROCESSING_MEDIA = "⚠️ **Oops!** Something went wrong while processing your media. Please try again. If the issue persists, contact support." # ------ Admin Action Errors (Ban, Auth, etc.) ------ MSG_AUTHORIZE_FAILED = ( "❌ **Authorization Failed:** " "Could not authorize user `{user_id}`." ) MSG_DEAUTHORIZE_FAILED = ( "❌ **Deauthorization Failed:** " "User `{user_id}` was not authorized or an error occurred." ) MSG_TOKEN_FAILED = ( "⚠️ **Token Activation Failed!**\n\n" "> ❗ Reason: {reason}\n\n" "🔑 Please check your token or contact support." ) MSG_SHELL_ERROR = """**❌ Shell Command Error ❌**
{error}
""" # ------ System & Bot Errors ------ MSG_ERROR_NOT_ADMIN = "⚠️ **Admin Required:** I need admin privileges to work here." MSG_DC_INVALID_USAGE = "🤔 **Invalid Usage:** Please reply to a user's message or a media file to get DC info." MSG_DC_ANON_ERROR = "😥 **Cannot Get Your DC Info:** Unable to identify you. This command might not work for anonymous users." MSG_DC_FILE_ERROR = "⚙️ **Error Getting File DC Info:** Could not fetch details. File might be inaccessible." MSG_STATS_ERROR = "❌ **Stats Error:** Could not retrieve system statistics." MSG_STATUS_ERROR = "❌ **Status Error:** Could not retrieve system status." MSG_DB_ERROR = "❌ **Database Error:** Could not retrieve user count." MSG_CRITICAL_ERROR = ( "🚨 **Critical Media Processing Error** 🚨\n\n" "> ⚠️ Details:\n```\n{error}\n```\n\n" "Please investigate immediately! (ID: {error_id})" ) # ===================================================================================== # ====== ADMIN MESSAGES ====== # ===================================================================================== # ------ Ban/Unban ------ MSG_DECORATOR_BANNED = "You are currently banned and cannot use this bot.\nReason: {reason}\nBanned on: {ban_time}" MSG_BAN_USAGE = "⚠️ **Usage:** /ban [user_id] [reason]" MSG_CANNOT_BAN_OWNER = "❌ **Cannot ban an owner.**" MSG_ADMIN_USER_BANNED = "✅ **User {user_id} has been banned." MSG_BAN_REASON_SUFFIX = "\n📝 **Reason:** {reason}" MSG_ADMIN_NO_BAN_REASON = "No reason provided" MSG_USER_BANNED_NOTIFICATION = "🚫 **You have been banned from using this bot.**" MSG_UNBAN_USAGE = "⚠️ **Usage:** /unban " MSG_ADMIN_USER_UNBANNED = "✅ **User {user_id} has been unbanned." MSG_USER_UNBANNED_NOTIFICATION = "🎉 **You have been unbanned from using this bot.**" MSG_USER_NOT_IN_BAN_LIST = "ℹ️ **User {user_id} was not found in the ban list." MSG_CHANNEL_BANNED = "✅ **Channel {channel_id} has been banned.**" MSG_CHANNEL_BANNED_REASON_SUFFIX = "\n📝 **Reason:** {reason}" MSG_CHANNEL_UNBANNED = "✅ **Channel {channel_id} has been unbanned.**" MSG_CHANNEL_NOT_BANNED = "ℹ️ **Channel {channel_id} was not found in the ban list.**" # ------ Token & Authorization ------ MSG_AUTHORIZE_USAGE = "🔑 **Usage:** `/authorize `" MSG_DEAUTHORIZE_USAGE = "🔒 **Usage:** `/deauthorize `" MSG_AUTHORIZE_SUCCESS = ( "✅ **User Authorized!**\n\n" "> 👤 User ID: `{user_id}`\n" "> 🔑 Access: Permanent" ) MSG_DEAUTHORIZE_SUCCESS = ( "✅ **User Deauthorized!**\n\n" "> 👤 User ID: `{user_id}`\n" "> 🔒 Access: Revoked" ) MSG_TOKEN_ACTIVATED = "✅ Token successfully activated!\n\n⏳ This token is valid for {duration_hours} hours." MSG_TOKEN_INVALID = "🚫 **Expired or Invalid Token.** Please click the button below to activate your access token." MSG_NO_AUTH_USERS = "ℹ️ **No Authorized Users Found:** The list is currently empty." MSG_AUTH_USER_INFO = """{i}. 👤: {display_name} • User ID: `{user_id}` • Authorized by: `{authorized_by}` • Date: `{auth_time}`\n\n""" MSG_ADMIN_AUTH_LIST_HEADER = "🔐 **Authorized Users List**\n\n" # ------ Shell Commands ------ MSG_SHELL_USAGE = ( "Usage:\n" "/shell \n\n" "Example:\n" "/shell ls -l" ) MSG_SHELL_EXECUTING = "Executing Command... ⚙️\n
{command}
" MSG_SHELL_OUTPUT = """**Shell Command Output:**
{output}
""" MSG_SHELL_OUTPUT_STDOUT = "[stdout]:\n
{output}
" MSG_SHELL_OUTPUT_STDERR = "[stderr]:\n
{error}
" MSG_SHELL_NO_OUTPUT = "✅ Command Executed: No output." # ------ Admin View & Control ------ MSG_WORKLOAD_ITEM = " {bot_name}: {load}\n" MSG_ADMIN_RESTART_DONE = "✅ **Restart Successful!**" MSG_RESTARTING = "♻️ **Updating and Restarting Bot...**\n\n> ⏳ Please wait a moment." MSG_LOG_FILE_CAPTION = "📄 **System Logs**" MSG_LOG_FILE_EMPTY = "ℹ️ **Log File Empty:** No data found in the log file." MSG_LOG_FILE_MISSING = "⚠️ **Log File Missing:** Could not find the log file." # ===================================================================================== # ====== BUTTON TEXTS (User-facing) ====== # ===================================================================================== MSG_BUTTON_STREAM_NOW = "🖥️ Stream" MSG_BUTTON_DOWNLOAD = "🚀 Download" MSG_BUTTON_GET_HELP = "📖 Get Help" MSG_BUTTON_CANCEL_BROADCAST = "🛑 Cancel Broadcast" MSG_BUTTON_VIEW_PROFILE = "👤 View User Profile" MSG_BUTTON_ABOUT = "ℹ️ About Bot" MSG_BUTTON_JOIN_CHANNEL = "📢 Join {channel_title}" MSG_BUTTON_GITHUB = "🛠️ GitHub" MSG_BUTTON_START_CHAT = "📩 Start Chat" MSG_BUTTON_CLOSE = "✖ Close" # ===================================================================================== # ====== COMMAND RESPONSES (User-facing) ====== # ===================================================================================== MSG_WELCOME = ( "🌟 **Welcome, {user_name}!** 🌟\n\n" "I'm **Thunder File to Link Bot** ⚡\n" "I generate direct download and streaming links for your files.\n\n" "**How to use:**\n" "1. Send any file to me for private links.\n" "2. In groups, reply to a file with `/link`.\n\n" "» Use `/help` for all commands and detailed information.\n\n" "🚀 Send a file to begin!" ) MSG_HELP = ( "📘 **Thunder Bot - Help Guide** 📖\n\n" "How to get direct download & streaming links:\n\n" "**🚀 Private Chat (with me):**\n" "> 1. Send me **any file** (document, video, audio, photo, etc.).\n" "> 2. I'll instantly reply with your links! ⚡\n\n" "**👥 Using in Groups:**\n" "> • Reply to any file with `/link`.\n" "> • **Batch Mode:** Reply to the **first** file with `/link ` (e.g., `/link 5` for 5 files, up to {max_files}).\n" "> • Bot needs administrator rights in the group to function.\n" "> • Links are posted in the group & sent to you privately.\n\n" "**📢 Using in Channels:**\n" "> • Add me as an administrator with necessary permissions.\n" "> • I can be configured to auto-detect new media files.\n" "> • Inline stream/download buttons can be added to files automatically.\n" "> • Files from banned channels (owner configuration) are rejected.\n" "> • Auto-posting links if the bot has admin privileges with delete rights.\n\n" "**⚙️ Available Commands:**\n" "> `/start` 👋 - Welcome message & quick start information.\n" "> `/help` 📖 - Shows this help message.\n" "> `/link ` 🔗 - (Groups) Generate links. \n" "> `/about` ℹ️ - Learn more about me and my features.\n" "> `/ping` 📡 - Check my responsiveness and online status.\n" "> `/dc` 🌍 - View DC information (for yourself, another user, or a file).\n\n" "**💡 Pro Tips:**\n" "> • You can forward files from other chats directly to me.\n" "> • If you encounter a rate limit message, please wait the specified time. ⏳\n" "> • For `/link` in groups to work reliably (and for private link delivery), ensure you've started a private chat with me first.\n" "> • Processing batch files might take a bit longer. Please be patient. 🐌\n\n" "❓ Questions? Please ask in our support group!" ) MSG_ABOUT = ( "🌟 **About Thunder File to Link Bot** ℹ️\n\n" "I'm your go-to bot for **instant download & streaming!** ⚡\n\n" "**🚀 Key Features:**\n" "> **Instant Links:** Get your links within seconds.\n" "> **Online Streaming:** Watch videos or listen to audio directly (for supported formats).\n" "> **Universal File Support:** Handles documents, videos, audio, photos, and more.\n" "> **High-Speed Access:** Optimized for fast link generation and file access.\n" "> **Secure & Reliable:** Your files are handled with care during processing.\n" "> **User-Friendly Interface:** Designed for ease of use on any device.\n" "> **Efficient Processing:** Built for speed and reliability.\n" "> **Batch Mode:** Process multiple files at once in groups using `/link `.\n" "> **Versatile Usage:** Works in private chats, groups, and channels (with admin setup).\n\n" "💖 If you find me useful, please consider sharing me with your friends!" ) # ------ Ping ------ MSG_PING_START = "🛰️ **Pinging...** Please wait." MSG_PING_RESPONSE = ( "☁️ **PONG! Bot is Online!** ⚡\n\n" "> ⏱️ **Ping:** {time_taken_ms:.2f} ms\n" "> 🤖 **Bot Status:** `Active`" ) # ------ DC Info ------ MSG_DC_USER_INFO = ( "📍 **Information**\n" "> 👤 **User:** [{user_name}](tg://user?id={user_id})\n" "> 🆔 **User ID:** `{user_id}`\n" "> 🌍 **DC ID:** `{dc_id}`" ) MSG_DC_FILE_INFO = ( "🗂️ **File Information**\n" ">`{file_name}`\n" "💾 **File Size:** `{file_size}`\n" "📁 **File Type:** `{file_type}`\n" "🌍 **DC ID:** `{dc_id}`" ) MSG_DC_UNKNOWN = "Unknown" # ------ File Link Generation ------ MSG_DM_SINGLE_PREFIX = "📬 **From {chat_title}**\n" MSG_LINKS = ( "✨ **Your Links are Ready!** ✨\n\n" "> `{file_name}`\n\n" "📂 **File Size:** `{file_size}`\n\n" "🚀 **Download Link:**\n`{download_link}`\n\n" "🖥️ **Stream Link:**\n`{stream_link}`\n\n" "⌛️ **Note: Links remain active while the bot is running and the file is accessible.**" ) # ===================================================================================== # ====== USER NOTIFICATIONS ====== # ===================================================================================== MSG_NEW_USER = ( "✨ **New User Alert!** ✨\n" "> 👤 **Name:** [{first_name}](tg://user?id={user_id})\n" "> 🆔 **User ID:** `{user_id}`\n\n" ) MSG_COMMUNITY_CHANNEL = "📢 **{channel_title}:** 🔒 Join this channel to use the bot." # ===================================================================================== # ====== PROCESSING MESSAGES ====== # ===================================================================================== # ------ General File Processing ------ MSG_PROCESSING_REQUEST = "⏳ **Processing your request...**" MSG_PROCESSING_FILE = "⏳ **Processing your file...**" MSG_NEW_FILE_REQUEST = ( "> 👤 **Source:** [{source_info}](tg://user?id={id_})\n" "> 🆔 **ID:** `{id_}`\n\n" "🚀 **Download:** `{online_link}`\n\n" "🖥️ **Stream:** `{stream_link}`" ) # ------ Batch Processing ------ MSG_PROCESSING_BATCH = "♻️ **Processing Batch {batch_number}/{total_batches}** ({file_count} files)" MSG_PROCESSING_STATUS = "📊 **Processing Files:** {processed}/{total} complete, {failed} failed" MSG_BATCH_LINKS_READY = "🔗 Here are your {count} download links:" MSG_DM_BATCH_PREFIX = "📬 **Batch Links from {chat_title}**\n" MSG_PROCESSING_RESULT = "✅ **Process Complete:** {processed}/{total} files processed successfully, {failed} failed" # ===================================================================================== # ====== BROADCAST MESSAGES ====== # ===================================================================================== MSG_BROADCAST_START = "📣 **Starting Broadcast...**\n\n> ⏳ Please wait for completion." MSG_BROADCAST_COMPLETE = ( "📢 **Broadcast Completed Successfully!** 📢\n\n" "⏱️ **Duration:** `{elapsed_time}`\n" "👥 **Total Users:** `{total_users}`\n" "✅ **Successful Deliveries:** `{successes}`\n" "❌ **Failed Deliveries:** `{failures}`\n" "🗑️ **Accounts Removed (Blocked/Deactivated):** `{deleted_accounts}`\n" ) MSG_BROADCAST_CANCEL = "🛑 **Cancelling Broadcast:** `{broadcast_id}`\n\n> ⏳ Stopping operations..." MSG_INVALID_BROADCAST_CMD = "Please reply to the message you want to broadcast." MSG_BROADCAST_USAGE = ( "📣 **Broadcast Command Usage:**\n\n" "`/broadcast` - Broadcast to all users\n" "`/broadcast authorized` - Broadcast to authorized users only\n" "`/broadcast regular` - Broadcast to regular (non-authorized) users only\n\n" "**Note:** Reply to the message you want to broadcast." ) # ===================================================================================== # ====== PERMISSION MESSAGES ====== # ===================================================================================== MSG_ERROR_UNAUTHORIZED = "You are not authorized to view this information." MSG_ERROR_BROADCAST_RESTART = "Please use the /broadcast command to start a new broadcast." MSG_ERROR_BROADCAST_INSTRUCTION = "To start a new broadcast, use the /broadcast command and reply to the message you want to broadcast." MSG_ERROR_CALLBACK_UNSUPPORTED = "This button is not active or no longer supported." # ===================================================================================== # ====== RATE LIMITING MESSAGES ====== # ===================================================================================== MSG_RATE_LIMIT_QUEUE_PRIORITY = ( "⚡ You're in the **Priority Queue!**\n\n" "> ⏳ **Estimated Wait:** `~{wait_estimate} minute{s}`\n" "> 🚀 **Status:** In Queue" ) MSG_RATE_LIMIT_QUEUE_REGULAR = ( "⏳ **Rate Limit Reached!**\n\n" "> ⌛ **Estimated Wait:** `~{wait_estimate} minute{s1}`\n" "> 📊 **Limit:** `{max_requests} files per {time_window} minute{s2}`\n" "> 🔄 **Status:** In Queue" ) MSG_RATE_LIMIT_QUEUE_FULL = ( "⚠️ **Service Busy!** The processing queue is currently full.\n\n" "> 🕒 **Please try again in:** `~{wait_estimate} minute{s}`\n" "> 💡 **Tip:** Try again later when system load decreases" ) # ===================================================================================== # ====== FILE TYPE DESCRIPTIONS ====== # ===================================================================================== MSG_FILE_TYPE_DOCUMENT = "📄 Document" MSG_FILE_TYPE_PHOTO = "🖼️ Photo" MSG_FILE_TYPE_VIDEO = "🎬 Video" MSG_FILE_TYPE_AUDIO = "🎵 Audio" MSG_FILE_TYPE_VOICE = "🎤 Voice Message" MSG_FILE_TYPE_STICKER = "🎨 Sticker" MSG_FILE_TYPE_ANIMATION = "🎞️ Animation (GIF)" MSG_FILE_TYPE_VIDEO_NOTE = "📹 Video Note" MSG_FILE_TYPE_UNKNOWN = "❓ Unknown File Type" # ===================================================================================== # ====== SYSTEM & STATUS MESSAGES ====== # ===================================================================================== MSG_SYSTEM_STATUS = ( "✅ **System Status:** Operational\n\n" "> 🕒 **Uptime:** `{uptime}`\n" "> 🤖 **Bot Instances:** `{active_bots}`\n" "> 📊 **Total Workload:** `{total_workload}`\n\n" "📜 **Workload Distribution:**\n\n" "{workload_items}\n" "> ♻️ **Version:** `{version}`" ) # ------ Speedtest Messages ------ MSG_SPEEDTEST_INIT = "🚀 **Running Speed Test...**" MSG_SPEEDTEST_ERROR = "❌ **Speed Test Failed!**\n\n> Unable to complete the speed test. Please try again later." MSG_SPEEDTEST_RESULT = ( "⚡ **Speed Test Results**\n\n" "**SPEEDTEST INFO:**\n" "> **Download:** `{download_mbps} Mbps` (`{download_bps}/s`)\n" "> **Upload:** `{upload_mbps} Mbps` (`{upload_bps}/s`)\n" "> **Ping:** `{ping} ms`\n" "> **Timestamp:** `{timestamp}`\n" "> **Data Sent:** `{bytes_sent}`\n" "> **Data Received:** `{bytes_received}`\n\n" "**SERVER INFO:**\n" "> **Name:** `{server_name}`\n" "> **Country:** `{server_country}`\n" "> **Sponsor:** `{server_sponsor}`\n" "> **Latency:** `{server_latency} ms`\n" "> **Coordinates:** `{server_lat}, {server_lon}`\n\n" "**CLIENT DETAILS:**\n" "> **IP:** `{client_ip}`\n" "> **Coordinates:** `{client_lat}, {client_lon}`\n" "> **ISP:** `{client_isp}`\n" "> **ISP Rating:** `{client_isprating}`\n" "> **Country:** `{client_country}`" ) MSG_SYSTEM_STATS = ( "📊 **System Statistics**\n\n" "> System Uptime: {sys_uptime}\n" "> Bot Uptime: {bot_uptime}\n\n" "⚙️ **Performance:**\n" "> CPU: {cpu_percent}%\n" "> CPU Core: {cpu_cores}\n" "> Frequency: {cpu_freq} GHz\n\n" "💾 **RAM**\n" "> Total: {ram_total}\n" "> Used: {ram_used}\n" "> Free: {ram_free}\n\n" "💽 **Storage:**\n" "> Disk: `{disk_percent}%`\n" "> Total: `{total}`\n" "> Used: `{used}`\n" "> Free: `{free}`\n\n" "📶 **Network:**\n" "> 🔺 Upload: `{upload}`\n" "> 🔻 Download: `{download}`\n" ) MSG_DB_STATS = "📊 **Database Statistics**\n\n> 👥 **Total Users:** `{total_users}`"