nonebot-plugin-jmdownloader 1.0.2__tar.gz → 1.0.4__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {nonebot_plugin_jmdownloader-1.0.2 → nonebot_plugin_jmdownloader-1.0.4}/PKG-INFO +1 -1
- {nonebot_plugin_jmdownloader-1.0.2 → nonebot_plugin_jmdownloader-1.0.4}/nonebot_plugin_jmdownloader/__init__.py +53 -49
- {nonebot_plugin_jmdownloader-1.0.2 → nonebot_plugin_jmdownloader-1.0.4}/nonebot_plugin_jmdownloader/utils.py +6 -4
- {nonebot_plugin_jmdownloader-1.0.2 → nonebot_plugin_jmdownloader-1.0.4}/nonebot_plugin_jmdownloader.egg-info/PKG-INFO +1 -1
- {nonebot_plugin_jmdownloader-1.0.2 → nonebot_plugin_jmdownloader-1.0.4}/pyproject.toml +1 -1
- {nonebot_plugin_jmdownloader-1.0.2 → nonebot_plugin_jmdownloader-1.0.4}/LICENSE +0 -0
- {nonebot_plugin_jmdownloader-1.0.2 → nonebot_plugin_jmdownloader-1.0.4}/README.md +0 -0
- {nonebot_plugin_jmdownloader-1.0.2 → nonebot_plugin_jmdownloader-1.0.4}/nonebot_plugin_jmdownloader/config.py +0 -0
- {nonebot_plugin_jmdownloader-1.0.2 → nonebot_plugin_jmdownloader-1.0.4}/nonebot_plugin_jmdownloader/data_source.py +0 -0
- {nonebot_plugin_jmdownloader-1.0.2 → nonebot_plugin_jmdownloader-1.0.4}/nonebot_plugin_jmdownloader.egg-info/SOURCES.txt +0 -0
- {nonebot_plugin_jmdownloader-1.0.2 → nonebot_plugin_jmdownloader-1.0.4}/nonebot_plugin_jmdownloader.egg-info/dependency_links.txt +0 -0
- {nonebot_plugin_jmdownloader-1.0.2 → nonebot_plugin_jmdownloader-1.0.4}/nonebot_plugin_jmdownloader.egg-info/requires.txt +0 -0
- {nonebot_plugin_jmdownloader-1.0.2 → nonebot_plugin_jmdownloader-1.0.4}/nonebot_plugin_jmdownloader.egg-info/top_level.txt +0 -0
- {nonebot_plugin_jmdownloader-1.0.2 → nonebot_plugin_jmdownloader-1.0.4}/setup.cfg +0 -0
|
@@ -13,7 +13,7 @@ from nonebot import logger, on_command, require, get_bot
|
|
|
13
13
|
from nonebot.adapters.onebot.v11 import (GROUP_ADMIN, GROUP_OWNER,
|
|
14
14
|
ActionFailed, Bot, GroupMessageEvent,
|
|
15
15
|
Message, MessageEvent, MessageSegment,
|
|
16
|
-
PrivateMessageEvent)
|
|
16
|
+
PrivateMessageEvent, NetworkError)
|
|
17
17
|
from nonebot.params import ArgPlainText, CommandArg
|
|
18
18
|
from nonebot.permission import SUPERUSER
|
|
19
19
|
from nonebot.plugin import PluginMetadata
|
|
@@ -61,11 +61,12 @@ jm_download = on_command("jm下载", aliases={"JM下载"}, block=True, rule=chec
|
|
|
61
61
|
async def _(bot: Bot, event: MessageEvent, arg: Message = CommandArg()):
|
|
62
62
|
photo_id = arg.extract_plain_text().strip()
|
|
63
63
|
user_id = event.user_id
|
|
64
|
+
is_superuser = str(user_id) in bot.config.superusers
|
|
64
65
|
|
|
65
66
|
if not photo_id.isdigit():
|
|
66
67
|
await jm_download.finish("请输入要下载的jm号")
|
|
67
68
|
|
|
68
|
-
if
|
|
69
|
+
if not is_superuser:
|
|
69
70
|
user_limit = data_manager.get_user_limit(user_id)
|
|
70
71
|
if user_limit <= 0:
|
|
71
72
|
await jm_download.finish(MessageSegment.at(user_id) + f"你的下载次数已经用完了!")
|
|
@@ -79,18 +80,24 @@ async def _(bot: Bot, event: MessageEvent, arg: Message = CommandArg()):
|
|
|
79
80
|
await jm_download.finish("查询时发生错误")
|
|
80
81
|
|
|
81
82
|
if data_manager.is_jm_id_restricted(photo.id) or data_manager.has_restricted_tag(photo.tags):
|
|
83
|
+
|
|
82
84
|
if isinstance(event, GroupMessageEvent):
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
85
|
+
if not is_superuser:
|
|
86
|
+
try:
|
|
87
|
+
await bot.set_group_ban(group_id=event.group_id, user_id=user_id, duration=86400)
|
|
88
|
+
except ActionFailed:
|
|
89
|
+
pass
|
|
90
|
+
data_manager.add_blacklist(event.group_id, user_id)
|
|
91
|
+
await jm_download.finish(MessageSegment.at(user_id) + "该本子(或其tag)被禁止下载!你已被加入本群jm黑名单")
|
|
92
|
+
|
|
93
|
+
else:
|
|
94
|
+
await jm_download.finish("该本子(或其tag)被禁止下载!")
|
|
95
|
+
|
|
89
96
|
else:
|
|
90
97
|
await jm_download.finish("该本子(或其tag)被禁止下载!")
|
|
91
98
|
|
|
92
99
|
try:
|
|
93
|
-
if
|
|
100
|
+
if not is_superuser:
|
|
94
101
|
data_manager.decrease_user_limit(user_id, 1)
|
|
95
102
|
user_limit_new = data_manager.get_user_limit(user_id)
|
|
96
103
|
message = Message()
|
|
@@ -108,15 +115,17 @@ async def _(bot: Bot, event: MessageEvent, arg: Message = CommandArg()):
|
|
|
108
115
|
await jm_download.send(message)
|
|
109
116
|
except ActionFailed:
|
|
110
117
|
await jm_download.send("本子信息可能被屏蔽,已开始下载")
|
|
118
|
+
except NetworkError as e:
|
|
119
|
+
logger.warning(f"{e},可能是协议端发送文件时间太长导致的报错")
|
|
111
120
|
|
|
112
|
-
|
|
113
|
-
pdf_path = f"{cache_dir}/{photo.id}.pdf"
|
|
121
|
+
pdf_path = f"{cache_dir}/{photo.id}.pdf"
|
|
114
122
|
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
123
|
+
# 如果不存在,则下载
|
|
124
|
+
if not os.path.exists(pdf_path):
|
|
125
|
+
if not await download_photo_async(downloader, photo):
|
|
126
|
+
await jm_download.finish("下载失败")
|
|
119
127
|
|
|
128
|
+
try:
|
|
120
129
|
# 根据配置决定是否需要修改MD5
|
|
121
130
|
if plugin_config.jmcomic_modify_real_md5:
|
|
122
131
|
random_suffix = hashlib.md5(str(time.time() + random.random()).encode()).hexdigest()[:8]
|
|
@@ -125,41 +134,41 @@ async def _(bot: Bot, event: MessageEvent, arg: Message = CommandArg()):
|
|
|
125
134
|
modified = await asyncio.to_thread(modify_pdf_md5, pdf_path, renamed_pdf_path)
|
|
126
135
|
if modified:
|
|
127
136
|
pdf_path = renamed_pdf_path
|
|
137
|
+
except Exception as e:
|
|
138
|
+
logger.error(f"处理PDF文件时出错: {e}")
|
|
139
|
+
await jm_download.finish("处理文件失败")
|
|
128
140
|
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
await bot.call_api(
|
|
135
|
-
"upload_group_file",
|
|
136
|
-
group_id=event.group_id,
|
|
137
|
-
file=pdf_path,
|
|
138
|
-
name=f"{photo.id}.pdf",
|
|
139
|
-
folder_id=folder_id
|
|
140
|
-
)
|
|
141
|
-
else:
|
|
142
|
-
await bot.call_api(
|
|
143
|
-
"upload_group_file",
|
|
144
|
-
group_id=event.group_id,
|
|
145
|
-
file=pdf_path,
|
|
146
|
-
name=f"{photo.id}.pdf"
|
|
147
|
-
)
|
|
148
|
-
|
|
149
|
-
elif isinstance(event, PrivateMessageEvent):
|
|
141
|
+
try:
|
|
142
|
+
if isinstance(event, GroupMessageEvent):
|
|
143
|
+
folder_id = data_manager.get_group_folder_id(event.group_id)
|
|
144
|
+
|
|
145
|
+
if folder_id:
|
|
150
146
|
await bot.call_api(
|
|
151
|
-
"
|
|
152
|
-
|
|
147
|
+
"upload_group_file",
|
|
148
|
+
group_id=event.group_id,
|
|
149
|
+
file=pdf_path,
|
|
150
|
+
name=f"{photo.id}.pdf",
|
|
151
|
+
folder_id=folder_id
|
|
152
|
+
)
|
|
153
|
+
else:
|
|
154
|
+
await bot.call_api(
|
|
155
|
+
"upload_group_file",
|
|
156
|
+
group_id=event.group_id,
|
|
153
157
|
file=pdf_path,
|
|
154
158
|
name=f"{photo.id}.pdf"
|
|
155
159
|
)
|
|
156
160
|
|
|
157
|
-
|
|
158
|
-
await
|
|
161
|
+
elif isinstance(event, PrivateMessageEvent):
|
|
162
|
+
await bot.call_api(
|
|
163
|
+
"upload_private_file",
|
|
164
|
+
user_id=event.user_id,
|
|
165
|
+
file=pdf_path,
|
|
166
|
+
name=f"{photo.id}.pdf"
|
|
167
|
+
)
|
|
168
|
+
|
|
169
|
+
except ActionFailed:
|
|
170
|
+
await jm_download.send("发送文件失败")
|
|
159
171
|
|
|
160
|
-
except Exception as e:
|
|
161
|
-
logger.error(f"处理PDF文件时出错: {e}")
|
|
162
|
-
await jm_download.send("处理文件失败")
|
|
163
172
|
|
|
164
173
|
|
|
165
174
|
jm_query = on_command("jm查询", aliases={"JM查询"}, block=True, rule=check_group_and_user)
|
|
@@ -413,9 +422,6 @@ async def _(bot: Bot, event: GroupMessageEvent, arg: Message = CommandArg()):
|
|
|
413
422
|
group_id = event.group_id
|
|
414
423
|
operator_id = event.user_id
|
|
415
424
|
|
|
416
|
-
if user_id == operator_id:
|
|
417
|
-
await jm_ban_user.finish("你拉黑你自己?")
|
|
418
|
-
|
|
419
425
|
has_permission = await check_permission(bot, group_id, operator_id, user_id)
|
|
420
426
|
if not has_permission:
|
|
421
427
|
await jm_unban_user.finish("权限不足")
|
|
@@ -438,9 +444,6 @@ async def handle_jm_unban_user(bot: Bot, event: GroupMessageEvent, arg: Message
|
|
|
438
444
|
group_id = event.group_id
|
|
439
445
|
operator_id = event.user_id
|
|
440
446
|
|
|
441
|
-
if user_id == operator_id:
|
|
442
|
-
await jm_ban_user.finish("想都别想!")
|
|
443
|
-
|
|
444
447
|
has_permission = await check_permission(bot, group_id, operator_id, user_id)
|
|
445
448
|
if not has_permission:
|
|
446
449
|
await jm_unban_user.finish("权限不足")
|
|
@@ -607,6 +610,7 @@ async def clear_cache_dir():
|
|
|
607
610
|
except Exception as e:
|
|
608
611
|
logger.error(f"清理缓存目录失败:{e}")
|
|
609
612
|
|
|
613
|
+
|
|
610
614
|
@scheduler.scheduled_job("interval", minutes=10)
|
|
611
615
|
async def clean_expired_search_states():
|
|
612
616
|
""" 定期清理过期的搜索状态 """
|
|
@@ -128,7 +128,7 @@ async def send_forward_message(bot: Bot, event: MessageEvent, messages: list):
|
|
|
128
128
|
|
|
129
129
|
#region 权限相关
|
|
130
130
|
async def check_permission(bot: Bot, group_id: int, operator_id: int, target_id: int) -> bool:
|
|
131
|
-
"""
|
|
131
|
+
"""增减群黑名单权限检查,群主和超管拥有所有权限,管理员只能操作普通成员"""
|
|
132
132
|
if str(operator_id) in bot.config.superusers:
|
|
133
133
|
return True
|
|
134
134
|
|
|
@@ -142,10 +142,12 @@ async def check_permission(bot: Bot, group_id: int, operator_id: int, target_id:
|
|
|
142
142
|
if operator_role == "owner":
|
|
143
143
|
return True
|
|
144
144
|
|
|
145
|
-
if operator_role == "admin"
|
|
146
|
-
|
|
145
|
+
if operator_role == "admin":
|
|
146
|
+
if target_role not in ["admin", "owner"]:
|
|
147
|
+
return True
|
|
148
|
+
|
|
149
|
+
return False
|
|
147
150
|
|
|
148
|
-
return True
|
|
149
151
|
except ActionFailed as e:
|
|
150
152
|
logger.error(f"无法获取群成员信息:{e}")
|
|
151
153
|
return False
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|