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.
Files changed (14) hide show
  1. {nonebot_plugin_jmdownloader-1.0.2 → nonebot_plugin_jmdownloader-1.0.4}/PKG-INFO +1 -1
  2. {nonebot_plugin_jmdownloader-1.0.2 → nonebot_plugin_jmdownloader-1.0.4}/nonebot_plugin_jmdownloader/__init__.py +53 -49
  3. {nonebot_plugin_jmdownloader-1.0.2 → nonebot_plugin_jmdownloader-1.0.4}/nonebot_plugin_jmdownloader/utils.py +6 -4
  4. {nonebot_plugin_jmdownloader-1.0.2 → nonebot_plugin_jmdownloader-1.0.4}/nonebot_plugin_jmdownloader.egg-info/PKG-INFO +1 -1
  5. {nonebot_plugin_jmdownloader-1.0.2 → nonebot_plugin_jmdownloader-1.0.4}/pyproject.toml +1 -1
  6. {nonebot_plugin_jmdownloader-1.0.2 → nonebot_plugin_jmdownloader-1.0.4}/LICENSE +0 -0
  7. {nonebot_plugin_jmdownloader-1.0.2 → nonebot_plugin_jmdownloader-1.0.4}/README.md +0 -0
  8. {nonebot_plugin_jmdownloader-1.0.2 → nonebot_plugin_jmdownloader-1.0.4}/nonebot_plugin_jmdownloader/config.py +0 -0
  9. {nonebot_plugin_jmdownloader-1.0.2 → nonebot_plugin_jmdownloader-1.0.4}/nonebot_plugin_jmdownloader/data_source.py +0 -0
  10. {nonebot_plugin_jmdownloader-1.0.2 → nonebot_plugin_jmdownloader-1.0.4}/nonebot_plugin_jmdownloader.egg-info/SOURCES.txt +0 -0
  11. {nonebot_plugin_jmdownloader-1.0.2 → nonebot_plugin_jmdownloader-1.0.4}/nonebot_plugin_jmdownloader.egg-info/dependency_links.txt +0 -0
  12. {nonebot_plugin_jmdownloader-1.0.2 → nonebot_plugin_jmdownloader-1.0.4}/nonebot_plugin_jmdownloader.egg-info/requires.txt +0 -0
  13. {nonebot_plugin_jmdownloader-1.0.2 → nonebot_plugin_jmdownloader-1.0.4}/nonebot_plugin_jmdownloader.egg-info/top_level.txt +0 -0
  14. {nonebot_plugin_jmdownloader-1.0.2 → nonebot_plugin_jmdownloader-1.0.4}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: nonebot-plugin-jmdownloader
3
- Version: 1.0.2
3
+ Version: 1.0.4
4
4
  Summary: 基于 Nonebot2 的 JMComic 插件
5
5
  Author-email: Misty02600 <xiao02600@gmail.com>
6
6
  Project-URL: Repository, https://github.com/Misty02600/nonebot-plugin-jmdownloader
@@ -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 str(user_id) not in bot.config.superusers:
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
- try:
84
- await bot.set_group_ban(group_id=event.group_id, user_id=user_id, duration=86400)
85
- except ActionFailed:
86
- pass
87
- data_manager.add_blacklist(event.group_id, user_id)
88
- await jm_download.finish(MessageSegment.at(user_id) + "该本子(或其tag)被禁止下载!你已被加入本群jm黑名单")
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 str(user_id) not in bot.config.superusers:
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
- try:
113
- pdf_path = f"{cache_dir}/{photo.id}.pdf"
121
+ pdf_path = f"{cache_dir}/{photo.id}.pdf"
114
122
 
115
- # 如果不存在,则下载
116
- if not os.path.exists(pdf_path):
117
- if not await download_photo_async(downloader, photo):
118
- await jm_download.finish("下载失败")
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
- try:
130
- if isinstance(event, GroupMessageEvent):
131
- folder_id = data_manager.get_group_folder_id(event.group_id)
132
-
133
- if folder_id:
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
- "upload_private_file",
152
- user_id=event.user_id,
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
- except ActionFailed:
158
- await jm_download.send("发送文件失败")
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" and target_role in ["admin", "owner"]:
146
- return False
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
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: nonebot-plugin-jmdownloader
3
- Version: 1.0.2
3
+ Version: 1.0.4
4
4
  Summary: 基于 Nonebot2 的 JMComic 插件
5
5
  Author-email: Misty02600 <xiao02600@gmail.com>
6
6
  Project-URL: Repository, https://github.com/Misty02600/nonebot-plugin-jmdownloader
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "nonebot-plugin-jmdownloader"
3
- version = "1.0.2"
3
+ version = "1.0.4"
4
4
  description = "基于 Nonebot2 的 JMComic 插件"
5
5
  readme = "README.md"
6
6
  authors = [{ name = "Misty02600", email = "xiao02600@gmail.com" }]