This commit is contained in:
Tofik Denianto 2021-11-03 07:01:25 +07:00 committed by GitHub
parent 313db7ee87
commit ff951e1b99
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 config import BOT_USERNAME, GROUP_SUPPORT, IMG_1, IMG_2, UPDATES_CHANNEL, ASSISTANT_NAME from driver.queues import QUEUE, add_to_queue
from pyrogram.types import InlineKeyboardButton, InlineKeyboardMarkup, Message 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 pytgcalls import StreamType from pytgcalls import StreamType
from pytgcalls.types.input_stream import AudioVideoPiped from pytgcalls.types.input_stream import AudioVideoPiped
from pytgcalls.types.input_stream.quality import ( from pytgcalls.types.input_stream.quality import (
@ -57,78 +57,70 @@ async def ytdl(link):
@Client.on_message(command(["vplay", f"vplay@{BOT_USERNAME}"]) & other_filters) @Client.on_message(command(["vplay", f"vplay@{BOT_USERNAME}"]) & other_filters)
async def vplay(_, m: Message): async def vplay(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.video or replied.document: if replied.video or replied.document:
loser = await replied.reply("📥 **downloading video...**") loser = await replied.reply("📥 **downloading video...**")
@ -262,7 +254,9 @@ async def vplay(_, m: Message):
if chat_id in QUEUE: if chat_id in QUEUE:
pos = add_to_queue(chat_id, songname, ytlink, url, "Video", Q) pos = add_to_queue(chat_id, songname, ytlink, url, "Video", Q)
await loser.delete() await loser.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}`",
@ -292,77 +286,70 @@ async def vplay(_, m: Message):
@Client.on_message(command(["vstream", f"vstream@{BOT_USERNAME}"]) & other_filters) @Client.on_message(command(["vstream", f"vstream@{BOT_USERNAME}"]) & other_filters)
async def vstream(_, m: Message): async def vstream(c: Client, m: Message):
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(
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:
@ -424,7 +411,9 @@ async def vstream(_, m: Message):
) )
add_to_queue(chat_id, "Live Stream", livelink, link, "Video", Q) add_to_queue(chat_id, "Live Stream", livelink, link, "Video", Q)
await loser.delete() await loser.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"💡 **[Live stream video]({link}) started.**\n\n💭 **Chat:** `{chat_id}`\n💡 **Status:** `Playing`\n🎧 **Request by:** {requester}", caption=f"💡 **[Live stream video]({link}) started.**\n\n💭 **Chat:** `{chat_id}`\n💡 **Status:** `Playing`\n🎧 **Request by:** {requester}",