from os import sep from time import time from dateutil.relativedelta import relativedelta from datetime import datetime from app import app from pyrogram import filters from pyrogram.types import ReplyKeyboardRemove, InlineKeyboardMarkup, InlineKeyboardButton from pyrogram.enums.parse_mode import ParseMode from modules.utils import configGet, configSet, jsonLoad, jsonSave, locale, logWrite from modules.handlers.welcome import welcome_pass # Confirmation ================================================================================================================= @app.on_message(~ filters.scheduled & filters.private & (filters.regex(locale("confirm", "keyboard")[0][0]))) async def confirm_yes(app, msg): user_stage = configGet("stage", file=str(msg.from_user.id)) if user_stage == 10: if not configGet("sent", file=str(msg.from_user.id)): await msg.reply_text(locale("application_sent", "message"), reply_markup=ReplyKeyboardRemove()) applications = jsonLoad(f"{configGet('data', 'locations')}{sep}applications.json") applications[str(msg.from_user.id)] = { "approved": False, "approved_by": None, "approval_date": None, "refused": False, "refused_by": False, "refusal_date": False, "application_date": int(time()), "application": configGet("application", file=str(msg.from_user.id)) } jsonSave(applications, f"{configGet('data', 'locations')}{sep}applications.json") application_content = [] i = 1 for question in configGet("application", file=str(msg.from_user.id)): if i == 2: age = relativedelta(datetime.now(), datetime.strptime(configGet('application', file=str(msg.from_user.id))['2'], '%d.%m.%Y')) application_content.append(f"{locale('question'+str(i), 'message', 'question_titles')} {configGet('application', file=str(msg.from_user.id))['2']} ({age.years} р.)") else: application_content.append(f"{locale('question'+str(i), 'message', 'question_titles')} {configGet('application', file=str(msg.from_user.id))[question]}") i += 1 if configGet("reapply", file=str(msg.from_user.id)): await app.send_message(chat_id=configGet("admin_group"), text=(locale("reapply_got", "message")).format(str(msg.from_user.id), msg.from_user.first_name, msg.from_user.last_name, msg.from_user.username, "\n".join(application_content)), parse_mode=ParseMode.MARKDOWN, reply_markup=InlineKeyboardMarkup( [ [ InlineKeyboardButton(text=str(locale("reapply_yes", "button")), callback_data=f"reapply_yes_{msg.from_user.id}") ], [ InlineKeyboardButton(text=str(locale("reapply_no", "button")), callback_data=f"reapply_no_{msg.from_user.id}") ] ] ) ) else: await app.send_message(chat_id=configGet("admin_group"), text=(locale("application_got", "message")).format(str(msg.from_user.id), msg.from_user.first_name, msg.from_user.last_name, msg.from_user.username, "\n".join(application_content)), parse_mode=ParseMode.MARKDOWN, reply_markup=InlineKeyboardMarkup( [ [ InlineKeyboardButton(text=str(locale("sub_yes", "button")), callback_data=f"sub_yes_{msg.from_user.id}") ], [ InlineKeyboardButton(text=str(locale("sub_no", "button")), callback_data=f"sub_no_{msg.from_user.id}") ], [ InlineKeyboardButton(text=str(locale("sub_no_aggressive", "button")), callback_data=f"sub_no_aggresive_{msg.from_user.id}") ], [ InlineKeyboardButton(text=str(locale("sub_no_russian", "button")), callback_data=f"sub_no_russian_{msg.from_user.id}") ] ] ) ) logWrite(f"User {msg.from_user.id} sent his application and it will now be reviewed") configSet(["sent"], True, file=str(msg.from_user.id)) configSet(["confirmed"], True, file=str(msg.from_user.id)) @app.on_message(~ filters.scheduled & filters.private & (filters.regex(locale("confirm", "keyboard")[1][0]))) async def confirm_no(app, msg): user_stage = configGet("stage", file=str(msg.from_user.id)) if user_stage == 10: jsonSave(jsonLoad(f"{configGet('data', 'locations')}{sep}user_default.json"), f"{configGet('data', 'locations')}{sep}users{sep}{msg.from_user.id}.json") configSet(["telegram_id"], str(msg.from_user.username), file=str(msg.from_user.id)) configSet(["telegram_name"], f"{msg.from_user.first_name} {msg.from_user.last_name}", file=str(msg.from_user.id)) configSet(["telegram_phone"], str(msg.from_user.phone_number), file=str(msg.from_user.id)) configSet(["telegram_locale"], str(msg.from_user.language_code), file=str(msg.from_user.id)) await welcome_pass(app, msg, once_again=True) logWrite(f"User {msg.from_user.id} restarted the application due to typo in it") # ==============================================================================================================================