-
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
20aed00
commit 3e14821
Showing
4 changed files
with
545 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,90 @@ | ||
# (c) @adarsh-goel | ||
import os | ||
import time | ||
import string | ||
import random | ||
import asyncio | ||
import aiofiles | ||
import datetime | ||
from Adarsh.utils.broadcast_helper import send_msg | ||
from Adarsh.utils.database import Database | ||
from Adarsh.bot import StreamBot | ||
from Adarsh.vars import Var | ||
from pyrogram import filters, Client | ||
from pyrogram.types import Message | ||
db = Database(Var.DATABASE_URL, Var.name) | ||
broadcast_ids = {} | ||
|
||
@StreamBot.on_message(filters.command("users") & filters.private) | ||
async def sts(c: Client, m: Message): | ||
user_id=m.from_user.id | ||
if user_id in Var.OWNER_ID: | ||
total_users = await db.total_users_count() | ||
await m.reply_text(text=f"Total Users in DB: {total_users}", quote=True) | ||
|
||
|
||
@StreamBot.on_message(filters.command("broadcast") & filters.private & filters.user(list(Var.OWNER_ID))) | ||
async def broadcast_(c, m): | ||
user_id=m.from_user.id | ||
out = await m.reply_text( | ||
text=f"Broadcast initiated! You will be notified with log file when all the users are notified." | ||
) | ||
all_users = await db.get_all_users() | ||
broadcast_msg = m.reply_to_message | ||
while True: | ||
broadcast_id = ''.join([random.choice(string.ascii_letters) for i in range(3)]) | ||
if not broadcast_ids.get(broadcast_id): | ||
break | ||
start_time = time.time() | ||
total_users = await db.total_users_count() | ||
done = 0 | ||
failed = 0 | ||
success = 0 | ||
broadcast_ids[broadcast_id] = dict( | ||
total=total_users, | ||
current=done, | ||
failed=failed, | ||
success=success | ||
) | ||
async with aiofiles.open('broadcast.txt', 'w') as broadcast_log_file: | ||
async for user in all_users: | ||
sts, msg = await send_msg( | ||
user_id=int(user['id']), | ||
message=broadcast_msg | ||
) | ||
if msg is not None: | ||
await broadcast_log_file.write(msg) | ||
if sts == 200: | ||
success += 1 | ||
else: | ||
failed += 1 | ||
if sts == 400: | ||
await db.delete_user(user['id']) | ||
done += 1 | ||
if broadcast_ids.get(broadcast_id) is None: | ||
break | ||
else: | ||
broadcast_ids[broadcast_id].update( | ||
dict( | ||
current=done, | ||
failed=failed, | ||
success=success | ||
) | ||
) | ||
if broadcast_ids.get(broadcast_id): | ||
broadcast_ids.pop(broadcast_id) | ||
completed_in = datetime.timedelta(seconds=int(time.time() - start_time)) | ||
await asyncio.sleep(3) | ||
await out.delete() | ||
if failed == 0: | ||
await m.reply_text( | ||
text=f"broadcast completed in `{completed_in}`\n\nTotal users {total_users}.\nTotal done {done}, {success} success and {failed} failed.", | ||
quote=True | ||
) | ||
else: | ||
await m.reply_document( | ||
document='broadcast.txt', | ||
caption=f"broadcast completed in `{completed_in}`\n\nTotal users {total_users}.\nTotal done {done}, {success} success and {failed} failed.", | ||
quote=True | ||
) | ||
os.remove('broadcast.txt') |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,32 @@ | ||
from Adarsh.bot import StreamBot | ||
from pyrogram.types import InlineKeyboardMarkup, InlineKeyboardButton | ||
from pyrogram import filters | ||
import time | ||
import shutil, psutil | ||
from utils_bot import * | ||
from Adarsh import StartTime | ||
|
||
|
||
|
||
@StreamBot.on_message(filters.command('stats') & filters.private) | ||
async def stats(bot, update): | ||
currentTime = readable_time((time.time() - StartTime)) | ||
total, used, free = shutil.disk_usage('.') | ||
total = get_readable_file_size(total) | ||
used = get_readable_file_size(used) | ||
free = get_readable_file_size(free) | ||
sent = get_readable_file_size(psutil.net_io_counters().bytes_sent) | ||
recv = get_readable_file_size(psutil.net_io_counters().bytes_recv) | ||
cpuUsage = psutil.cpu_percent(interval=0.5) | ||
memory = psutil.virtual_memory().percent | ||
disk = psutil.disk_usage('/').percent | ||
botstats = f'<b>Bot Uptime:</b> {currentTime}\n' \ | ||
f'<b>Total disk space:</b> {total}\n' \ | ||
f'<b>Used:</b> {used} ' \ | ||
f'<b>Free:</b> {free}\n\n' \ | ||
f'📊Data Usage📊\n<b>Upload:</b> {sent}\n' \ | ||
f'<b>Down:</b> {recv}\n\n' \ | ||
f'<b>CPU:</b> {cpuUsage}% ' \ | ||
f'<b>RAM:</b> {memory}% ' \ | ||
f'<b>Disk:</b> {disk}%' | ||
await update.reply_text(botstats) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,251 @@ | ||
#Aadhi000 | ||
from Adarsh.bot import StreamBot | ||
from Adarsh.vars import Var | ||
import logging | ||
logger = logging.getLogger(__name__) | ||
from Adarsh.bot.plugins.stream import MY_PASS | ||
from Adarsh.utils.human_readable import humanbytes | ||
from Adarsh.utils.database import Database | ||
from pyrogram import filters | ||
from pyrogram.types import InlineKeyboardMarkup, InlineKeyboardButton | ||
from pyrogram.errors import UserNotParticipant | ||
from Adarsh.utils.file_properties import get_name, get_hash, get_media_file_size | ||
db = Database(Var.DATABASE_URL, Var.name) | ||
from pyrogram.types import ReplyKeyboardMarkup | ||
|
||
|
||
@StreamBot.on_message(filters.command('start') & filters.private) | ||
async def start(b, m): | ||
if not await db.is_user_exist(m.from_user.id): | ||
await db.add_user(m.from_user.id) | ||
await b.send_message( | ||
Var.BIN_CHANNEL, | ||
f"#NEW_USER: \n\nNew User [{m.from_user.first_name}](tg://user?id={m.from_user.id}) Started !!" | ||
) | ||
usr_cmd = m.text.split("_")[-1] | ||
if usr_cmd == "/start": | ||
if Var.UPDATES_CHANNEL is not None: | ||
try: | ||
user = await b.get_chat_member(Var.UPDATES_CHANNEL, m.chat.id) | ||
if user.status == "banned": | ||
await b.send_message( | ||
chat_id=m.chat.id, | ||
text="**ʏᴏᴜ ᴀʀᴇ ʙᴀɴɴᴇᴅ../**", | ||
disable_web_page_preview=True | ||
) | ||
return | ||
except UserNotParticipant: | ||
await b.send_message( | ||
chat_id=m.chat.id, | ||
text="**ᴊᴏɪɴ ᴍʏ ᴜᴘᴅᴀᴛᴇs ᴄʜᴀɴɴᴇʟ ᴛᴏ ᴜsᴇ ᴍᴇ..**\n\n**ᴅᴜᴇ ᴛᴏ ᴏᴠᴇʀʟᴏᴀᴅ ᴏɴʟʏ ᴄʜᴀɴɴᴇʟ sᴜʙsᴄʀɪʙᴇʀs ᴄᴀɴ ᴜsᴇ ᴍᴇ..!**", | ||
reply_markup=InlineKeyboardMarkup( | ||
[ | ||
[ | ||
InlineKeyboardButton("𝙹𝙾𝙸𝙽 𝚄𝙿𝙳𝙰𝚃𝙴𝚉 𝙲𝙷𝙰𝙽𝙽𝙴𝙻", url=f"https://t.me/{Var.UPDATES_CHANNEL}") | ||
] | ||
] | ||
) | ||
|
||
) | ||
return | ||
except Exception: | ||
await b.send_message( | ||
chat_id=m.chat.id, | ||
text="**𝙰𝙳𝙳 𝙵𝙾𝚁𝙲𝙴 𝚂𝚄𝙱 𝚃𝙾 𝙰𝙽𝚈 𝙲𝙷𝙰𝙽𝙽𝙴𝙻**", | ||
|
||
disable_web_page_preview=True) | ||
return | ||
await m.reply_photo( | ||
photo="https://te.legra.ph/file/8dfe7256883cbc0190478.jpg", | ||
caption="**ʜᴇʟʟᴏ...⚡\n\nɪᴀᴍ ᴀ sɪᴍᴘʟᴇ ᴛᴇʟᴇɢʀᴀᴍ ғɪʟᴇ/ᴠɪᴅᴇᴏ ᴛᴏ ᴘᴇʀᴍᴀɴᴇɴᴛ ʟɪɴᴋ ᴀɴᴅ sᴛʀᴇᴀᴍ ʟɪɴᴋ ɢᴇɴᴇʀᴀᴛᴏʀ ʙᴏᴛ.**\n\n**ᴜsᴇ /help ғᴏʀ ᴍᴏʀᴇ ᴅᴇᴛsɪʟs\n\nsᴇɴᴅ ᴍᴇ ᴀɴʏ ᴠɪᴅᴇᴏ / ғɪʟᴇ ᴛᴏ sᴇᴇ ᴍʏ ᴘᴏᴡᴇʀᴢ...**", | ||
reply_markup=InlineKeyboardMarkup( | ||
[ | ||
[InlineKeyboardButton("⚡ 𝚄𝙿𝙳𝙰𝚃𝙴𝚂 ⚡", url="https://t.me/kwicbotupdates"), InlineKeyboardButton("⚡ 𝚂𝚄𝙿𝙿𝙾𝚁𝚃 ⚡", url="https://t.me/kwicbotupdates")], | ||
[InlineKeyboardButton("📺 24/7 𝙼𝙾𝚅𝙸𝙴𝚂 📺", url="https://t.me/MoviesNowV2"), InlineKeyboardButton("💎 𝙾𝚃𝚃 𝙼𝙾𝚅𝙸𝙴𝚂 💎", url="https://t.me/MoviesNowOTT2")], | ||
[InlineKeyboardButton("💌 𝙼𝙾𝚅𝙸𝙴 𝙱𝙾𝚃 💌", url="https://t.me/KWICVER2bot")] | ||
] | ||
), | ||
|
||
) | ||
else: | ||
if Var.UPDATES_CHANNEL is not None: | ||
try: | ||
user = await b.get_chat_member(Var.UPDATES_CHANNEL, m.chat.id) | ||
if user.status == "banned": | ||
await b.send_message( | ||
chat_id=m.chat.id, | ||
text="**ʏᴏᴜ ᴀʀᴇ ʙᴀɴɴᴇᴅ../**", | ||
|
||
disable_web_page_preview=True | ||
) | ||
return | ||
except UserNotParticipant: | ||
await b.send_message( | ||
chat_id=m.chat.id, | ||
text="**ᴊᴏɪɴ ᴍʏ ᴜᴘᴅᴀᴛᴇs ᴄʜᴀɴɴᴇʟ ᴛᴏ ᴜsᴇ ᴍᴇ..**\n\n**ᴅᴜᴇ ᴛᴏ ᴏᴠᴇʀʟᴏᴀᴅ ᴏɴʟʏ ᴄʜᴀɴɴᴇʟ sᴜʙsᴄʀɪʙᴇʀs ᴄᴀɴ ᴜsᴇ ᴍᴇ..!**", | ||
reply_markup=InlineKeyboardMarkup( | ||
[ | ||
[ | ||
InlineKeyboardButton("ᴊᴏɪɴ ᴍʏ ᴜᴘᴅᴀᴛᴇs ᴄʜᴀɴɴᴇʟ", url=f"https://t.me/{Var.UPDATES_CHANNEL}") | ||
] | ||
] | ||
) | ||
|
||
) | ||
return | ||
except Exception: | ||
await b.send_message( | ||
chat_id=m.chat.id, | ||
text="**𝙰𝙳𝙳 𝙵𝙾𝚁𝙲𝙴 𝚂𝚄𝙱 𝚃𝙾 𝙰𝙽𝚈 𝙲𝙷𝙰𝙽𝙽𝙴𝙻**", | ||
disable_web_page_preview=True) | ||
return | ||
|
||
get_msg = await b.get_messages(chat_id=Var.BIN_CHANNEL, ids=int(usr_cmd)) | ||
|
||
file_size = None | ||
if get_msg.video: | ||
file_size = f"{humanbytes(get_msg.video.file_size)}" | ||
elif get_msg.document: | ||
file_size = f"{humanbytes(get_msg.document.file_size)}" | ||
elif get_msg.audio: | ||
file_size = f"{humanbytes(get_msg.audio.file_size)}" | ||
|
||
file_name = None | ||
if get_msg.video: | ||
file_name = f"{get_msg.video.file_name}" | ||
elif get_msg.document: | ||
file_name = f"{get_msg.document.file_name}" | ||
elif get_msg.audio: | ||
file_name = f"{get_msg.audio.file_name}" | ||
|
||
stream_link = "https://{}/{}".format(Var.FQDN, get_msg.id) if Var.ON_HEROKU or Var.NO_PORT else \ | ||
"http://{}:{}/{}".format(Var.FQDN, | ||
Var.PORT, | ||
get_msg.id) | ||
|
||
msg_text = "**ᴛᴏᴜʀ ʟɪɴᴋ ɪs ɢᴇɴᴇʀᴀᴛᴇᴅ...⚡\n\n📧 ғɪʟᴇ ɴᴀᴍᴇ :-\n{}\n {}\n\n💌 ᴅᴏᴡɴʟᴏᴀᴅ ʟɪɴᴋ :- {}\n\n♻️ ᴛʜɪs ʟɪɴᴋ ɪs ᴘᴇʀᴍᴀɴᴇɴᴛ ᴀɴᴅ ᴡᴏɴ'ᴛ ɢᴇᴛ ᴇxᴘɪʀᴇᴅ ♻️\n\n@MoviesNowV2**" | ||
await m.reply_photo( | ||
photo="https://te.legra.ph/file/8dfe7256883cbc0190478.jpg", | ||
caption=msg_text.format(file_name, file_size, stream_link), | ||
|
||
reply_markup=InlineKeyboardMarkup([[InlineKeyboardButton("⚡ ᴅᴏᴡɴʟᴏᴀᴅ ɴᴏᴡ ⚡", url=stream_link)]]) | ||
) | ||
|
||
|
||
@StreamBot.on_message(filters.command('help') & filters.private) | ||
async def help_handler(bot, message): | ||
if not await db.is_user_exist(message.from_user.id): | ||
await db.add_user(message.from_user.id) | ||
await bot.send_message( | ||
Var.BIN_CHANNEL, | ||
f"#NEW_USER: \n\nNew User [{message.from_user.first_name}](tg://user?id={message.from_user.id}) Started !!" | ||
) | ||
if Var.UPDATES_CHANNEL is not None: | ||
try: | ||
user = await bot.get_chat_member(Var.UPDATES_CHANNEL, message.chat.id) | ||
if user.status == "banned": | ||
await bot.send_message( | ||
chat_id=message.chat.id, | ||
text="**ʏᴏᴜ ᴀʀᴇ ʙᴀɴɴᴇᴅ../**", | ||
|
||
disable_web_page_preview=True | ||
) | ||
return | ||
except UserNotParticipant: | ||
await bot.send_message( | ||
chat_id=message.chat.id, | ||
text="**ᴊᴏɪɴ ᴍʏ ᴜᴘᴅᴀᴛᴇs ᴄʜᴀɴɴᴇʟ ᴛᴏ ᴜsᴇ ᴍᴇ..**\n\n**ᴄʜᴀɴɴᴇʟᴏᴠᴇʀʟᴏᴀᴅ ᴏɴʟʏ ᴄʜᴀɴɴᴇʟ sᴜʙsᴄʀɪʙᴇʀs ᴄᴀɴ ᴜsᴇ ᴍᴇ..!**", | ||
reply_markup=InlineKeyboardMarkup( | ||
[ | ||
[ | ||
InlineKeyboardButton("ᴊᴏɪɴ ᴍʏ ᴜᴘᴅᴀᴛᴇs ᴄʜᴀɴɴᴇʟ", url=f"https://t.me/{Var.UPDATES_CHANNEL}") | ||
] | ||
] | ||
) | ||
) | ||
return | ||
except Exception: | ||
await bot.send_message( | ||
chat_id=message.chat.id, | ||
text="**𝙰𝙳𝙳 𝙵𝙾𝚁𝙲𝙴 𝚂𝚄𝙱 𝚃𝙾 𝙰𝙽𝚈 𝙲𝙷𝙰𝙽𝙽𝙴𝙻**", | ||
|
||
disable_web_page_preview=True) | ||
return | ||
await message.reply_photo( | ||
photo="https://te.legra.ph/file/8dfe7256883cbc0190478.jpg", | ||
caption="**┣⪼ sᴇɴᴅ ᴍᴇ ᴀɴʏ ғɪʟᴇ/ᴠɪᴅᴇᴏ ᴛʜᴇɴ ɪ ᴡɪʟʟ ʏᴏᴜ ᴘᴇʀᴍᴀɴᴇɴᴛ sʜᴀʀᴇᴀʙʟᴇ ʟɪɴᴋ ᴏғ ɪᴛ...\n\n┣⪼ ᴛʜɪs ʟɪɴᴋ ᴄᴀɴ ʙᴇ ᴜsᴇᴅ ᴛᴏ ᴅᴏᴡɴʟᴏᴀᴅ ᴏʀ ᴛᴏ sᴛʀᴇᴀᴍ ᴜsɪɴɢ ᴇxᴛᴇʀɴᴀʟ ᴠɪᴅᴇᴏ ᴘʟᴀʏᴇʀs ᴛʜʀᴏᴜɢʜ ᴍʏ sᴇʀᴠᴇʀs.\n\n┣⪼ ғᴏʀ sᴛʀᴇᴀᴍɪɴɢ ᴊᴜsᴛ ᴄᴏᴘʏ ᴛʜᴇ ʟɪɴᴋ ᴀɴᴅ ᴘᴀsᴛᴇ ɪᴛ ɪɴ ʏᴏᴜʀ ᴠɪᴅᴇᴏ ᴘʟᴀʏᴇʀ ᴛᴏ sᴛᴀʀᴛ sᴛʀᴇᴀᴍɪɴɢ.\n\n┣⪼ ᴛʜɪs ʙᴏᴛ ɪs ᴀʟsᴏ sᴜᴘᴘᴏʀᴛ ɪɴ ᴄʜᴀɴɴᴇʟ. ᴀᴅᴅ ᴍᴇ ᴛᴏ ʏᴏᴜʀ ᴄʜᴀɴɴᴇʟ ᴀs ᴀᴅᴍɪɴ ᴛᴏ ɢᴇᴛ ʀᴇᴀʟᴛɪᴍᴇ ᴅᴏᴡɴʟᴏᴀᴅ ʟɪɴᴋ ғᴏʀ ᴇᴠᴇʀʏ ғɪʟᴇs/ᴠɪᴅᴇᴏs ᴘᴏsʏ../\n\n┣⪼ ғᴏʀ ᴍᴏʀᴇ ɪɴғᴏʀᴍᴀᴛɪᴏɴ :- /about\n\n\nᴘʟᴇᴀsᴇ sʜᴀʀᴇ ᴀɴᴅ sᴜʙsᴄʀɪʙᴇ**", | ||
|
||
|
||
reply_markup=InlineKeyboardMarkup( | ||
[ | ||
[InlineKeyboardButton("⚡ 𝚄𝙿𝙳𝙰𝚃𝙴𝚂 ⚡", url="https://t.me/kwicbotupdates"), InlineKeyboardButton("⚡ 𝚂𝚄𝙿𝙿𝙾𝚁𝚃 ⚡", url="https://t.me/kwicbotupdates")], | ||
[InlineKeyboardButton("📺 24/7 𝙼𝙾𝚅𝙸𝙴𝚂 📺", url="https://t.me/MoviesNowV2"), InlineKeyboardButton("💎𝙾𝚃𝚃 𝙼𝙾𝚅𝙸𝙴𝚂💎", url="https://t.me/MoviesNowOTT2")], | ||
[InlineKeyboardButton("💌 𝙼𝙾𝚅𝙸𝙴 𝙱𝙾𝚃 💌", url="https://t.me/KWICVER2bot")] | ||
] | ||
) | ||
) | ||
|
||
@StreamBot.on_message(filters.command('about') & filters.private) | ||
async def about_handler(bot, message): | ||
if not await db.is_user_exist(message.from_user.id): | ||
await db.add_user(message.from_user.id) | ||
await bot.send_message( | ||
Var.BIN_CHANNEL, | ||
f"#NEW_USER: \n\nNew User [{message.from_user.first_name}](tg://user?id={message.from_user.id}) Started !!" | ||
) | ||
if Var.UPDATES_CHANNEL is not None: | ||
try: | ||
user = await bot.get_chat_member(Var.UPDATES_CHANNEL, message.chat.id) | ||
if user.status == "banned": | ||
await bot.send_message( | ||
chat_id=message.chat.id, | ||
text="**ʏᴏᴜ ᴀʀᴇ ʙᴀɴɴᴇᴅ../**", | ||
|
||
disable_web_page_preview=True | ||
) | ||
return | ||
except UserNotParticipant: | ||
await bot.send_message( | ||
chat_id=message.chat.id, | ||
text="**ᴊᴏɪɴ ᴍʏ ᴜᴘᴅᴀᴛᴇs ᴄʜᴀɴɴᴇʟ ᴛᴏ ᴜsᴇ ᴍᴇ..**\n\n**ᴅᴜᴇ ᴛᴏ ᴏᴠᴇʀʟᴏᴀᴅ ᴏɴʟʏ ᴄʜᴀɴɴᴇʟ ᴄᴀɴ ᴜsᴇ ᴍᴇ..!**", | ||
reply_markup=InlineKeyboardMarkup( | ||
[ | ||
[ | ||
InlineKeyboardButton("ᴊᴏɪɴ ᴍʏ ᴜᴘᴅᴀᴛᴇs ᴄʜᴀɴɴᴇʟ", url=f"https://t.me/{Var.UPDATES_CHANNEL}") | ||
] | ||
] | ||
) | ||
) | ||
return | ||
except Exception: | ||
await bot.send_message( | ||
chat_id=message.chat.id, | ||
text="**𝙰𝙳𝙳 𝙵𝙾𝚁𝙲𝙴 𝚂𝚄𝙱 𝚃𝙾 𝙰𝙽𝚈 𝙲𝙷𝙰𝙽𝙽𝙴𝙻**", | ||
|
||
disable_web_page_preview=True) | ||
return | ||
await message.reply_photo( | ||
photo="https://te.legra.ph/file/8dfe7256883cbc0190478.jpg", | ||
caption="""<b>sᴏᴍᴇ ʜɪᴅᴅᴇɴ ᴅᴇᴛᴀɪʟs😜</b> | ||
<b>╭━━━━━━━〔ғɪʟᴇ ᴛᴏ ʟɪɴᴋ ʙᴏᴛ〕</b> | ||
┃ | ||
┣⪼<b>ʙᴏᴛ ɴᴀᴍᴇ : <a href='https://t.me/kwicbotupdates'>𝗞𝗪𝗜𝗖 𝗛𝗜𝗚𝗛 𝗦𝗣𝗘𝗘𝗗 𝗕𝗢𝗧</a></b> | ||
┣⪼<b>ᴜᴘᴅᴀᴛᴇᴢ : <a href='https://t.me/kwicbotupdates'>𝗞𝗪𝗜𝗖𝗕𝗢𝗧 𝗨𝗣𝗗𝗔𝗧𝗘𝗦</a></b> | ||
┣⪼<b>sᴜᴘᴘᴏʀᴛ : <a href='https://t.me/kwic2002'>𝗞𝗪𝗜𝗖</a></b> | ||
┣⪼<b>sᴇʀᴠᴇʀ : ʜᴇʀᴜᴋᴏ</b> | ||
┣⪼<b>ʟɪʙʀᴀʀʏ : ᴘʏʀᴏɢʀᴀᴍ</b> | ||
┣⪼<b>ʟᴀɴɢᴜᴀɢᴇ: ᴘʏᴛʜᴏɴ 3</b> | ||
┣⪼<b>sᴏᴜʀᴄᴇ-ᴄᴏᴅᴇ : <a href='https://github.com/kwicfiletolinkbot'>𝗞𝗪𝗜𝗖𝗕𝗢𝗧𝗦</a></b> | ||
┣⪼<b>𝙼𝚘𝚟𝚒𝚎-𝙶𝚛𝚘𝚞𝚙 : <a href='https://t.me/MoviesNowV2'>𝙼𝚘𝚟𝚒𝚎𝚜𝙽𝚘𝚠𝚅2</a></b> | ||
┃ | ||
<b>╰━━━━━━━〔ᴘʟᴇᴀsʀ sᴜᴘᴘᴏʀᴛ〕</b>""", | ||
|
||
|
||
reply_markup=InlineKeyboardMarkup( | ||
[ | ||
[InlineKeyboardButton("⚡ 𝚂𝚄𝙿𝙿𝙾𝚁𝚃 ⚡", url="https://t.me/kwicbotupdates"), InlineKeyboardButton("📺 24/7 𝙼𝙾𝚅𝙸𝙴𝚂 📺", url="https://t.me/MoviesNowV2")], | ||
[InlineKeyboardButton("💌 𝙼𝙾𝚅𝙸𝙴𝙱𝙾𝚃 💌 ", url="https://t.me/KWICVER2bot")] | ||
] | ||
) | ||
) |
Oops, something went wrong.