Merge pull request #1 from 4amparaboy/master

add delete command
This commit is contained in:
Hafitz Setya 2021-02-13 19:16:34 +07:00 committed by GitHub
commit 646cbbf392
Signed by untrusted user: GitHub
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 65 additions and 12 deletions

View File

@ -14,7 +14,7 @@ from bot.helper.telegram_helper.bot_commands import BotCommands
from bot.helper.telegram_helper.message_utils import *
from .helper.ext_utils.bot_utils import get_readable_file_size, get_readable_time
from .helper.telegram_helper.filters import CustomFilters
from .modules import authorize, list, cancel_mirror, mirror_status, mirror, clone, watch, shell, eval, anime, stickers, search
from .modules import authorize, list, cancel_mirror, mirror_status, mirror, clone, watch, shell, eval, anime, stickers, search, delete
@run_async

View File

@ -34,7 +34,7 @@ class GoogleDriveHelper:
# Redirect URI for installed apps, can be left as is
self.__REDIRECT_URI = "urn:ietf:wg:oauth:2.0:oob"
self.__G_DRIVE_DIR_MIME_TYPE = "application/vnd.google-apps.folder"
self.__G_DRIVE_BASE_DOWNLOAD_URL = "https://drive.google.com/uc?id={}&export=download"
self.__G_DRIVE_BASE_DOWNLOAD_URL = "https://drive.google.com/file/d/{}/view" #Default https://drive.google.com/uc?id={}&export=download
self.__G_DRIVE_DIR_BASE_DOWNLOAD_URL = "https://drive.google.com/drive/folders/{}"
self.__listener = listener
self.__service = self.authorize()
@ -100,6 +100,24 @@ class GoogleDriveHelper:
file_metadata['parents'] = [parent_id]
return self.__service.files().create(supportsTeamDrives=True,
body=file_metadata, media_body=media_body).execute()
def deletefile(self, link: str):
try:
file_id = self.getIdFromUrl(link)
except (KeyError,IndexError):
msg = "Google drive ID could not be found in the provided link"
return msg
msg = ''
try:
res = self.__service.files().delete(fileId=file_id, supportsTeamDrives=IS_TEAM_DRIVE).execute()
msg = "File/Folder Sukses Terhapus 🗑️"
except HttpError as err:
LOGGER.error(str(err))
if "File not found" in str(err):
msg = "No such file exist"
else:
msg = "Something went wrong check log"
finally:
return msg
def switchServiceAccount(self):
global SERVICE_ACCOUNT_INDEX
@ -407,15 +425,8 @@ class GoogleDriveHelper:
scopes=self.__OAUTH_SCOPE)
return build('drive', 'v3', credentials=credentials, cache_discovery=False)
def escapes(self, str):
chars = ['\\', "'", '"', r'\a', r'\b', r'\f', r'\n', r'\r', r'\t']
for char in chars:
str = str.replace(char, '\\'+char)
return str
def drive_list(self, fileName):
msg = ""
fileName = self.escapes(str(fileName))
# Create Search Query for API request.
query = f"'{parent_id}' in parents and (name contains '{fileName}')"
response = self.__service.files().list(supportsTeamDrives=True,

View File

@ -18,5 +18,6 @@ class _BotCommands:
self.CloneCommand = "clone"
self.WatchCommand = 'watch'
self.TarWatchCommand = 'tarwatch'
self.DeleteCommand = 'delete'
BotCommands = _BotCommands()

View File

@ -9,16 +9,28 @@ from bot import dispatcher
@new_thread
def cloneNode(update,context):
if update.message.from_user.last_name:
last_name = f" {update.message.from_user.last_name}"
else:
last_name = ""
if update.message.from_user.username:
username = f"- @{update.message.from_user.username}"
else:
username = "-"
name = f'<a href="tg://user?id={update.message.from_user.id}">{update.message.from_user.first_name}{last_name}</a>'
args = update.message.text.split(" ",maxsplit=1)
if len(args) > 1:
link = args[1]
msg = sendMessage(f"Cloning: <code>{link}</code>",context.bot,update)
msg = f'👥 User: {username} (<code>{update.message.from_user.id}</code>)\n' \
f'💬 Message: <a href="{update.message.text}">{update.message.text}</a>'
sendMessage(msg, context.bot, update)
gd = GoogleDriveHelper()
result = gd.clone(link)
deleteMessage(context.bot,msg)
# deleteMessage(context.bot,msg)
sendMessage(result,context.bot,update)
else:
sendMessage("Provide G-Drive Shareable Link to Clone.",context.bot,update)
clone_handler = CommandHandler(BotCommands.CloneCommand,cloneNode,filters=CustomFilters.authorized_chat | CustomFilters.authorized_user)
dispatcher.add_handler(clone_handler)
dispatcher.add_handler(clone_handler)

29
bot/modules/delete.py Normal file
View File

@ -0,0 +1,29 @@
from telegram.ext import CommandHandler, run_async
import threading
from telegram import Update
from bot import dispatcher, LOGGER
from bot.helper.telegram_helper.message_utils import auto_delete_message, sendMessage
from bot.helper.telegram_helper.filters import CustomFilters
from bot.helper.telegram_helper.bot_commands import BotCommands
from bot.helper.mirror_utils.upload_utils import gdriveTools
@run_async
def deletefile(update, context):
msg_args = update.message.text.split(None, 1)
msg = ''
try:
link = msg_args[1]
LOGGER.info(msg_args[1])
except IndexError:
msg = 'send a link along with command'
if msg == '' :
drive = gdriveTools.GoogleDriveHelper()
msg = drive.deletefile(link)
LOGGER.info(f"DeleteFileCmd : {msg}")
reply_message = sendMessage(msg, context.bot, update)
threading.Thread(target=auto_delete_message, args=(context.bot, update.message, reply_message)).start()
delete_handler = CommandHandler(command=BotCommands.DeleteCommand, callback=deletefile, filters=CustomFilters.owner_filter)
dispatcher.add_handler(delete_handler)