mirror of
https://github.com/TeamPGM/PagerMaid_Plugins_Pyro.git
synced 2024-11-16 08:59:00 +00:00
transfer 上传 / 下载文件 (#126)
This commit is contained in:
parent
e03ae4cb50
commit
5aeaedd646
9
transfer/DES.md
Normal file
9
transfer/DES.md
Normal file
@ -0,0 +1,9 @@
|
||||
# 上传 vps 文件到 tg
|
||||
|
||||
`,transfer upload /root/1.mp4`
|
||||
|
||||
# 下载 tg 文件到 vps
|
||||
|
||||
回复文件
|
||||
|
||||
`,transfer download /root/1.mp4`
|
65
transfer/main.py
Normal file
65
transfer/main.py
Normal file
@ -0,0 +1,65 @@
|
||||
import zipfile
|
||||
import os
|
||||
from os.path import exists, isfile
|
||||
|
||||
from pagermaid.enums import Client, Message
|
||||
from pagermaid.listener import listener
|
||||
|
||||
|
||||
async def make_zip(source_dir, output_filename):
|
||||
zipf = zipfile.ZipFile(output_filename, "w")
|
||||
pre_len = len(os.path.dirname(source_dir))
|
||||
for parent, dirnames, filenames in os.walk(source_dir):
|
||||
for filename in filenames:
|
||||
pathfile = os.path.join(parent, filename)
|
||||
arcname = pathfile[pre_len:].strip(os.path.sep)
|
||||
zipf.write(pathfile, arcname)
|
||||
zipf.close()
|
||||
|
||||
|
||||
@listener(command="transfer",
|
||||
description="上传 / 下载文件",
|
||||
parameters="upload [filepath]` 或 `download [filepath]")
|
||||
async def transfer(bot: Client, message: Message):
|
||||
params = message.parameter
|
||||
if len(params) < 2:
|
||||
message: Message = await message.edit("参数缺失,请使用 `upload [filepath]` 或 `download [filepath]`")
|
||||
await message.delay_delete(3)
|
||||
return
|
||||
params[1] = " ".join(params[1:])
|
||||
file_list = params[1].split("\n")
|
||||
chat_id = message.chat.id
|
||||
if params[0] == "upload":
|
||||
index = 1
|
||||
for file_path in file_list:
|
||||
message: Message = await message.edit(f"正在上传第 {index} 个文件")
|
||||
if exists(file_path):
|
||||
if isfile(file_path):
|
||||
await bot.send_document(chat_id, file_path, force_document=True)
|
||||
else:
|
||||
token = file_path.split("/")
|
||||
token = token[len(token) - 1]
|
||||
await make_zip(file_path, f"/tmp/{token}.zip")
|
||||
await bot.send_document(chat_id, f"/tmp/{token}.zip", force_document=True)
|
||||
os.remove(f"/tmp/{token}.zip")
|
||||
index += 1
|
||||
message: Message = await message.edit("上传完毕")
|
||||
elif params[0] == "download":
|
||||
if reply := message.reply_to_message:
|
||||
message: Message = await message.edit('无法下载此类型的文件。')
|
||||
try:
|
||||
_file = await reply.download(in_memory=True)
|
||||
except Exception:
|
||||
await message.edit('无法下载此类型的文件。')
|
||||
return
|
||||
if not exists(file_list[0]):
|
||||
with open(file_list[0], "wb") as f:
|
||||
f.write(_file.getvalue())
|
||||
message: Message = await message.edit(f"保存成功, 保存路径 `{file_list[0]}`")
|
||||
else:
|
||||
message: Message = await message.edit("路径已存在文件")
|
||||
else:
|
||||
message: Message = await message.edit("未回复消息或回复消息中不包含文件")
|
||||
else:
|
||||
message: Message = await message.edit("未知命令,请使用 `upload [filepath]` 或 `download [filepath]`")
|
||||
await message.delay_delete(3)
|
Loading…
Reference in New Issue
Block a user