leech / bot /modules /force_start.py
dragxd's picture
Initial commit: Push project to Hugging Face
db78256
from .. import (
task_dict,
task_dict_lock,
user_data,
queued_up,
queued_dl,
queue_dict_lock,
)
from ..core.config_manager import Config
from ..helper.ext_utils.bot_utils import new_task
from ..helper.ext_utils.status_utils import get_task_by_gid
from ..helper.telegram_helper.bot_commands import BotCommands
from ..helper.telegram_helper.message_utils import send_message
from ..helper.ext_utils.task_manager import start_dl_from_queued, start_up_from_queued
@new_task
async def remove_from_queue(_, message):
user_id = (message.from_user or message.sender_chat).id
msg = message.text.split()
status = msg[1] if len(msg) > 1 and msg[1] in ["fd", "fu"] else ""
if status and len(msg) > 2 or not status and len(msg) > 1:
gid = msg[2] if status else msg[1]
task = await get_task_by_gid(gid)
if task is None:
await send_message(message, f"GID: <code>{gid}</code> Not Found.")
return
elif reply_to_id := message.reply_to_message_id:
async with task_dict_lock:
task = task_dict.get(reply_to_id)
if task is None:
await send_message(message, "This is not an active task!")
return
elif len(msg) in {1, 2}:
msg = f"""Reply to an active Command message which was used to start the download/upload.
<code>/{BotCommands.ForceStartCommand[0]}</code> fd (to remove it from download queue) or fu (to remove it from upload queue) or nothing to start remove it from both download and upload queue.
Also send <code>/{BotCommands.ForceStartCommand[0]} GID</code> fu|fd or obly gid to force start by removeing the task rom queue!
Examples:
<code>/{BotCommands.ForceStartCommand[1]}</code> GID fu (force upload)
<code>/{BotCommands.ForceStartCommand[1]}</code> GID (force download and upload)
By reply to task cmd:
<code>/{BotCommands.ForceStartCommand[1]}</code> (force download and upload)
<code>/{BotCommands.ForceStartCommand[1]}</code> fd (force download)
"""
await send_message(message, msg)
return
if (
Config.OWNER_ID != user_id
and task.listener.user_id != user_id
and (user_id not in user_data or not user_data[user_id].get("SUDO"))
):
await send_message(message, "This task is not for you!")
return
listener = task.listener
msg = ""
async with queue_dict_lock:
if status == "fu":
listener.force_upload = True
if listener.mid in queued_up:
await start_up_from_queued(listener.mid)
msg = "Task have been force started to upload!"
else:
msg = "Force upload enabled for this task!"
elif status == "fd":
listener.force_download = True
if listener.mid in queued_dl:
await start_dl_from_queued(listener.mid)
msg = "Task have been force started to download only!"
else:
msg = "This task not in download queue!"
else:
listener.force_download = True
listener.force_upload = True
if listener.mid in queued_up:
await start_up_from_queued(listener.mid)
msg = "Task have been force started to upload!"
elif listener.mid in queued_dl:
await start_dl_from_queued(listener.mid)
msg = "Task have been force started to download and upload will start once download finish!"
else:
msg = "This task not in queue!"
if msg:
await send_message(message, msg)