|
from pyrogram import filters |
|
from pyrogram.enums import ChatType |
|
from pyrogram.errors import MessageNotModified |
|
from pyrogram.types import ( |
|
CallbackQuery, |
|
InlineKeyboardButton, |
|
InlineKeyboardMarkup, |
|
Message, |
|
) |
|
|
|
from DragMusic import app |
|
from DragMusic.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 DragMusic.utils.decorators.admins import ActualAdminCB |
|
from DragMusic.utils.decorators.language import language, languageCB |
|
from DragMusic.utils.inline.settings import ( |
|
auth_users_markup, |
|
playmode_users_markup, |
|
setting_markup, |
|
vote_mode_markup, |
|
) |
|
from DragMusic.utils.inline.start import private_panel |
|
from config import BANNED_USERS, OWNER_ID |
|
|
|
|
|
@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("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( |
|
app.mention, |
|
CallbackQuery.message.chat.id, |
|
CallbackQuery.message.chat.title, |
|
), |
|
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_text( |
|
_["start_2"].format(CallbackQuery.from_user.mention, 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}[<code>{user_id}</code>]\n" |
|
msg += f" {_['auth_8']} {admin_name}[<code>{admin_id}</code>]\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 |
|
|