One task per user

This commit is contained in:
yasir 2023-01-28 11:27:33 +07:00
parent 10a76f2049
commit 096bcb6931
4 changed files with 27 additions and 18 deletions

View file

@ -15,6 +15,7 @@ getLogger("pyrogram").setLevel(ERROR)
MOD_LOAD = []
MOD_NOLOAD = []
HELPABLE = {}
DL_TASK = {}
cleanmode = {}
botStartTime = time.time()

View file

@ -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} (<code>{message.from_user.id}</code>)\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)

View file

@ -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,
file_path = await message.reply_to_message.download(
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}")
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(" <b>MEDIA INFO</b>", 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)

View file

@ -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<a href='{url}'>.</a>\n\nPaste by {uname}**"
pasted = f"**Successfully pasted your data to YasirBin<a href='{url}'>.</a>\n\nPaste by {uname}**"
await msg.edit(pasted, reply_markup=InlineKeyboardMarkup(button))
# Nekobin Paste