Merge branch 'debug' of github.com:SengokuCola/MaiMBot into contrib

This commit is contained in:
Naptie
2025-03-11 23:45:56 +08:00
4 changed files with 24 additions and 2 deletions

2
bot.py
View File

@@ -63,7 +63,7 @@ def init_env():
# 首先加载基础环境变量.env # 首先加载基础环境变量.env
if os.path.exists(".env"): if os.path.exists(".env"):
load_dotenv(".env") load_dotenv(".env",override=True)
logger.success("成功加载基础环境变量配置") logger.success("成功加载基础环境变量配置")

View File

@@ -21,6 +21,7 @@
buildInputs = [ buildInputs = [
pythonPackages.python pythonPackages.python
pythonPackages.venvShellHook pythonPackages.venvShellHook
pythonPackages.numpy
]; ];
postVenvCreation = '' postVenvCreation = ''

View File

@@ -1,4 +1,7 @@
import time import time
import html
import re
import json
from dataclasses import dataclass from dataclasses import dataclass
from typing import Dict, ForwardRef, List, Optional, Union from typing import Dict, ForwardRef, List, Optional, Union
@@ -69,6 +72,20 @@ class MessageRecv(Message):
message_dict: MessageCQ序列化后的字典 message_dict: MessageCQ序列化后的字典
""" """
self.message_info = BaseMessageInfo.from_dict(message_dict.get('message_info', {})) self.message_info = BaseMessageInfo.from_dict(message_dict.get('message_info', {}))
message_segment = message_dict.get('message_segment', {})
if message_segment.get('data','') == '[json]':
# 提取json消息中的展示信息
pattern = r'\[CQ:json,data=(?P<json_data>.+?)\]'
match = re.search(pattern, message_dict.get('raw_message',''))
raw_json = html.unescape(match.group('json_data'))
try:
json_message = json.loads(raw_json)
except json.JSONDecodeError:
json_message = {}
message_segment['data'] = json_message.get('prompt','')
self.message_segment = Seg.from_dict(message_dict.get('message_segment', {})) self.message_segment = Seg.from_dict(message_dict.get('message_segment', {}))
self.raw_message = message_dict.get('raw_message') self.raw_message = message_dict.get('raw_message')

View File

@@ -39,9 +39,13 @@ def db_message_to_str(message_dict: Dict) -> str:
def is_mentioned_bot_in_message(message: MessageRecv) -> bool: def is_mentioned_bot_in_message(message: MessageRecv) -> bool:
"""检查消息是否提到了机器人""" """检查消息是否提到了机器人"""
keywords = [global_config.BOT_NICKNAME] keywords = [global_config.BOT_NICKNAME]
nicknames = global_config.BOT_ALIAS_NAMES
for keyword in keywords: for keyword in keywords:
if keyword in message.processed_plain_text: if keyword in message.processed_plain_text:
return True return True
for nickname in nicknames:
if nickname in message.processed_plain_text:
return True
return False return False