Update music.py

This commit is contained in:
Tofik Denianto 2021-11-03 06:54:47 +07:00 committed by GitHub
parent 93dbcfb26e
commit 313db7ee87
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -2,16 +2,16 @@
# Commit Start Date 20/10/2021 # Commit Start Date 20/10/2021
# Finished On 28/10/2021 # Finished On 28/10/2021
import re
import asyncio import asyncio
import re
from pyrogram import Client from config import ASSISTANT_NAME, BOT_USERNAME, IMG_1, IMG_2
from driver.veez import call_py, user, bot
from driver.queues import QUEUE, add_to_queue
from driver.filters import command, other_filters from driver.filters import command, other_filters
from driver.queues import QUEUE, add_to_queue
from driver.veez import call_py, user
from pyrogram import Client
from pyrogram.errors import UserAlreadyParticipant, UserNotParticipant from pyrogram.errors import UserAlreadyParticipant, UserNotParticipant
from pyrogram.types import InlineKeyboardButton, InlineKeyboardMarkup, Message from pyrogram.types import InlineKeyboardButton, InlineKeyboardMarkup, Message
from config import BOT_USERNAME, GROUP_SUPPORT, IMG_1, IMG_2, UPDATES_CHANNEL, ASSISTANT_NAME
from pytgcalls import StreamType from pytgcalls import StreamType
from pytgcalls.types.input_stream import AudioPiped from pytgcalls.types.input_stream import AudioPiped
from youtubesearchpython import VideosSearch from youtubesearchpython import VideosSearch
@ -51,78 +51,70 @@ async def ytdl(link):
@Client.on_message(command(["play", f"play@{BOT_USERNAME}"]) & other_filters) @Client.on_message(command(["play", f"play@{BOT_USERNAME}"]) & other_filters)
async def play(_, m: Message): async def play(c: Client, m: Message):
replied = m.reply_to_message
chat_id = m.chat.id
keyboard = InlineKeyboardMarkup( keyboard = InlineKeyboardMarkup(
[ [
[ [
InlineKeyboardButton( InlineKeyboardButton(text="• Mᴇɴ", callback_data="cbmenu"),
text="• Mᴇɴ", callback_data="cbmenu" InlineKeyboardButton(text="• Cʟsᴇ", callback_data="cls"),
),
InlineKeyboardButton(
text="• Cʟsᴇ", callback_data="cls"
),
] ]
] ]
) )
try: try:
popo = await bot.get_me() aing = await c.get_me()
papa = popo
pepe = papa.id
except Exception as e: except Exception as e:
return await m.reply_text(f"error:\n\n{e}") return await m.reply_text(f"error:\n\n{e}")
chat_title = m.chat.title a = await c.get_chat_member(chat_id, aing.id)
a = await bot.get_chat_member(m.chat.id, pepe)
if a.status != "administrator": if a.status != "administrator":
await m.reply_text(f"💡 To use me, I need to be an **Administrator** with the following **permissions**:\n\n» ❌ __Delete messages__\n» ❌ __Ban users__\n» ❌ __Add users__\n» ❌ __Manage voice chat__\n\nData is **updated** automatically after you **promote me**") await m.reply_text(
f"💡 To use me, I need to be an **Administrator** with the following **permissions**:\n\n» ❌ __Delete messages__\n» ❌ __Ban users__\n» ❌ __Add users__\n» ❌ __Manage voice chat__\n\nData is **updated** automatically after you **promote me**"
)
return return
if not a.can_manage_voice_chats: if not a.can_manage_voice_chats:
await m.reply_text( await m.reply_text(
"missing required permission:" "missing required permission:" + "\n\n» ❌ __Manage voice chat__"
+ "\n\n» ❌ __Manage voice chat__") )
return return
if not a.can_delete_messages: if not a.can_delete_messages:
await m.reply_text( await m.reply_text(
"missing required permission:" "missing required permission:" + "\n\n» ❌ __Delete messages__"
+ "\n\n» ❌ __Delete messages__") )
return return
if not a.can_invite_users: if not a.can_invite_users:
await m.reply_text( await m.reply_text("missing required permission:" + "\n\n» ❌ __Add users__")
"missing required permission:"
+ "\n\n» ❌ __Add users__")
return return
if not a.can_restrict_members: if not a.can_restrict_members:
await m.reply_text( await m.reply_text("missing required permission:" + "\n\n» ❌ __Ban users__")
"missing required permission:"
+ "\n\n» ❌ __Ban users__")
return return
try: try:
uber = await user.get_me() ubot = await user.get_me()
grab = uber b = await c.get_chat_member(chat_id, ubot.id)
good = grab.id
b = await bot.get_chat_member(m.chat.id, good)
if b.status == "kicked": if b.status == "kicked":
await m.reply_text(f"@{ASSISTANT_NAME} **is banned in group** {chat_title}\n\n» **unban the userbot first if you want to use this bot.**") await m.reply_text(
f"@{ASSISTANT_NAME} **is banned in group** {m.chat.title}\n\n» **unban the userbot first if you want to use this bot.**"
)
return return
except UserNotParticipant: except UserNotParticipant:
if m.chat.username: if m.chat.username:
try: try:
await user.join_chat(f"{m.chat.username}") await user.join_chat(m.chat.username)
except Exception as e: except Exception as e:
await m.reply_text(f"❌ **userbot failed to join**\n\n**reason**:{e}") await m.reply_text(f"❌ **userbot failed to join**\n\n**reason**:{e}")
return return
else: else:
try: try:
pope = await bot.export_chat_invite_link(m.chat.id) pope = await c.export_chat_invite_link(chat_id)
pepo = await bot.revoke_chat_invite_link(m.chat.id, pope) pepo = await c.revoke_chat_invite_link(chat_id, pope)
await user.join_chat(pepo.invite_link) await user.join_chat(pepo.invite_link)
except UserAlreadyParticipant: except UserAlreadyParticipant:
pass pass
except Exception as e: except Exception as e:
return await m.reply_text(f"❌ **userbot failed to join**\n\n**reason**:{e}") return await m.reply_text(
replied = m.reply_to_message f"❌ **userbot failed to join**\n\n**reason**:{e}"
chat_id = m.chat.id )
if replied: if replied:
if replied.audio or replied.voice: if replied.audio or replied.voice:
suhu = await replied.reply("📥 **downloading audio...**") suhu = await replied.reply("📥 **downloading audio...**")
@ -232,7 +224,9 @@ async def play(_, m: Message):
if chat_id in QUEUE: if chat_id in QUEUE:
pos = add_to_queue(chat_id, songname, ytlink, url, "Audio", 0) pos = add_to_queue(chat_id, songname, ytlink, url, "Audio", 0)
await suhu.delete() await suhu.delete()
requester = f"[{m.from_user.first_name}](tg://user?id={m.from_user.id})" requester = (
f"[{m.from_user.first_name}](tg://user?id={m.from_user.id})"
)
await m.reply_photo( await m.reply_photo(
photo=f"{IMG_1}", photo=f"{IMG_1}",
caption=f"💡 **Track added to the queue**\n\n🏷 **Name:** [{songname}]({url})\n💭 **Chat:** `{chat_id}`\n🎧 **Request by:** {requester}\n🔢 **At position »** `{pos}`", caption=f"💡 **Track added to the queue**\n\n🏷 **Name:** [{songname}]({url})\n💭 **Chat:** `{chat_id}`\n🎧 **Request by:** {requester}\n🔢 **At position »** `{pos}`",
@ -261,78 +255,71 @@ async def play(_, m: Message):
# stream is used for live streaming only # stream is used for live streaming only
@Client.on_message(command(["stream", f"stream@{BOT_USERNAME}"]) & other_filters)
async def stream(_, m: Message):
@Client.on_message(command(["stream", f"stream@{BOT_USERNAME}"]) & other_filters)
async def stream(c: Client, m: Message):
chat_id = m.chat.id
keyboard = InlineKeyboardMarkup( keyboard = InlineKeyboardMarkup(
[ [
[ [
InlineKeyboardButton( InlineKeyboardButton(text="• Mᴇɴ", callback_data="cbmenu"),
text="• Mᴇɴ", callback_data="cbmenu" InlineKeyboardButton(text="• Cʟsᴇ", callback_data="cls"),
),
InlineKeyboardButton(
text="• Cʟsᴇ", callback_data="cls"
),
] ]
] ]
) )
try: try:
popo = await bot.get_me() aing = await c.get_me()
papa = popo
pepe = papa.id
except Exception as e: except Exception as e:
return await m.reply_text(f"error:\n\n{e}") return await m.reply_text(f"error:\n\n{e}")
chat_title = m.chat.title a = await c.get_chat_member(chat_id, aing.id)
a = await bot.get_chat_member(m.chat.id, pepe)
if a.status != "administrator": if a.status != "administrator":
await m.reply_text(f"💡 To use me, I need to be an **Administrator** with the following **permissions**:\n\n» ❌ __Delete messages__\n» ❌ __Ban users__\n» ❌ __Add users__\n» ❌ __Manage voice chat__\n\nData is **updated** automatically after you **promote me**") await m.reply_text(
f"💡 To use me, I need to be an **Administrator** with the following **permissions**:\n\n» ❌ __Delete messages__\n» ❌ __Ban users__\n» ❌ __Add users__\n» ❌ __Manage voice chat__\n\nData is **updated** automatically after you **promote me**"
)
return return
if not a.can_manage_voice_chats: if not a.can_manage_voice_chats:
await m.reply_text( await m.reply_text(
"missing required permission:" "missing required permission:" + "\n\n» ❌ __Manage voice chat__"
+ "\n\n» ❌ __Manage voice chat__") )
return return
if not a.can_delete_messages: if not a.can_delete_messages:
await m.reply_text( await m.reply_text(
"missing required permission:" "missing required permission:" + "\n\n» ❌ __Delete messages__"
+ "\n\n» ❌ __Delete messages__") )
return return
if not a.can_invite_users: if not a.can_invite_users:
await m.reply_text( await m.reply_text("missing required permission:" + "\n\n» ❌ __Add users__")
"missing required permission:"
+ "\n\n» ❌ __Add users__")
return return
if not a.can_restrict_members: if not a.can_restrict_members:
await m.reply_text( await m.reply_text("missing required permission:" + "\n\n» ❌ __Ban users__")
"missing required permission:"
+ "\n\n» ❌ __Ban users__")
return return
try: try:
uber = await user.get_me() ubot = await user.get_me()
grab = uber b = await c.get_chat_member(chat_id, ubot.id)
good = grab.id
b = await bot.get_chat_member(m.chat.id, good)
if b.status == "kicked": if b.status == "kicked":
await m.reply_text(f"@{ASSISTANT_NAME} **is banned in group** {chat_title}\n\n» **unban the userbot first if you want to use this bot.**") await m.reply_text(
f"@{ASSISTANT_NAME} **is banned in group** {m.chat.title}\n\n» **unban the userbot first if you want to use this bot.**"
)
return return
except UserNotParticipant: except UserNotParticipant:
if m.chat.username: if m.chat.username:
try: try:
await user.join_chat(f"{m.chat.username}") await user.join_chat(m.chat.username)
except Exception as e: except Exception as e:
await m.reply_text(f"❌ **userbot failed to join**\n\n**reason**:{e}") await m.reply_text(f"❌ **userbot failed to join**\n\n**reason**:{e}")
return return
else: else:
try: try:
pope = await bot.export_chat_invite_link(m.chat.id) pope = await c.export_chat_invite_link(chat_id)
pepo = await bot.revoke_chat_invite_link(m.chat.id, pope) pepo = await c.revoke_chat_invite_link(chat_id, pope)
await user.join_chat(pepo.invite_link) await user.join_chat(pepo.invite_link)
except UserAlreadyParticipant: except UserAlreadyParticipant:
pass pass
except Exception as e: except Exception as e:
return await m.reply_text(f"❌ **userbot failed to join**\n\n**reason**:{e}") return await m.reply_text(
chat_id = m.chat.id f"❌ **userbot failed to join**\n\n**reason**:{e}"
)
if len(m.command) < 2: if len(m.command) < 2:
await m.reply("» give me a live-link/m3u8 url/youtube link to stream.") await m.reply("» give me a live-link/m3u8 url/youtube link to stream.")
else: else:
@ -370,7 +357,9 @@ async def stream(_, m: Message):
) )
add_to_queue(chat_id, "Radio", livelink, link, "Audio", 0) add_to_queue(chat_id, "Radio", livelink, link, "Audio", 0)
await suhu.delete() await suhu.delete()
requester = f"[{m.from_user.first_name}](tg://user?id={m.from_user.id})" requester = (
f"[{m.from_user.first_name}](tg://user?id={m.from_user.id})"
)
await m.reply_photo( await m.reply_photo(
photo=f"{IMG_2}", photo=f"{IMG_2}",
caption=f"💡 **[Radio live]({link}) stream started.**\n\n💭 **Chat:** `{chat_id}`\n💡 **Status:** `Playing`\n🎧 **Request by:** {requester}", caption=f"💡 **[Radio live]({link}) stream started.**\n\n💭 **Chat:** `{chat_id}`\n💡 **Status:** `Playing`\n🎧 **Request by:** {requester}",