from app import app from pyrogram import filters from pyrogram.types import InlineKeyboardMarkup, InlineKeyboardButton, Message from pyrogram.client import Client from classes.holo_user import HoloUser from modules.logging import logWrite from modules.utils import configGet, locale, should_quote from modules.handlers.welcome import welcome_pass from modules.database import col_tmp, col_applications from modules import custom_filters @app.on_message( custom_filters.enabled_applications & ~filters.scheduled & filters.private & filters.command(["reapply"], prefixes=["/"]) & ~custom_filters.banned ) async def cmd_reapply(app: Client, msg: Message): holo_user = HoloUser(msg.from_user) # Check if user has approved/rejected tmp application if ( (holo_user.application_state()[0] in ["approved", "rejected"]) or (holo_user.application_state()[0] == "none") ) and holo_user.spoiler_state() is False: # Check if user's tmp application is already completed or even sent if ( (holo_user.application_state()[1] is True) and ( not col_tmp.find_one({"user": holo_user.id, "type": "application"})[ "sent" ] ) ) or (holo_user.application_state()[0] == "none"): left_chat = True async for member in app.get_chat_members(configGet("users", "groups")): if member.user.id == msg.from_user.id: left_chat = False if left_chat is True: if holo_user.application_state()[ 1 ] is True and holo_user.application_state()[0] not in [ "fill", "rejected", ]: await msg.reply_text( locale("reapply_left_chat", "message", locale=holo_user), reply_markup=InlineKeyboardMarkup( [ [ InlineKeyboardButton( locale( "reapply_old_one", "button", locale=holo_user, ), f"reapply_old_{msg.id}", ) ], [ InlineKeyboardButton( locale( "reapply_new_one", "button", locale=holo_user, ), f"reapply_new_{msg.id}", ) ], ] ), ) elif ( col_tmp.find_one({"user": holo_user.id, "type": "application"}) is None and col_applications.find_one({"user": holo_user.id}) is not None ): await msg.reply_text( locale("reapply_left_chat", "message", locale=holo_user), reply_markup=InlineKeyboardMarkup( [ [ InlineKeyboardButton( locale( "reapply_old_one", "button", locale=holo_user, ), f"reapply_old_{msg.id}", ) ], [ InlineKeyboardButton( locale( "reapply_new_one", "button", locale=holo_user, ), f"reapply_new_{msg.id}", ) ], ] ), ) else: holo_user.application_restart(reapply=True) await welcome_pass(app, msg, once_again=True) else: if holo_user.sponsorship_state()[0] == "fill": await msg.reply_text( locale("finish_sponsorship", "message"), quote=should_quote(msg) ) return holo_user.application_restart(reapply=True) await welcome_pass(app, msg, once_again=True) else: await msg.reply_text( locale("reapply_in_progress", "message", locale=holo_user).format( locale("confirm", "keyboard", locale=holo_user)[1][0] ), reply_markup=InlineKeyboardMarkup( [ [ InlineKeyboardButton( locale("applying_stop", "button", locale=holo_user), f"reapply_stop_{msg.id}", ) ] ] ), ) elif holo_user.spoiler_state() is True: await msg.reply_text(locale("spoiler_in_progress", "message", locale=holo_user)) else: if (holo_user.application_state()[0] == "fill") and ( col_tmp.find_one({"user": holo_user.id, "type": "application"})["sent"] is True ): await msg.reply_text( locale("reapply_forbidden", "message", locale=holo_user) ) else: await msg.reply_text( locale("reapply_in_progress", "message", locale=holo_user).format( locale("confirm", "keyboard", locale=holo_user)[1][0] ), reply_markup=InlineKeyboardMarkup( [ [ InlineKeyboardButton( locale("applying_stop", "button", locale=holo_user), f"reapply_stop_{msg.id}", ) ] ] ), )