Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
37 commits
Select commit Hold shift + click to select a range
1df64e9
Update config.py
assets72729 Jul 7, 2025
9ea782a
Update shrink.py
assets72729 Jul 8, 2025
81d6837
Update shrink.py
assets72729 Jul 8, 2025
c477dca
Update config.py
assets72729 Jul 15, 2025
ecee5b3
Update config.py
assets72729 Jul 15, 2025
569db32
Update plans.py
assets72729 Jul 15, 2025
50ee888
Update shrink.py
assets72729 Jul 15, 2025
81a35bd
Update start.py
assets72729 Jul 15, 2025
ae2090c
Update config.py
assets72729 Jul 15, 2025
9182432
Update start.py
assets72729 Jul 17, 2025
76b9281
Update start.py
assets72729 Jul 17, 2025
a10d27a
Update start.py
assets72729 Jul 17, 2025
1f3f326
Update start.py
assets72729 Jul 17, 2025
43316d7
Update start.py
assets72729 Jul 17, 2025
b4de77e
Update start.py
assets72729 Jul 17, 2025
208ef74
Update start.py
assets72729 Jul 17, 2025
eef0c6f
Update start.py
assets72729 Jul 17, 2025
3963262
Update start.py
assets72729 Jul 17, 2025
d62c509
Update start.py
assets72729 Jul 17, 2025
03aacc1
Update start.py
assets72729 Jul 17, 2025
f554559
Update shrink.py
assets72729 Jul 17, 2025
d10c5fd
Update shrink.py
assets72729 Jul 17, 2025
f2aafe3
Update start.py
assets72729 Jul 17, 2025
a62ed2b
Update config.py
assets72729 Jul 17, 2025
3a28822
Update shrink.py
assets72729 Jul 17, 2025
053f7ac
Update start.py
assets72729 Jul 19, 2025
6ac95ed
Update func.py
assets72729 Jul 19, 2025
6fdbe3a
Update get_func.py
assets72729 Jul 19, 2025
cb573cc
Update main.py
assets72729 Jul 19, 2025
d14f043
Update shrink.py
assets72729 Jul 19, 2025
a73ef1d
Update shrink.py
assets72729 Jul 21, 2025
a682952
Update main.py
assets72729 Jul 21, 2025
4f7b0e8
Update speedtest.py
assets72729 Jul 21, 2025
306f6a9
Update get_func.py
assets72729 Jul 21, 2025
2b82dd6
Update get_func.py
assets72729 Jul 21, 2025
556a1d6
Update shrink.py
assets72729 Jul 21, 2025
f0a897f
Update shrink.py
assets72729 Jul 26, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 8 additions & 8 deletions config.py
Original file line number Diff line number Diff line change
Expand Up @@ -13,17 +13,17 @@
# write here yt cookies
"""

API_ID = int(getenv("API_ID", ""))
API_HASH = getenv("API_HASH", "")
API_ID = int(getenv("API_ID", "24890303"))
API_HASH = getenv("API_HASH", "94cf78d1e6883ecb10f32e31fc23cfe0")
BOT_TOKEN = getenv("BOT_TOKEN", "")
OWNER_ID = list(map(int, getenv("OWNER_ID", "").split()))
OWNER_ID = list(map(int, getenv("OWNER_ID", "7289855833").split()))
MONGO_DB = getenv("MONGO_DB", "")
LOG_GROUP = getenv("LOG_GROUP", "")
CHANNEL_ID = int(getenv("CHANNEL_ID", ""))
FREEMIUM_LIMIT = int(getenv("FREEMIUM_LIMIT", "0"))
LOG_GROUP = getenv("LOG_GROUP", "-1002670671084")
CHANNEL_ID = int(getenv("CHANNEL_ID", "-1002705791364"))
FREEMIUM_LIMIT = int(getenv("FREEMIUM_LIMIT", "3"))
PREMIUM_LIMIT = int(getenv("PREMIUM_LIMIT", "500"))
WEBSITE_URL = getenv("WEBSITE_URL", "upshrink.com")
AD_API = getenv("AD_API", "52b4a2cf4687d81e7d3f8f2b7bc2943f618e78cb")
WEBSITE_URL = getenv("WEBSITE_URL", "shortxlinks.com")
AD_API = getenv("AD_API", "1ab8f9226671c3ea4da75be8c6f6ac012e0a9a09")
STRING = getenv("STRING", None)
YT_COOKIES = getenv("YT_COOKIES", YTUB_COOKIES)
DEFAULT_SESSION = getenv("DEFAUL_SESSION", None) # added old method of invite link joining
Expand Down
2 changes: 1 addition & 1 deletion devgagan/core/func.py
Original file line number Diff line number Diff line change
Expand Up @@ -250,7 +250,7 @@ async def progress_callback(current, total, progress_message):
f"│ **__Progress:__** {percent:.2f}%\n"
f"│ **__Uploaded:__** {current_mb:.2f} MB / {total_mb:.2f} MB\n"
f"╰──────────────────╯\n\n"
f"**__Powered by Team SPY__**"
f"**__Powered by SmartKit Bots__**"
)

last_update_time = current_time
Expand Down
12 changes: 6 additions & 6 deletions devgagan/core/get_func.py
Original file line number Diff line number Diff line change
Expand Up @@ -209,7 +209,7 @@ async def get_msg(userbot, sender, edit_id, msg_link, i, message):
if chat in saved_channel_ids:
await app.edit_message_text(
message.chat.id, edit_id,
"Sorry! This channel is protected by **__Team SPY__**."
"Sorry! This channel is protected by **__SmartKit__**."
)
return

Expand Down Expand Up @@ -589,7 +589,7 @@ def load_user_session(user_id):
async def set_rename_command(user_id, custom_rename_tag):
user_rename_preferences[str(user_id)] = custom_rename_tag

get_user_rename_preference = lambda user_id: user_rename_preferences.get(str(user_id), 'Team SPY')
get_user_rename_preference = lambda user_id: user_rename_preferences.get(str(user_id), 'SmartKit Bots')

async def set_caption_command(user_id, custom_caption):
user_caption_preferences[str(user_id)] = custom_caption
Expand Down Expand Up @@ -619,7 +619,7 @@ async def send_settings_message(chat_id, user_id):
[Button.inline("Set Thumbnail", b'setthumb'), Button.inline("Remove Thumbnail", b'remthumb')],
[Button.inline("PDF Wtmrk", b'pdfwt'), Button.inline("Video Wtmrk", b'watermark')],
[Button.inline("Upload Method", b'uploadmethod')], # Include the dynamic Fast DL button
[Button.url("Report Errors", "https://t.me/team_spy_pro")]
[Button.url("Report Errors", "https://t.me/smartkitbots")]
]

await gf.send_file(
Expand Down Expand Up @@ -899,7 +899,7 @@ async def handle_large_file(file, sender, edit, caption):
if freecheck == 1:
reply_markup = InlineKeyboardMarkup(
[
[InlineKeyboardButton("💎 Get Premium to Forward", url="https://t.me/kingofpatal")]
[InlineKeyboardButton("💎 Get Premium to Forward", url="https://t.me/NkkwkslBot")]
]
)
await app.copy_message(
Expand Down Expand Up @@ -1032,7 +1032,7 @@ def progress_callback(done, total, user_id):
f"│ **__Speed:__** {speed_mbps:.2f} Mbps\n"
f"│ **__ETA:__** {remaining_time_min:.2f} min\n"
f"╰──────────────────╯\n\n"
f"**__Powered by Team SPY__**"
f"**__Powered by SmartKit Bots__**"
)

# Update tracking variables for the user
Expand Down Expand Up @@ -1095,7 +1095,7 @@ def dl_progress_callback(done, total, user_id):
f"│ **__Speed:__** {speed_mbps:.2f} Mbps\n"
f"│ **__ETA:__** {remaining_time_min:.2f} min\n"
f"╰──────────────────╯\n\n"
f"**__Powered by Team SPY__**"
f"**__Powered by SmartKit Bots__**"
)

# Update tracking variables for the user
Expand Down
12 changes: 6 additions & 6 deletions devgagan/modules/main.py
Original file line number Diff line number Diff line change
Expand Up @@ -227,11 +227,11 @@ async def batch_link(_, message):
await message.reply(response_message)
return

join_button = InlineKeyboardButton("Join Channel", url="https://t.me/team_spy_pro")
join_button = InlineKeyboardButton("Join SmartKit Bots", url="https://t.me/SmartKitBots")
keyboard = InlineKeyboardMarkup([[join_button]])
pin_msg = await app.send_message(
user_id,
f"Batch process started ⚡\nProcessing: 0/{cl}\n\n**Powered by Team SPY**",
f"Batch process started ⚡\nProcessing: 0/{cl}\n\n**Powered by SmartKit Bots**",
reply_markup=keyboard
)
await pin_msg.pin(both_sides=True)
Expand All @@ -250,14 +250,14 @@ async def batch_link(_, message):
msg = await app.send_message(message.chat.id, f"Processing...")
await process_and_upload_link(userbot, user_id, msg.id, link, 0, message)
await pin_msg.edit_text(
f"Batch process started ⚡\nProcessing: {i - cs + 1}/{cl}\n\n**__Powered by Team SPY__**",
f"Batch process started ⚡\nProcessing: {i - cs + 1}/{cl}\n\n**__Powered by SmartKit Bots__**",
reply_markup=keyboard
)
normal_links_handled = True
if normal_links_handled:
await set_interval(user_id, interval_minutes=300)
await pin_msg.edit_text(
f"Batch completed successfully for {cl} messages 🎉\n\n**__Powered by Team SPY__**",
f"Batch completed successfully for {cl} messages 🎉\n\n**__Powered by SmartKit Bots__**",
reply_markup=keyboard
)
await app.send_message(message.chat.id, "Batch completed successfully! 🎉")
Expand All @@ -276,13 +276,13 @@ async def batch_link(_, message):
msg = await app.send_message(message.chat.id, f"Processing...")
await process_and_upload_link(userbot, user_id, msg.id, link, 0, message)
await pin_msg.edit_text(
f"Batch process started ⚡\nProcessing: {i - cs + 1}/{cl}\n\n**__Powered by Team SPY__**",
f"Batch process started ⚡\nProcessing: {i - cs + 1}/{cl}\n\n**__Powered by SmartKit Bots__**",
reply_markup=keyboard
)

await set_interval(user_id, interval_minutes=300)
await pin_msg.edit_text(
f"Batch completed successfully for {cl} messages 🎉\n\n**__Powered by Team SPY__**",
f"Batch completed successfully for {cl} messages 🎉\n\n**__Powered by SmartKit Bots__**",
reply_markup=keyboard
)
await app.send_message(message.chat.id, "Batch completed successfully! 🎉")
Expand Down
4 changes: 2 additions & 2 deletions devgagan/modules/plans.py
Original file line number Diff line number Diff line change
Expand Up @@ -114,7 +114,7 @@ async def give_premium_cmd_handler(client, message):
data = await plans_db.check_premium(user_id)
expiry = data.get("expire_date")
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⚡ ᴜꜱᴇʀ ɪᴅ : <code>{user_id}</code>\n⏰ ᴘʀᴇᴍɪᴜᴍ ᴀᴄᴄᴇꜱꜱ : <code>{time}</code>\n\n⏳ ᴊᴏɪɴɪɴɢ ᴅᴀᴛᴇ : {current_time}\n\n⌛️ ᴇxᴘɪʀʏ ᴅᴀᴛᴇ : {expiry_str_in_ist} \n\n__**Powered by Team SPY__**", disable_web_page_preview=True)
await message.reply_text(f"ᴘʀᴇᴍɪᴜᴍ ᴀᴅᴅᴇᴅ ꜱᴜᴄᴄᴇꜱꜱꜰᴜʟʟʏ ✅\n\n👤 ᴜꜱᴇʀ : {user.mention}\n⚡ ᴜꜱᴇʀ ɪᴅ : <code>{user_id}</code>\n⏰ ᴘʀᴇᴍɪᴜᴍ ᴀᴄᴄᴇꜱꜱ : <code>{time}</code>\n\n⏳ ᴊᴏɪɴɪɴɢ ᴅᴀᴛᴇ : {current_time}\n\n⌛️ ᴇxᴘɪʀʏ ᴅᴀᴛᴇ : {expiry_str_in_ist} \n\n__**Powered by Joseph__**", disable_web_page_preview=True)
await client.send_message(
chat_id=user_id,
text=f"👋 ʜᴇʏ {user.mention},\nᴛʜᴀɴᴋ ʏᴏᴜ ꜰᴏʀ ᴘᴜʀᴄʜᴀꜱɪɴɢ ᴘʀᴇᴍɪᴜᴍ.\nᴇɴᴊᴏʏ !! ✨🎉\n\n⏰ ᴘʀᴇᴍɪᴜᴍ ᴀᴄᴄᴇꜱꜱ : <code>{time}</code>\n⏳ ᴊᴏɪɴɪɴɢ ᴅᴀᴛᴇ : {current_time}\n\n⌛️ ᴇxᴘɪʀʏ ᴅᴀᴛᴇ : {expiry_str_in_ist}", disable_web_page_preview=True
Expand Down Expand Up @@ -159,7 +159,7 @@ async def transfer_premium(client, message):
f"👤 **From:** {sender_user.mention}\n"
f"👤 **To:** {new_user.mention}\n"
f"⏳ **Expiry Date:** {expiry_str_in_ist}\n\n"
f"__Powered by Team SPY__ 🚀"
f"__Powered by Joseph__ 🚀"
)

# Notification to the new user
Expand Down
12 changes: 6 additions & 6 deletions devgagan/modules/shrink.py
Original file line number Diff line number Diff line change
Expand Up @@ -73,9 +73,9 @@ async def token_handler(client, message):
msg = await app.get_messages(chat_id, 796)
user_id = message.chat.id
if len(message.command) <= 1:
image_url = "https://i.postimg.cc/v8q8kGyz/startimg-1.jpg"
join_button = InlineKeyboardButton("Join Channel", url="https://t.me/team_spy_pro")
premium = InlineKeyboardButton("Get Premium", url="https://t.me/kingofpatal")
image_url = "https://graph.org/file/94bf9089d43b817bb76d2-c0ccb0de00b10adf9e.png"
join_button = InlineKeyboardButton("Updates Channel", url="https://t.me/smartkitbots")
premium = InlineKeyboardButton("How To Use Me", url="https://t.me/smartkitbots/28")
keyboard = InlineKeyboardMarkup([
[join_button],
[premium]
Expand All @@ -85,8 +85,8 @@ async def token_handler(client, message):
msg.photo.file_id,
caption=(
"Hi 👋 Welcome, Wanna intro...?\n\n"
"✳️ I can save posts from channels or groups where forwarding is off. I can download videos/audio from YT, INSTA, ... social platforms\n"
"✳️ Simply send the post link of a public channel. For private channels, do /login. Send /help to know more."
"👉 What I Can Do:\n✨ Save posts from channels and groups where forwarding is off.\n✨ Easily fetch messages from public channels by sending their post links.\n✨ For private channels, use /login to access content securely.\n✨ Need assistance? Just type /help and I'll guide you!\n"
"\n👉 Premium Features:\n🔹 Use /token to get 3 hours of free premium access.\n🔹 Want unlimited access? Use /Plan to unlock premium features.\n🔹 Premium users enjoy faster processing, unlimited saves, and priority support.\n\n📌 Getting Started:\n✅ Send a post link from a public channel to save it instantly.\n✅ If the channel is private, use /login before sending the link.\n✅ For additional commands, check /help anytime! \n\nHappy saving!🚀"
),
reply_markup=keyboard
)
Expand Down Expand Up @@ -144,4 +144,4 @@ async def smart_handler(client, message):
[[InlineKeyboardButton("Verify the token now...", url=shortened_url)]]
)
await message.reply("Click the button below to verify your free access token: \n\n> What will you get ? \n1. No time bound upto 3 hours \n2. Batch command limit will be FreeLimit + 20 \n3. All functions unlocked", reply_markup=button)


2 changes: 1 addition & 1 deletion devgagan/modules/speedtest.py
Original file line number Diff line number Diff line change
Expand Up @@ -85,7 +85,7 @@ async def speedtest(event):
├ <b>Country:</b> <code>{result['client']['country']}</code>
├ <b>ISP:</b> <code>{result['client']['isp']}</code>
├ <b>ISP Rating:</b> <code>{result['client']['isprating']}</code>
╰ <b>Powered by Team SPY</b>
╰ <b>Powered by SmartKit Bots</b>
'''
try:
await event.reply(string_speed,file=path,parse_mode='html')
Expand Down
34 changes: 13 additions & 21 deletions devgagan/modules/start.py
Original file line number Diff line number Diff line change
Expand Up @@ -109,7 +109,7 @@ async def set(_, message):
"> 4. REPLACEWORDS : Can be used for words in deleted set via REMOVE WORDS\n"
"> 5. RESET : To set the things back to default\n\n"
"> You can set CUSTOM THUMBNAIL, PDF WATERMARK, VIDEO WATERMARK, SESSION-based login, etc. from settings\n\n"
"**__Powered by Team SPY__**"
"**__Powered by Joseph__**"
)
]

Expand Down Expand Up @@ -176,14 +176,14 @@ async def terms(client, message):
terms_text = (
"> 📜 **Terms and Conditions** 📜\n\n"
"✨ We are not responsible for user deeds, and we do not promote copyrighted content. If any user engages in such activities, it is solely their responsibility.\n"
"✨ Upon purchase, we do not guarantee the uptime, downtime, or the validity of the plan. __Authorization and banning of users are at our discretion; we reserve the right to ban or authorize users at any time.__\n"
"✨ Upon purchase, we do guarantee the uptime, downtime, or the validity of the plan. __Authorization and banning of users are at our discretion; we reserve the right to ban or authorize users at any time.__\n"
"✨ Payment to us **__does not guarantee__** authorization for the /batch command. All decisions regarding authorization are made at our discretion and mood.\n"
)

buttons = InlineKeyboardMarkup(
[
[InlineKeyboardButton("📋 See Plans", callback_data="see_plan")],
[InlineKeyboardButton("💬 Contact Now", url="https://t.me/kingofpatal")],
[InlineKeyboardButton("💬 Contact Now", url="https://t.me/Nkkwksl")],
]
)
await message.reply_text(terms_text, reply_markup=buttons)
Expand All @@ -192,17 +192,13 @@ async def terms(client, message):
@app.on_message(filters.command("plan") & filters.private)
async def plan(client, message):
plan_text = (
"> 💰 **Premium Price**:\n\n Starting from $2 or 200 INR accepted via **__Amazon Gift Card__** (terms and conditions apply).\n"
"📥 **Download Limit**: Users can download up to 100,000 files in a single batch command.\n"
"🛑 **Batch**: You will get two modes /bulk and /batch.\n"
" - Users are advised to wait for the process to automatically cancel before proceeding with any downloads or uploads.\n\n"
"📜 **Terms and Conditions**: For further details and complete terms and conditions, please send /terms.\n"
"> 💰 **Upgrade To Premium**:\n\n🚀 Premium Features\n✅ No verification every 2 hours ⏳\n✅ Upload in bulk (up to 2000 files)\n✅ Instantly skip the 300-second wait ⏱️\n✅ Extract unlimited videos & files from anywhere🎥\n\n🔹Pricing:\n▸ ₹39 ┇ 1 Week\n▸ ₹50 ┇ 14 Days\n▸ ₹70 ┇20 Days\n▸ ₹80 ┇1 Month\n▸ ₹169┇ 3 Months\n▸ ₹ 319┇ 6 Months\n▸ ₹599 ┇ 1 Year\n▸ ₹1.5ᴋ ┇ Vild Till Exist\n\n🌐For International Members\n▸ $2 ┇1 Month\n▸ $3 ┇ 3 Months\n▸ $6 ┇ 6 Months\n▸ $9 ┇ 1 Year\n▸ $18┇ Vild Till Exist\n\n📌 Payment Methods:\n- UPI ID: dramawave7-1@okaxis\n- QR Code: Pay via UPI\n- Crypto (Binance) & Paypal\n\n📤 After Payment:\n1️⃣ Send a payment screenshot below👇\n2️⃣ Contact Admin to activate your Premium\n\n💌 Thank you for supporting this project!❤️\n"
)

buttons = InlineKeyboardMarkup(
[
[InlineKeyboardButton("📜 See Terms", callback_data="see_terms")],
[InlineKeyboardButton("💬 Contact Now", url="https://t.me/kingofpatal")],
[InlineKeyboardButton("📋 Pay Here", url="https://assets72729.github.io/PayWeb/")],
[InlineKeyboardButton("💬 Contact Admin", url="https://t.me/Nkkwksl")],
]
)
await message.reply_text(plan_text, reply_markup=buttons)
Expand All @@ -211,17 +207,13 @@ async def plan(client, message):
@app.on_callback_query(filters.regex("see_plan"))
async def see_plan(client, callback_query):
plan_text = (
"> 💰**Premium Price**\n\n Starting from $2 or 200 INR accepted via **__Amazon Gift Card__** (terms and conditions apply).\n"
"📥 **Download Limit**: Users can download up to 100,000 files in a single batch command.\n"
"🛑 **Batch**: You will get two modes /bulk and /batch.\n"
" - Users are advised to wait for the process to automatically cancel before proceeding with any downloads or uploads.\n\n"
"📜 **Terms and Conditions**: For further details and complete terms and conditions, please send /terms or click See Terms👇\n"
"> 💰**Upgrade To Premium**\n\n🚀 Premium Features\n✅ No verification every 2 hours ⏳\n✅ Upload in bulk (up to 2000 files)\n✅ Instantly skip the 300-second wait ⏱️\n✅ Extract unlimited videos & files from anywhere🎥\n\n🔹Pricing:\n▸ ₹39┇ 1 Week\n▸ ₹50 ┇ 14 Days\n▸ ₹70┇ 20 Days\n▸ ₹80┇ 1 Month\n▸ ₹169 ┇ 3 Months\n▸ ₹ 319┇ 6 Months\n▸ ₹599┇ 1 year\n▸ ₹1.5ᴋ┇ Vild Till Exist\n\n🌐For International Members\n▸ $2 ┇1 Month\n▸ $3 ┇ 3 Months\n▸ $6 ┇ 6 Months\n▸ $9 ┇ 1 Year\n▸ $18┇ Vild Till Exist\n\n📌 Payment Methods:\n- UPI ID: dramawave7-1@okaxis\n- QR Code: Pay via UPI\n- Crypto (Binance) & Paypal\n\n📤 After Payment:\n1️⃣ Send a payment screenshot below👇\n2️⃣ Contact Admin to activate your premium\n\n💌 Thank you for supporting this project!❤️\n"
)

buttons = InlineKeyboardMarkup(
[
[InlineKeyboardButton("📜 See Terms", callback_data="see_terms")],
[InlineKeyboardButton("💬 Contact Now", url="https://t.me/kingofpatal")],
[InlineKeyboardButton("📋 Pay Here", url="https://assets72729.github.io/PayWeb/")],
[InlineKeyboardButton("💬 Contact Admin", url="https://t.me/Nkkwksl")],
]
)
await callback_query.message.edit_text(plan_text, reply_markup=buttons)
Expand All @@ -232,14 +224,14 @@ async def see_terms(client, callback_query):
terms_text = (
"> 📜 **Terms and Conditions** 📜\n\n"
"✨ We are not responsible for user deeds, and we do not promote copyrighted content. If any user engages in such activities, it is solely their responsibility.\n"
"✨ Upon purchase, we do not guarantee the uptime, downtime, or the validity of the plan. __Authorization and banning of users are at our discretion; we reserve the right to ban or authorize users at any time.__\n"
"✨ Payment to us **__does not guarantee__** authorization for the /batch command. All decisions regarding authorization are made at our discretion and mood.\n"
"✨ Upon purchase, we do guarantee the uptime, downtime, or the validity of the plan. __Authorization and banning of users are at our discretion; we reserve the right to ban or authorize users at any time.__\n"
"✨ Payment to us **__does guarantee__** authorization for the /batch command. All decisions regarding authorization are made at our discretion and mood.\n"
)

buttons = InlineKeyboardMarkup(
[
[InlineKeyboardButton("📋 See Plans", callback_data="see_plan")],
[InlineKeyboardButton("💬 Contact Now", url="https://t.me/kingofpatal")],
[InlineKeyboardButton("📋 See Terms", callback_data="see_terms")],
[InlineKeyboardButton("💬 Contact Us", url="https://t.me/NkkwkslBot")],
]
)
await callback_query.message.edit_text(terms_text, reply_markup=buttons)
Expand Down