diff --git a/misskaty/__init__.py b/misskaty/__init__.py index b564e379..6da92041 100644 --- a/misskaty/__init__.py +++ b/misskaty/__init__.py @@ -15,6 +15,7 @@ getLogger("pyrogram").setLevel(ERROR) MOD_LOAD = [] MOD_NOLOAD = [] HELPABLE = {} +DL_TASK = {} cleanmode = {} botStartTime = time.time() diff --git a/misskaty/plugins/genss.py b/misskaty/plugins/genss.py index 02b48b89..94c06372 100644 --- a/misskaty/plugins/genss.py +++ b/misskaty/plugins/genss.py @@ -8,14 +8,14 @@ import os import time import traceback -from asyncio import gather, sleep +from asyncio import gather, sleep, Lock from logging import getLogger from shutil import rmtree from pyrogram import enums, filters from pyrogram.errors import FloodWait -from misskaty import BOT_USERNAME, app +from misskaty import BOT_USERNAME, DL_TASK, app from misskaty.core.decorator.errors import capture_err from misskaty.helper.ffmpeg_helper import genss_link, take_ss from misskaty.helper.pyro_progress import progress_for_pyrogram @@ -41,9 +41,13 @@ async def genss(client, message): if media is None: return await message.reply("Reply to a Telegram Video or document as video to generate screenshoot!") process = await message.reply_text("`Processing, please wait..`") + if not DL_TASK.get(message.from_user.id): + DL_TASK[message.from_user.id] = Lock() + + if DL_TASK[message.from_user.id].locked(): + return await process.edit("Sorry to avoid flood and error, bot only process one task at a time.") c_time = time.time() - the_real_download_location = await client.download_media( - message=message.reply_to_message, + the_real_download_location = await replied.download( progress=progress_for_pyrogram, progress_args=("Trying to download, please wait..", process, c_time), ) @@ -82,6 +86,7 @@ async def genss(client, message): f"☑️ Uploaded [1] screenshoot.\n\n{message.from_user.first_name} ({message.from_user.id})\n#️⃣ #ssgen #id{message.from_user.id}\n\nSS Generate by @{BOT_USERNAME}", reply_to_message_id=message.id, ) + del DL_TASK[message.from_user.id] await process.delete() try: os.remove(images) @@ -91,6 +96,7 @@ async def genss(client, message): except Exception: exc = traceback.format_exc() await message.reply(f"Gagal generate screenshot.\n\n{exc}") + del DL_TASK[message.from_user.id] try: os.remove(images) os.remove(the_real_download_location) diff --git a/misskaty/plugins/mediainfo.py b/misskaty/plugins/mediainfo.py index 96aa57af..fe40a0d4 100644 --- a/misskaty/plugins/mediainfo.py +++ b/misskaty/plugins/mediainfo.py @@ -15,7 +15,7 @@ from pyrogram import filters from pyrogram.errors import FloodWait from pyrogram.types import InlineKeyboardButton, InlineKeyboardMarkup -from misskaty import app +from misskaty import app, DL_TASK from misskaty.helper.media_helper import post_to_telegraph, runcmd from misskaty.helper.pyro_progress import progress_for_pyrogram from misskaty.vars import COMMAND_HANDLER @@ -28,17 +28,18 @@ async def mediainfo(client, message): process = await message.reply_text("`Sedang memproses, lama waktu tergantung ukuran file kamu...`", quote=True) file_info = get_file_id(message.reply_to_message) if file_info is None: - await process.edit_text("Balas ke format media yang valid") - return + return await process.edit_text("Balas ke format media yang valid") + if not DL_TASK.get(message.from_user.id): + DL_TASK[message.from_user.id] = asyncio.Lock() + + if DL_TASK[message.from_user.id].locked(): + return await process.edit("Sorry to avoid flood and error, bot only process one task at a time.") + c_time = time.time() - try: - file_path = await client.download_media( - message=message.reply_to_message, - progress=progress_for_pyrogram, - progress_args=("trying to download, sabar yakk..", process, c_time), - ) - except Exception as err: - return await message.reply(f"Failed to download media. Err detail -> {err}") + file_path = await message.reply_to_message.download( + progress=progress_for_pyrogram, + progress_args=("trying to download, sabar yakk..", process, c_time), + ) output_ = await runcmd(f'mediainfo "{file_path}"') out = output_[0] if len(output_) != 0 else None body_text = f""" @@ -54,9 +55,10 @@ async def mediainfo(client, message): link = post_to_telegraph(title, body_text) markup = InlineKeyboardMarkup([[InlineKeyboardButton(text=text_, url=link)]]) try: - await message.reply("ℹ️ **MEDIA INFO**", reply_markup=markup, quote=True) + await message.reply("ℹ️ MEDIA INFO", reply_markup=markup, quote=True) except FloodWait as f: await asyncio.sleep(f.value) + del DL_TASK[message.from_user.id] await process.delete() try: osremove(file_path) diff --git a/misskaty/plugins/paste.py b/misskaty/plugins/paste.py index 582e89bf..491f58c3 100644 --- a/misskaty/plugins/paste.py +++ b/misskaty/plugins/paste.py @@ -71,7 +71,7 @@ async def wastepaste(_, message): if not reply and len(message.command) < 2: return await message.reply_text(f"**Reply To A Message With /{target} or with command**") - msg = await message.reply_text("`Pasting to Wastebin...`") + msg = await message.reply_text("`Pasting to YasirBin...`") data = "" limit = 1024 * 1024 if reply and reply.document: @@ -125,7 +125,7 @@ async def wastepaste(_, message): [InlineKeyboardButton("Share Link", url=f"https://telegram.me/share/url?url={url}")], ] - pasted = f"**Successfully pasted your data to Nekobin.\n\nPaste by {uname}**" + pasted = f"**Successfully pasted your data to YasirBin.\n\nPaste by {uname}**" await msg.edit(pasted, reply_markup=InlineKeyboardMarkup(button)) # Nekobin Paste