mirror of
https://github.com/zhenxun-org/zhenxun_bot.git
synced 2026-10-03 02:30:01 +08:00
modified: basic_plugins/admin_bot_manage/_data_source.py
modified: basic_plugins/admin_bot_manage/admin_config.py modified: basic_plugins/admin_bot_manage/custom_welcome_message.py modified: basic_plugins/admin_bot_manage/timing_task.py modified: basic_plugins/apscheduler/__init__.py modified: basic_plugins/ban/__init__.py modified: basic_plugins/ban/data_source.py modified: basic_plugins/chat_history/chat_message.py modified: basic_plugins/chat_history/chat_message_handle.py modified: basic_plugins/group_handle/__init__.py modified: basic_plugins/hooks/_utils.py modified: basic_plugins/hooks/ban_hook.py modified: basic_plugins/hooks/chkdsk_hook.py modified: basic_plugins/init_plugin_config/__init__.py deleted: basic_plugins/init_plugin_config/init_group_manager.py modified: basic_plugins/invite_manager/__init__.py new file: basic_plugins/invite_manager/utils.py modified: basic_plugins/nickname.py modified: basic_plugins/plugin_shop/__init__.py modified: basic_plugins/plugin_shop/data_source.py modified: basic_plugins/scripts.py modified: basic_plugins/shop/__init__.py modified: basic_plugins/shop/buy.py modified: basic_plugins/shop/gold.py modified: basic_plugins/shop/my_props/__init__.py deleted: basic_plugins/shop/reset_today_gold.py modified: basic_plugins/shop/shop_handle/__init__.py modified: basic_plugins/shop/shop_handle/data_source.py modified: basic_plugins/shop/use/__init__.py modified: basic_plugins/shop/use/data_source.py modified: basic_plugins/super_cmd/__init__.py modified: basic_plugins/super_cmd/bot_friend_group.py modified: basic_plugins/super_cmd/clear_data.py modified: basic_plugins/super_cmd/exec_sql.py modified: basic_plugins/super_cmd/manager_group.py modified: basic_plugins/super_cmd/reload_setting.py modified: basic_plugins/super_cmd/set_admin_permissions.py deleted: basic_plugins/super_cmd/super_task_switch.py modified: basic_plugins/super_cmd/update_friend_group_info.py modified: basic_plugins/super_help/__init__.py modified: basic_plugins/update_info.py modified: configs/config.py modified: configs/utils/__init__.py modified: models/bag_user.py modified: models/ban_user.py modified: models/chat_history.py modified: models/friend_user.py modified: models/goods_info.py modified: models/group_info.py modified: models/group_member_info.py modified: models/level_user.py modified: models/sign_group_user.py modified: models/user_shop_gold_log.py modified: plugins/aconfig/__init__.py modified: plugins/ai/__init__.py modified: plugins/ai/data_source.py modified: plugins/bilibili_sub/__init__.py modified: plugins/bilibili_sub/data_source.py modified: plugins/bilibili_sub/model.py modified: plugins/black_word/__init__.py modified: plugins/black_word/model.py modified: plugins/black_word/utils.py modified: plugins/bt/data_source.py modified: plugins/genshin/almanac/__init__.py modified: plugins/genshin/material_remind/__init__.py modified: plugins/genshin/query_user/_models/__init__.py modified: plugins/genshin/query_user/_utils/__init__.py modified: plugins/genshin/query_user/bind/__init__.py modified: plugins/genshin/query_user/genshin_sign/__init__.py modified: plugins/genshin/query_user/genshin_sign/data_source.py modified: plugins/genshin/query_user/genshin_sign/init_task.py modified: plugins/genshin/query_user/mihoyobbs_sign/__init__.py modified: plugins/genshin/query_user/query_memo/__init__.py modified: plugins/genshin/query_user/query_memo/data_source.py modified: plugins/genshin/query_user/query_role/__init__.py modified: plugins/genshin/query_user/query_role/data_source.py modified: plugins/genshin/query_user/reset_today_query_user_data/__init__.py modified: plugins/genshin/query_user/resin_remind/__init__.py modified: plugins/genshin/query_user/resin_remind/init_task.py modified: plugins/gold_redbag/model.py modified: plugins/image_management/send_image/__init__.py modified: plugins/my_info/__init__.py modified: plugins/open_cases/models/buff_prices.py modified: plugins/open_cases/models/open_cases_user.py modified: plugins/open_cases/open_cases_c.py modified: plugins/open_cases/utils.py modified: plugins/parse_bilibili_json.py modified: plugins/pid_search.py modified: plugins/pix_gallery/__init__.py modified: plugins/pix_gallery/_data_source.py modified: plugins/pix_gallery/_model/omega_pixiv_illusts.py modified: plugins/pix_gallery/_model/pixiv.py modified: plugins/pix_gallery/_model/pixiv_keyword_user.py modified: plugins/pix_gallery/pix_add_keyword.py modified: plugins/pix_gallery/pix_pass_del_keyword.py modified: plugins/pix_gallery/pix_show_info.py modified: plugins/pix_gallery/pix_update.py modified: plugins/pixiv_rank_search/data_source.py modified: plugins/poke/__init__.py modified: plugins/russian/__init__.py modified: plugins/russian/data_source.py modified: plugins/russian/model.py modified: plugins/send_dinggong_voice/__init__.py modified: plugins/send_setu_/_model.py modified: plugins/send_setu_/send_setu/__init__.py modified: plugins/send_setu_/send_setu/data_source.py modified: plugins/send_setu_/update_setu/data_source.py modified: plugins/sign_in/goods_register.py modified: plugins/sign_in/group_user_checkin.py modified: plugins/sign_in/random_event.py modified: plugins/sign_in/utils.py modified: plugins/statistics/_model.py modified: plugins/statistics/statistics_handle.py modified: plugins/statistics/statistics_hook.py modified: plugins/update_picture.py modified: plugins/web_ui/api/request.py modified: plugins/word_bank/_model.py deleted: plugins/word_bank/_old_model.py modified: plugins/word_bank/_rule.py modified: plugins/word_bank/word_handle.py modified: plugins/word_clouds/data_source.py modified: resources/image/sign/sign_res/bar.png modified: resources/image/sign/sign_res/bar_white.png modified: services/db_context.py modified: services/log.py modified: utils/browser.py modified: utils/data_utils.py modified: utils/depends/__init__.py modified: utils/http_utils.py modified: utils/image_utils.py modified: utils/manager/admin_manager.py modified: utils/message_builder.py modified: utils/utils.py
This commit is contained in:
+41
-47
@@ -1,46 +1,43 @@
|
||||
import io
|
||||
from pathlib import Path
|
||||
from typing import List, Union
|
||||
from typing import List, Optional, Union
|
||||
|
||||
from nonebot.adapters.onebot.v11.message import Message, MessageSegment
|
||||
|
||||
from configs.config import NICKNAME
|
||||
from configs.path_config import IMAGE_PATH, RECORD_PATH
|
||||
from nonebot.adapters.onebot.v11.message import MessageSegment, Message
|
||||
from services.log import logger
|
||||
from utils.image_utils import BuildImage
|
||||
|
||||
|
||||
def image(
|
||||
file: Union[str, Path, bytes] = None,
|
||||
path: str = None,
|
||||
b64: str = None,
|
||||
) -> Union[MessageSegment, str]:
|
||||
file: Optional[Union[str, Path, bytes, BuildImage, io.BytesIO]] = None,
|
||||
b64: Optional[str] = None,
|
||||
) -> MessageSegment:
|
||||
"""
|
||||
说明:
|
||||
生成一个 MessageSegment.image 消息
|
||||
生成顺序:绝对路径(abspath) > base64(b64) > img_name
|
||||
参数:
|
||||
:param file: 图片文件名称,默认在 resource/img 目录下
|
||||
:param path: 图片所在路径,默认在 resource/img 目录下
|
||||
:param b64: 图片base64
|
||||
:param file: 图片文件
|
||||
:param b64: 图片base64(兼容旧方法)
|
||||
"""
|
||||
if b64:
|
||||
file = b64 if b64.startswith("base64://") else ("base64://" + b64)
|
||||
if isinstance(file, str):
|
||||
if file.startswith(("http", "base64://")):
|
||||
return MessageSegment.image(file)
|
||||
else:
|
||||
return MessageSegment.image(IMAGE_PATH / file)
|
||||
if isinstance(file, Path):
|
||||
if file.exists():
|
||||
return MessageSegment.image(file)
|
||||
logger.warning(f"图片 {file.absolute()}缺失...")
|
||||
return ""
|
||||
elif isinstance(file, (bytes, io.BytesIO)):
|
||||
if isinstance(file, (bytes, io.BytesIO)):
|
||||
return MessageSegment.image(file)
|
||||
elif b64:
|
||||
return MessageSegment.image(b64 if "base64://" in b64 else "base64://" + b64)
|
||||
else:
|
||||
if file.startswith("http"):
|
||||
return MessageSegment.image(file)
|
||||
if len(file.split(".")) == 1:
|
||||
file += ".jpg"
|
||||
if (file := IMAGE_PATH / path / file if path else IMAGE_PATH / file).exists():
|
||||
return MessageSegment.image(file)
|
||||
else:
|
||||
logger.warning(f"图片 {file} 缺失...")
|
||||
return ""
|
||||
if isinstance(file, BuildImage):
|
||||
return MessageSegment.image(file.pic2bs4())
|
||||
return MessageSegment.image("")
|
||||
|
||||
|
||||
def at(qq: Union[int, str]) -> MessageSegment:
|
||||
@@ -53,29 +50,25 @@ def at(qq: Union[int, str]) -> MessageSegment:
|
||||
return MessageSegment.at(qq)
|
||||
|
||||
|
||||
def record(voice_name: str, path: str = None) -> MessageSegment or str:
|
||||
def record(file: Union[Path, str, bytes, io.BytesIO]) -> Union[MessageSegment, str]:
|
||||
"""
|
||||
说明:
|
||||
生成一个 MessageSegment.record 消息
|
||||
参数:
|
||||
:param voice_name: 音频文件名称,默认在 resource/voice 目录下
|
||||
:param path: 音频文件路径,默认在 resource/voice 目录下
|
||||
:param file: 音频文件名称,默认在 resource/voice 目录下
|
||||
"""
|
||||
if len(voice_name.split(".")) == 1:
|
||||
voice_name += ".mp3"
|
||||
file = (
|
||||
Path(RECORD_PATH) / path / voice_name
|
||||
if path
|
||||
else Path(RECORD_PATH) / voice_name
|
||||
)
|
||||
if "http" in voice_name:
|
||||
return MessageSegment.record(voice_name)
|
||||
if file.exists():
|
||||
result = MessageSegment.record(f"file:///{file.absolute()}")
|
||||
return result
|
||||
else:
|
||||
logger.warning(f"语音{file.absolute()}缺失...")
|
||||
return ""
|
||||
if isinstance(file, Path):
|
||||
if file.exists():
|
||||
return MessageSegment.record(file)
|
||||
logger.warning(f"音频 {file.absolute()}缺失...")
|
||||
if isinstance(file, (bytes, io.BytesIO)):
|
||||
return MessageSegment.record(file)
|
||||
if isinstance(file, str):
|
||||
if "http" in file:
|
||||
return MessageSegment.record(file)
|
||||
else:
|
||||
return MessageSegment.record(RECORD_PATH / file)
|
||||
return ""
|
||||
|
||||
|
||||
def text(msg: str) -> MessageSegment:
|
||||
@@ -99,7 +92,7 @@ def contact_user(qq: int) -> MessageSegment:
|
||||
|
||||
|
||||
def share(
|
||||
url: str, title: str, content: str = None, image_url: str = None
|
||||
url: str, title: str, content: Optional[str] = None, image_url: Optional[str] = None
|
||||
) -> MessageSegment:
|
||||
"""
|
||||
说明:
|
||||
@@ -158,7 +151,9 @@ def music(type_: str, id_: int) -> MessageSegment:
|
||||
|
||||
|
||||
def custom_forward_msg(
|
||||
msg_list: List[Union[str, Message]], uin: Union[int, str], name: str = f"这里是{NICKNAME}"
|
||||
msg_list: List[Union[str, Message]],
|
||||
uin: Union[int, str],
|
||||
name: str = f"这里是{NICKNAME}",
|
||||
) -> List[dict]:
|
||||
"""
|
||||
说明:
|
||||
@@ -202,11 +197,10 @@ class MessageBuilder:
|
||||
|
||||
def image(
|
||||
self,
|
||||
file: Union[str, Path, bytes] = None,
|
||||
path: str = None,
|
||||
b64: str = None,
|
||||
file: Optional[Union[str, Path, bytes]] = None,
|
||||
b64: Optional[str] = None,
|
||||
):
|
||||
return MessageBuilder(self._msg + image(file, path, b64))
|
||||
return MessageBuilder(self._msg + image(file, b64))
|
||||
|
||||
def at(self, qq: int):
|
||||
return MessageBuilder(self._msg + at(qq))
|
||||
|
||||
Reference in New Issue
Block a user