From 6b80b7d0fa124b9057d8cd3ffe16b70b9a1a9249 Mon Sep 17 00:00:00 2001 From: Profitroll <47523801+profitrollgame@users.noreply.github.com> Date: Wed, 4 Jan 2023 20:13:29 +0100 Subject: [PATCH] Improved handlers --- classes/holo_user.py | 3 ++ holochecker.py | 21 --------- modules/handlers/everything.py | 39 +++++++++++++-- modules/handlers/spoiler.py | 86 ---------------------------------- 4 files changed, 39 insertions(+), 110 deletions(-) delete mode 100644 modules/handlers/spoiler.py diff --git a/classes/holo_user.py b/classes/holo_user.py index d8f5ef8..7b19a5f 100644 --- a/classes/holo_user.py +++ b/classes/holo_user.py @@ -351,6 +351,9 @@ class HoloUser(): if self.sponsorship_state()[0] == "fill": return + if self.spoiler_state() is True: + return + # col_tmp.insert_one( # document=DefaultApplicationTemp(self.id).dict # ) diff --git a/holochecker.py b/holochecker.py index 997357d..92b504a 100644 --- a/holochecker.py +++ b/holochecker.py @@ -37,7 +37,6 @@ from modules.callbacks.sus import * from modules.handlers.confirmation import * from modules.handlers.contact import * from modules.handlers.group_join import * -from modules.handlers.spoiler import * from modules.handlers.sponsorship import * from modules.handlers.voice import * from modules.handlers.welcome import * @@ -53,26 +52,6 @@ if __name__ == "__main__": # I did compare performance, almost no difference and it's much more useful this way. Change my mind. app.start() - # if configGet("birthdays_notify"): - - # every().day.at(configGet("birthdays_time")).do(check_birthdays, app) - - # # Background tasks checker - # def background_task(): - # try: - # while True: - # try: - # run_pending() - # #print('Checked') - # time.sleep(1) - # except: - # pass - # except KeyboardInterrupt: - # print('\nShutting down') - # killProc(pid) - # t = Thread(target=background_task) - # t.start() - try: app.send_message(configGet("owner"), f"Starting up with pid `{pid}`") except bad_request_400.PeerIdInvalid: diff --git a/modules/handlers/everything.py b/modules/handlers/everything.py index f2b2273..6de82e8 100644 --- a/modules/handlers/everything.py +++ b/modules/handlers/everything.py @@ -1,11 +1,11 @@ from app import app, isAnAdmin import asyncio from pyrogram import filters -from pyrogram.types import Message +from pyrogram.types import Message, ReplyKeyboardMarkup, ReplyKeyboardRemove, ForceReply, InlineKeyboardMarkup, InlineKeyboardButton from pyrogram.client import Client from classes.holo_user import HoloUser -from modules.utils import configGet, logWrite -from modules.database import col_messages +from modules.utils import configGet, logWrite, locale, all_locales +from modules.database import col_messages, col_spoilers async def message_involved(msg: Message) -> bool: message = col_messages.find_one({"destination.id": msg.reply_to_message.id, "destination.chat": msg.reply_to_message.chat.id}) @@ -58,6 +58,39 @@ async def any_stage(app: Client, msg: Message): if configGet("enabled", "features", "sponsorships") is True: await holo_user.sponsorship_next(msg.text, msg=msg) + + if holo_user.application_state()[0] != "fill" and holo_user.sponsorship_state()[0] != "fill": + + spoiler = col_spoilers.find_one( {"user": msg.from_user.id, "completed": False} ) + + if spoiler is None: + return + + if msg.photo is not None: + col_spoilers.find_one_and_update( {"user": msg.from_user.id, "completed": False}, {"$set": {"photo": msg.photo.file_id}} ) + await msg.reply_text(locale("spoiler_send_description", "message", locale=msg.from_user), reply_markup=ReplyKeyboardMarkup(locale("spoiler_description", "keyboard"), resize_keyboard=True, one_time_keyboard=True, placeholder=locale("spoiler_description", "force_reply", locale=msg.from_user))) + return + elif msg.video is not None: + col_spoilers.find_one_and_update( {"user": msg.from_user.id, "completed": False}, {"$set": {"video": msg.video.file_id}} ) + await msg.reply_text(locale("spoiler_send_description", "message", locale=msg.from_user), reply_markup=ReplyKeyboardMarkup(locale("spoiler_description", "keyboard"), resize_keyboard=True, one_time_keyboard=True, placeholder=locale("spoiler_description", "force_reply", locale=msg.from_user))) + return + elif msg.animation is not None: + col_spoilers.find_one_and_update( {"user": msg.from_user.id, "completed": False}, {"$set": {"animation": msg.animation.file_id}} ) + await msg.reply_text(locale("spoiler_send_description", "message", locale=msg.from_user), reply_markup=ReplyKeyboardMarkup(locale("spoiler_description", "keyboard"), resize_keyboard=True, one_time_keyboard=True, placeholder=locale("spoiler_description", "force_reply", locale=msg.from_user))) + return + + if spoiler["photo"] is None and spoiler["video"] is None and spoiler["animation"] is None and spoiler["text"] is None: + col_spoilers.find_one_and_update( {"user": msg.from_user.id, "completed": False}, {"$set": {"text": msg.text}} ) + await msg.reply_text(locale("spoiler_send_description", "message", locale=msg.from_user), reply_markup=ReplyKeyboardMarkup(locale("spoiler_description", "keyboard"), resize_keyboard=True, one_time_keyboard=True, placeholder=locale("spoiler_description", "force_reply", locale=msg.from_user))) + else: + for lc in all_locales("spoiler_description", "keyboard"): + if msg.text == lc[-1][0]: + await msg.reply_text(locale("spoiler_description_enter", "message", locale=msg.from_user), reply_markup=ForceReply(placeholder=locale("spoiler_description", "force_reply", locale=msg.from_user))) + return + if msg.text != "-": + col_spoilers.find_one_and_update( {"user": msg.from_user.id, "completed": False}, {"$set": {"description": msg.text, "completed": True}} ) + await msg.reply_text(locale("spoiler_using_description", "message", locale=msg.from_user).format(msg.text), reply_markup=ReplyKeyboardRemove()) + await msg.reply_text(locale("spoiler_ready", "message", locale=msg.from_user), quote=False, reply_markup=InlineKeyboardMarkup([[InlineKeyboardButton(locale("spoiler_send", "button", locale=msg.from_user), switch_inline_query=f"spoiler:{spoiler['_id'].__str__()}")]])) # user_stage = configGet("stage", file=str(msg.from_user.id)) diff --git a/modules/handlers/spoiler.py b/modules/handlers/spoiler.py deleted file mode 100644 index 4e4c9e0..0000000 --- a/modules/handlers/spoiler.py +++ /dev/null @@ -1,86 +0,0 @@ -from app import app -from pyrogram import filters -from pyrogram.types import Message, InlineKeyboardMarkup, InlineKeyboardButton, ForceReply, ReplyKeyboardMarkup, ReplyKeyboardRemove -from pyrogram.client import Client -from classes.holo_user import HoloUser, UserInvalidError, UserNotFoundError -from modules.utils import locale, all_locales -from modules.database import col_spoilers -from modules import custom_filters - -# Any other input ============================================================================================================== -@app.on_message(custom_filters.member & ~filters.scheduled & filters.private & filters.text) -async def handler_spoiler_text(app: Client, msg: Message): - - try: - holo_user = HoloUser(msg.from_user) - except (UserInvalidError, UserNotFoundError): - return - - if holo_user.application_state()[0] != "fill" and holo_user.sponsorship_state()[0] != "fill": - - spoiler = col_spoilers.find_one( {"user": msg.from_user.id, "completed": False} ) - - if spoiler is None: - return - - if spoiler["photo"] is None and spoiler["video"] is None and spoiler["animation"] is None and spoiler["text"] is None: - col_spoilers.find_one_and_update( {"user": msg.from_user.id, "completed": False}, {"$set": {"text": msg.text}} ) - await msg.reply_text(locale("spoiler_send_description", "message", locale=msg.from_user), reply_markup=ReplyKeyboardMarkup(locale("spoiler_description", "keyboard"), resize_keyboard=True, one_time_keyboard=True, placeholder=locale("spoiler_description", "force_reply", locale=msg.from_user))) - else: - for lc in all_locales("spoiler_description", "keyboard"): - if msg.text == lc[-1][0]: - await msg.reply_text(locale("spoiler_description_enter", "message", locale=msg.from_user), reply_markup=ForceReply(placeholder=locale("spoiler_description", "force_reply", locale=msg.from_user))) - return - if msg.text != "-": - col_spoilers.find_one_and_update( {"user": msg.from_user.id, "completed": False}, {"$set": {"description": msg.text, "completed": True}} ) - await msg.reply_text(locale("spoiler_using_description", "message", locale=msg.from_user).format(msg.text), reply_markup=ReplyKeyboardRemove()) - await msg.reply_text(locale("spoiler_ready", "message", locale=msg.from_user), quote=False, reply_markup=InlineKeyboardMarkup([[InlineKeyboardButton(locale("spoiler_send", "button", locale=msg.from_user), switch_inline_query=f"spoiler:{spoiler['_id'].__str__()}")]])) - -@app.on_message(custom_filters.member & ~filters.scheduled & filters.private & filters.photo) -async def handler_spoiler_photo(app: Client, msg: Message): - - try: - holo_user = HoloUser(msg.from_user) - except (UserInvalidError, UserNotFoundError): - return - - if holo_user.application_state()[0] != "fill" and holo_user.sponsorship_state()[0] != "fill": - - - if col_spoilers.find_one( {"user": msg.from_user.id, "completed": False} ) is None: - return - - col_spoilers.find_one_and_update( {"user": msg.from_user.id, "completed": False}, {"$set": {"photo": msg.photo.file_id}} ) - await msg.reply_text(locale("spoiler_send_description", "message", locale=msg.from_user), reply_markup=ReplyKeyboardMarkup(locale("spoiler_description", "keyboard"), resize_keyboard=True, one_time_keyboard=True, placeholder=locale("spoiler_description", "force_reply", locale=msg.from_user))) - -@app.on_message(custom_filters.member & ~filters.scheduled & filters.private & filters.video) -async def handler_spoiler_video(app: Client, msg: Message): - - try: - holo_user = HoloUser(msg.from_user) - except (UserInvalidError, UserNotFoundError): - return - - if holo_user.application_state()[0] != "fill" and holo_user.sponsorship_state()[0] != "fill": - - if col_spoilers.find_one( {"user": msg.from_user.id, "completed": False} ) is None: - return - - col_spoilers.find_one_and_update( {"user": msg.from_user.id, "completed": False}, {"$set": {"video": msg.video.file_id}} ) - await msg.reply_text(locale("spoiler_send_description", "message", locale=msg.from_user), reply_markup=ReplyKeyboardMarkup(locale("spoiler_description", "keyboard"), resize_keyboard=True, one_time_keyboard=True, placeholder=locale("spoiler_description", "force_reply", locale=msg.from_user))) - -@app.on_message(custom_filters.member & ~filters.scheduled & filters.private & filters.animation) -async def handler_spoiler_animation(app: Client, msg: Message): - - try: - holo_user = HoloUser(msg.from_user) - except (UserInvalidError, UserNotFoundError): - return - - if holo_user.application_state()[0] != "fill" and holo_user.sponsorship_state()[0] != "fill": - - if col_spoilers.find_one( {"user": msg.from_user.id, "completed": False} ) is None: - return - - col_spoilers.find_one_and_update( {"user": msg.from_user.id, "completed": False}, {"$set": {"animation": msg.animation.file_id}} ) - await msg.reply_text(locale("spoiler_send_description", "message", locale=msg.from_user), reply_markup=ReplyKeyboardMarkup(locale("spoiler_description", "keyboard"), resize_keyboard=True, one_time_keyboard=True, placeholder=locale("spoiler_description", "force_reply", locale=msg.from_user))) \ No newline at end of file