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 classes.holo_user import HoloUser from modules.utils import all_locales, configGet, locale, logWrite from modules.handlers.welcome import welcome_pass from modules.database import col_tmp # Confirmation ================================================================================================================= confirmation_1 = [] for pattern in all_locales("confirm", "keyboard"): confirmation_1.append(pattern[0][0]) @app.on_message(~ filters.scheduled & filters.private & filters.command(confirmation_1, prefixes=[""])) async def confirm_yes(app, msg): holo_user = HoloUser(msg.from_user) if (holo_user.application_state()[0] == "fill") and (holo_user.application_state()[1] is True): await msg.reply_text(locale("application_sent", "message"), reply_markup=ReplyKeyboardRemove()) tmp_application = col_tmp.find_one({"user": holo_user.id, "type": "application"}) if tmp_application is None: logWrite(f"Application of {holo_user.id} is nowhere to be found.") return application_content = [] i = 1 for question in tmp_application['application']: if i == 2: age = relativedelta(datetime.now(), tmp_application['application']['2']) application_content.append(f"{locale(f'question{i}', 'message', 'question_titles')} {tmp_application['application']['2'].strftime('%d.%m.%Y')} ({age.years} р.)") elif i == 3: if tmp_application['application']['3']['countryCode'] == "UA": application_content.append(f"{locale(f'question{i}', 'message', 'question_titles')} {tmp_application['application']['3']['name']}") else: application_content.append(f"{locale(f'question{i}', 'message', 'question_titles')} {tmp_application['application']['3']['name']} ({tmp_application['application']['3']['adminName1']}, {tmp_application['application']['3']['countryName']})") else: application_content.append(f"{locale(f'question{i}', 'message', 'question_titles')} {tmp_application['application'][question]}") i += 1 if tmp_application["reapply"]: await app.send_message(chat_id=configGet("admin_group"), text=(locale("reapply_got", "message")).format(str(holo_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_{holo_user.id}") ], [ InlineKeyboardButton(text=str(locale("reapply_no", "button")), callback_data=f"reapply_no_{holo_user.id}") ] ] ) ) else: await app.send_message(chat_id=configGet("admin_group"), text=(locale("application_got", "message")).format(str(holo_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_{holo_user.id}") ], [ InlineKeyboardButton(text=str(locale("sub_no", "button")), callback_data=f"sub_no_{holo_user.id}") ], [ InlineKeyboardButton(text=str(locale("sub_aggressive", "button")), callback_data=f"sub_aggressive_{holo_user.id}") ], [ InlineKeyboardButton(text=str(locale("sub_russian", "button")), callback_data=f"sub_russian_{holo_user.id}") ] ] ) ) logWrite(f"User {holo_user.id} sent his application and it will now be reviewed") col_tmp.update_one({"user": holo_user.id, "type": "application"}, {"$set": {"sent": True}}) # configSet(["sent"], True, file=str(holo_user.id)) # configSet(["confirmed"], True, file=str(holo_user.id)) confirmation_2 = [] for pattern in all_locales("confirm", "keyboard"): confirmation_2.append(pattern[1][0]) @app.on_message(~ filters.scheduled & filters.private & filters.command(confirmation_2, prefixes=[""])) async def confirm_no(app, msg): holo_user = HoloUser(msg.from_user) if (holo_user.application_state()[0] == "fill") and (holo_user.application_state()[1] is True): holo_user.application_restart() await welcome_pass(app, msg, once_again=True) logWrite(f"User {msg.from_user.id} restarted the application due to typo in it") # ==============================================================================================================================