diff --git a/.vscode/settings.json b/.vscode/settings.json deleted file mode 100644 index 05895497..00000000 --- a/.vscode/settings.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "githubPullRequests.ignoredPullRequestBranches": [ - "master" - ] -} \ No newline at end of file diff --git a/misskaty/core/decorator/__init__.py b/misskaty/core/decorator/__init__.py new file mode 100644 index 00000000..364bd068 --- /dev/null +++ b/misskaty/core/decorator/__init__.py @@ -0,0 +1,3 @@ +from .errors import * +from .misc import * +from .permissions import * \ No newline at end of file diff --git a/misskaty/core/decorator/errors.py b/misskaty/core/decorator/errors.py index 2fc1c62a..26d92d19 100644 --- a/misskaty/core/decorator/errors.py +++ b/misskaty/core/decorator/errors.py @@ -9,15 +9,6 @@ from misskaty import app from misskaty.vars import LOG_CHANNEL -def asyncify(func): - async def inner(*args, **kwargs): - loop = asyncio.get_running_loop() - func_out = await loop.run_in_executor(None, func, *args, **kwargs) - return func_out - - return inner - - def split_limits(text): if len(text) < 2048: return [text] diff --git a/misskaty/core/decorator/misc.py b/misskaty/core/decorator/misc.py new file mode 100644 index 00000000..bea28b1b --- /dev/null +++ b/misskaty/core/decorator/misc.py @@ -0,0 +1,20 @@ +import asyncio + +loop = asyncio.get_running_loop() + +def asyncify(func): + async def inner(*args, **kwargs): + func_out = await loop.run_in_executor(None, func, *args, **kwargs) + return func_out + + return inner + +def new_task(func): + @wraps(func) + def wrapper(*args, **kwargs): + try: + return loop.create_task(func(*args, **kwargs)) + except Exception as e: + LOGGER.error(f"Failed to create task for {func.__name__} : {e}") + + return wrapper \ No newline at end of file diff --git a/misskaty/plugins/download_upload.py b/misskaty/plugins/download_upload.py index c431b968..67cb3d0e 100644 --- a/misskaty/plugins/download_upload.py +++ b/misskaty/plugins/download_upload.py @@ -11,7 +11,7 @@ from pyrogram.types import InlineKeyboardButton, InlineKeyboardMarkup from pySmartDL import SmartDL from misskaty import app -from misskaty.core.decorator.errors import capture_err +from misskaty.core.decorator import capture_err, new_task from misskaty.core.decorator.ratelimiter import ratelimiter from misskaty.helper.http import http from misskaty.helper.pyro_progress import humanbytes, progress_for_pyrogram @@ -63,6 +63,7 @@ async def upload(bot, message): @app.on_message(filters.command(["download"], COMMAND_HANDLER) & filters.user(SUDO)) @capture_err +@new_task async def download(client, message): pesan = await message.reply_text("Processing...", quote=True) if message.reply_to_message is not None: diff --git a/misskaty/plugins/grup_tools.py b/misskaty/plugins/grup_tools.py index 8266ccce..354a0558 100644 --- a/misskaty/plugins/grup_tools.py +++ b/misskaty/plugins/grup_tools.py @@ -12,7 +12,7 @@ from pyrogram.types import ChatMemberUpdated, InlineKeyboardButton, InlineKeyboa from database.users_chats_db import db from misskaty import BOT_USERNAME, app from misskaty.core.decorator.ratelimiter import ratelimiter -from misskaty.core.decorator.errors import asyncify, capture_err +from misskaty.core.decorator import asyncify, capture_err from misskaty.helper.http import http from misskaty.helper.localization import use_chat_lang from misskaty.vars import COMMAND_HANDLER, LOG_CHANNEL, SUDO, SUPPORT_CHAT