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