46 lines
1.9 KiB
Python
46 lines
1.9 KiB
Python
from telegram.ext import CommandHandler, run_async
|
|
from bot.helper.telegram_helper.message_utils import *
|
|
from bot import download_dict, aria2, dispatcher, download_dict_lock, DOWNLOAD_DIR
|
|
from bot.helper.telegram_helper.filters import CustomFilters
|
|
from bot.helper.ext_utils.fs_utils import clean_download
|
|
from bot.helper.telegram_helper.bot_commands import BotCommands
|
|
|
|
@run_async
|
|
def cancel_mirror(update: Update, context):
|
|
mirror_message = update.message.reply_to_message
|
|
with download_dict_lock:
|
|
keys = download_dict.keys()
|
|
download = download_dict[mirror_message.message_id].download()
|
|
if mirror_message is None or mirror_message.message_id not in keys:
|
|
if '/mirror' in mirror_message.text or '/tarmirror' in mirror_message.text:
|
|
msg = 'Message has already been cancelled'
|
|
else:
|
|
msg = 'Please reply to the /mirror message which was used to start the download to cancel it!'
|
|
return
|
|
else:
|
|
msg = 'Download cancelled'
|
|
sendMessage(msg, context, update)
|
|
if len(download.followed_by_ids) != 0:
|
|
downloads = aria2.get_downloads(download.followed_by_ids)
|
|
aria2.pause(downloads)
|
|
aria2.pause([download])
|
|
clean_download(f'{DOWNLOAD_DIR}{mirror_message.message_id}/')
|
|
|
|
|
|
@run_async
|
|
def cancel_all(update, context):
|
|
aria2.pause_all(True)
|
|
with download_dict_lock:
|
|
download_dict.clear()
|
|
sendMessage('Cancelled all downloads!', context, update)
|
|
|
|
clean_download(DOWNLOAD_DIR)
|
|
|
|
|
|
cancel_mirror_handler = CommandHandler(BotCommands.CancelMirror, cancel_mirror,
|
|
filters=CustomFilters.authorized_chat | CustomFilters.authorized_user)
|
|
cancel_all_handler = CommandHandler(BotCommands.CancelAllCommand, cancel_all,
|
|
filters=CustomFilters.authorized_user | CustomFilters.authorized_chat)
|
|
dispatcher.add_handler(cancel_all_handler)
|
|
dispatcher.add_handler(cancel_mirror_handler)
|