# SPECIAL THANKS TO [Rishikesh Sharma] @Rk_botowner FOR THESE AMAZING CODES # SPECIAL THANKS TO @DeletedFromEarth FOR MODIFYING THESE AMAZING CODES from datetime import timedelta import pytz import datetime, time from Script import script from info import ADMINS, PREMIUM_LOGS from utils import get_seconds from database.users_chats_db import db from pyrogram import Client, filters from pyrogram.errors.exceptions.bad_request_400 import MessageTooLong from pyrogram.types import InlineKeyboardButton, InlineKeyboardMarkup @Client.on_message(filters.command("remove_premium") & filters.user(ADMINS)) async def remove_premium(client, message): if len(message.command) == 2: user_id = int(message.command[1]) # Convert the user_id to integer user = await client.get_users(user_id) if await db.remove_premium_access(user_id): await message.reply_text("ᴜꜱᴇʀ ʀᴇᴍᴏᴠᴇᴅ ꜱᴜᴄᴄᴇꜱꜱꜰᴜʟʟʏ !") await client.send_message( chat_id=user_id, text=f"ʜᴇʏ {user.mention},\n\nʏᴏᴜʀ ᴘʀᴇᴍɪᴜᴍ ᴀᴄᴄᴇss ʜᴀs ʙᴇᴇɴ ʀᴇᴍᴏᴠᴇᴅ.\nᴛʜᴀɴᴋ ʏᴏᴜ ꜰᴏʀ ᴜsɪɴɢ ᴏᴜʀ sᴇʀᴠɪᴄᴇ 😊\nᴄʟɪᴄᴋ ᴏɴ /plan ᴛᴏ ᴄʜᴇᴄᴋ ᴏᴜᴛ ᴏᴛʜᴇʀ ᴘʟᴀɴꜱ." ) else: await message.reply_text("ᴜɴᴀʙʟᴇ ᴛᴏ ʀᴇᴍᴏᴠᴇ ᴜꜱᴇᴅ !\nᴀʀᴇ ʏᴏᴜ ꜱᴜʀᴇ, ɪᴛ ᴡᴀꜱ ᴀ ᴘʀᴇᴍɪᴜᴍ ᴜꜱᴇʀ ɪᴅ ?") else: await message.reply_text("ᴜꜱᴀɢᴇ : /remove_premium user_id") @Client.on_message(filters.command("myplan")) async def myplan(client, message): user = message.from_user.mention user_id = message.from_user.id data = await db.get_user(message.from_user.id) # Convert the user_id to integer if data and data.get("expiry_time"): #expiry_time = datetime.datetime.now() + datetime.timedelta(seconds=data) expiry = data.get("expiry_time") expiry_ist = expiry.astimezone(pytz.timezone("Asia/Kolkata")) expiry_str_in_ist = expiry.astimezone(pytz.timezone("Asia/Kolkata")).strftime("%d-%m-%Y\n⏱️ ᴇxᴘɪʀʏ ᴛɪᴍᴇ : %I:%M:%S %p") # Calculate time difference current_time = datetime.datetime.now(pytz.timezone("Asia/Kolkata")) time_left = expiry_ist - current_time # Calculate days, hours, and minutes days = time_left.days hours, remainder = divmod(time_left.seconds, 3600) minutes, seconds = divmod(remainder, 60) # Format time left as a string time_left_str = f"{days} ᴅᴀʏꜱ, {hours} ʜᴏᴜʀꜱ, {minutes} ᴍɪɴᴜᴛᴇꜱ" await message.reply_text(f"⚜️ ᴘʀᴇᴍɪᴜᴍ ᴜꜱᴇʀ ᴅᴀᴛᴀ :\n\n👤 ᴜꜱᴇʀ : {user}\n⚡ ᴜꜱᴇʀ ɪᴅ : {user_id}\n⏰ ᴛɪᴍᴇ ʟᴇꜰᴛ : {time_left_str}\n⌛️ ᴇxᴘɪʀʏ ᴅᴀᴛᴇ : {expiry_str_in_ist}") else: await message.reply_text(f"ʜᴇʏ {user},\n\nʏᴏᴜ ᴅᴏ ɴᴏᴛ ʜᴀᴠᴇ ᴀɴʏ ᴀᴄᴛɪᴠᴇ ᴘʀᴇᴍɪᴜᴍ ᴘʟᴀɴs, ɪꜰ ʏᴏᴜ ᴡᴀɴᴛ ᴛᴏ ᴛᴀᴋᴇ ᴘʀᴇᴍɪᴜᴍ ᴛʜᴇɴ ᴄʟɪᴄᴋ ᴏɴ ʙᴇʟᴏᴡ ʙᴜᴛᴛᴏɴ 👇", reply_markup=InlineKeyboardMarkup([[InlineKeyboardButton("💸 ᴄʜᴇᴄᴋᴏᴜᴛ ᴘʀᴇᴍɪᴜᴍ ᴘʟᴀɴꜱ 💸", callback_data='seeplans')]])) @Client.on_message(filters.command("get_premium") & filters.user(ADMINS)) async def get_premium(client, message): if len(message.command) == 2: user_id = int(message.command[1]) user = await client.get_users(user_id) data = await db.get_user(user_id) # Convert the user_id to integer if data and data.get("expiry_time"): #expiry_time = datetime.datetime.now() + datetime.timedelta(seconds=data) expiry = data.get("expiry_time") expiry_ist = expiry.astimezone(pytz.timezone("Asia/Kolkata")) expiry_str_in_ist = expiry.astimezone(pytz.timezone("Asia/Kolkata")).strftime("%d-%m-%Y\n⏱️ ᴇxᴘɪʀʏ ᴛɪᴍᴇ : %I:%M:%S %p") # Calculate time difference current_time = datetime.datetime.now(pytz.timezone("Asia/Kolkata")) time_left = expiry_ist - current_time # Calculate days, hours, and minutes days = time_left.days hours, remainder = divmod(time_left.seconds, 3600) minutes, seconds = divmod(remainder, 60) # Format time left as a string time_left_str = f"{days} days, {hours} hours, {minutes} minutes" await message.reply_text(f"⚜️ ᴘʀᴇᴍɪᴜᴍ ᴜꜱᴇʀ ᴅᴀᴛᴀ :\n\n👤 ᴜꜱᴇʀ : {user.mention}\n⚡ ᴜꜱᴇʀ ɪᴅ : {user_id}\n⏰ ᴛɪᴍᴇ ʟᴇꜰᴛ : {time_left_str}\n⌛️ ᴇxᴘɪʀʏ ᴅᴀᴛᴇ : {expiry_str_in_ist}") else: await message.reply_text("ɴᴏ ᴀɴʏ ᴘʀᴇᴍɪᴜᴍ ᴅᴀᴛᴀ ᴏꜰ ᴛʜᴇ ᴡᴀꜱ ꜰᴏᴜɴᴅ ɪɴ ᴅᴀᴛᴀʙᴀꜱᴇ !") else: await message.reply_text("ᴜꜱᴀɢᴇ : /get_premium user_id") @Client.on_message(filters.command("add_premium") & filters.user(ADMINS)) async def give_premium_cmd_handler(client, message): if len(message.command) == 4: time_zone = datetime.datetime.now(pytz.timezone("Asia/Kolkata")) current_time = time_zone.strftime("%d-%m-%Y\n⏱️ ᴊᴏɪɴɪɴɢ ᴛɪᴍᴇ : %I:%M:%S %p") user_id = int(message.command[1]) # Convert the user_id to integer user = await client.get_users(user_id) time = message.command[2]+" "+message.command[3] seconds = await get_seconds(time) if seconds > 0: expiry_time = datetime.datetime.now() + datetime.timedelta(seconds=seconds) user_data = {"id": user_id, "expiry_time": expiry_time} # Using "id" instead of "user_id" await db.update_user(user_data) # Use the update_user method to update or insert user data data = await db.get_user(user_id) expiry = data.get("expiry_time") expiry_str_in_ist = expiry.astimezone(pytz.timezone("Asia/Kolkata")).strftime("%d-%m-%Y\n⏱️ ᴇxᴘɪʀʏ ᴛɪᴍᴇ : %I:%M:%S %p") await message.reply_text(f"ᴘʀᴇᴍɪᴜᴍ ᴀᴅᴅᴇᴅ ꜱᴜᴄᴄᴇꜱꜱꜰᴜʟʟʏ ✅\n\n👤 ᴜꜱᴇʀ : {user.mention}\n⚡ ᴜꜱᴇʀ ɪᴅ : {user_id}\n⏰ ᴘʀᴇᴍɪᴜᴍ ᴀᴄᴄᴇꜱꜱ : {time}\n\n⏳ ᴊᴏɪɴɪɴɢ ᴅᴀᴛᴇ : {current_time}\n\n⌛️ ᴇxᴘɪʀʏ ᴅᴀᴛᴇ : {expiry_str_in_ist}", disable_web_page_preview=True) await client.send_message( chat_id=user_id, text=f"👋 ʜᴇʏ {user.mention},\nᴛʜᴀɴᴋ ʏᴏᴜ ꜰᴏʀ ᴘᴜʀᴄʜᴀꜱɪɴɢ ᴘʀᴇᴍɪᴜᴍ.\nᴇɴᴊᴏʏ !! ✨🎉\n\n⏰ ᴘʀᴇᴍɪᴜᴍ ᴀᴄᴄᴇꜱꜱ : {time}\n⏳ ᴊᴏɪɴɪɴɢ ᴅᴀᴛᴇ : {current_time}\n\n⌛️ ᴇxᴘɪʀʏ ᴅᴀᴛᴇ : {expiry_str_in_ist}", disable_web_page_preview=True ) await client.send_message(PREMIUM_LOGS, text=f"#Added_Premium\n\n👤 ᴜꜱᴇʀ : {user.mention}\n⚡ ᴜꜱᴇʀ ɪᴅ : {user_id}\n⏰ ᴘʀᴇᴍɪᴜᴍ ᴀᴄᴄᴇꜱꜱ : {time}\n\n⏳ ᴊᴏɪɴɪɴɢ ᴅᴀᴛᴇ : {current_time}\n\n⌛️ ᴇxᴘɪʀʏ ᴅᴀᴛᴇ : {expiry_str_in_ist}", disable_web_page_preview=True) else: await message.reply_text("Invalid time format. Please use '1 day for days', '1 hour for hours', or '1 min for minutes', or '1 month for months' or '1 year for year'") else: await message.reply_text("Usage : /add_premium user_id time (e.g., '1 day for days', '1 hour for hours', or '1 min for minutes', or '1 month for months' or '1 year for year')") @Client.on_message(filters.command("premium_users") & filters.user(ADMINS)) async def premium_user(client, message): aa = await message.reply_text("ꜰᴇᴛᴄʜɪɴɢ...") new = f"⚜️ ᴘʀᴇᴍɪᴜᴍ ᴜꜱᴇʀꜱ ʟɪꜱᴛ :\n\n" user_count = 1 users = await db.get_all_users() async for user in users: data = await db.get_user(user['id']) if data and data.get("expiry_time"): expiry = data.get("expiry_time") expiry_ist = expiry.astimezone(pytz.timezone("Asia/Kolkata")) expiry_str_in_ist = expiry.astimezone(pytz.timezone("Asia/Kolkata")).strftime("%d-%m-%Y\n⏱️ ᴇxᴘɪʀʏ ᴛɪᴍᴇ : %I:%M:%S %p") current_time = datetime.datetime.now(pytz.timezone("Asia/Kolkata")) time_left = expiry_ist - current_time days = time_left.days hours, remainder = divmod(time_left.seconds, 3600) minutes, seconds = divmod(remainder, 60) time_left_str = f"{days} days, {hours} hours, {minutes} minutes" new += f"{user_count}. {(await client.get_users(user['id'])).mention}\n👤 ᴜꜱᴇʀ ɪᴅ : {user['id']}\n⏳ ᴇxᴘɪʀʏ ᴅᴀᴛᴇ : {expiry_str_in_ist}\n⏰ ᴛɪᴍᴇ ʟᴇꜰᴛ : {time_left_str}\n" user_count += 1 else: pass try: await aa.edit_text(new) except MessageTooLong: with open('usersplan.txt', 'w+') as outfile: outfile.write(new) await message.reply_document('usersplan.txt', caption="Paid Users:") @Client.on_message(filters.command("plan")) async def plan(client, message): user_id = message.from_user.id users = message.from_user.mention btn = [[ InlineKeyboardButton("📲 ꜱᴇɴᴅ ᴘᴀʏᴍᴇɴᴛ ꜱᴄʀᴇᴇɴꜱʜᴏᴛ ʜᴇʀᴇ", user_id=int(767250672))],[InlineKeyboardButton("❌ ᴄʟᴏꜱᴇ ❌", callback_data="close_data") ]] await message.reply_photo(photo="https://telegra.ph/file/734170f40b8169830d821.jpg", caption=script.PREMIUM_TEXT.format(message.from_user.mention), reply_markup=InlineKeyboardMarkup(btn)) # SPECIAL THANKS TO [Rishikesh Sharma] @Rk_botowner FOR THESE AMAZING CODES # SPECIAL THANKS TO @DeletedFromEarth FOR MODIFYING THESE AMAZING CODES