mirror of
https://github.com/zhenxun-org/zhenxun_bot.git
synced 2025-12-15 14:22:55 +08:00
使用check构造的problem而不在message_handle中重新构造
This commit is contained in:
parent
27e97214bd
commit
7ae883d921
@ -3,6 +3,7 @@ from PIL import Image
|
|||||||
from io import BytesIO
|
from io import BytesIO
|
||||||
from httpx import TimeoutException
|
from httpx import TimeoutException
|
||||||
|
|
||||||
|
from nonebot.typing import T_State
|
||||||
from nonebot.adapters.onebot.v11 import MessageEvent
|
from nonebot.adapters.onebot.v11 import MessageEvent
|
||||||
|
|
||||||
from utils.utils import get_message_text, get_message_img, get_message_at
|
from utils.utils import get_message_text, get_message_img, get_message_at
|
||||||
@ -10,7 +11,7 @@ from ._model import WordBank
|
|||||||
from utils.http_utils import AsyncHttpx
|
from utils.http_utils import AsyncHttpx
|
||||||
|
|
||||||
|
|
||||||
async def check(event: MessageEvent) -> bool:
|
async def check(event: MessageEvent, state: T_State) -> bool:
|
||||||
text = get_message_text(event.message)
|
text = get_message_text(event.message)
|
||||||
img = get_message_img(event.message)
|
img = get_message_img(event.message)
|
||||||
at = get_message_at(event.message)
|
at = get_message_at(event.message)
|
||||||
@ -31,6 +32,7 @@ async def check(event: MessageEvent) -> bool:
|
|||||||
elif seg.type == 'text':
|
elif seg.type == 'text':
|
||||||
temp += seg.data["text"]
|
temp += seg.data["text"]
|
||||||
problem = temp
|
problem = temp
|
||||||
if problem:
|
if problem and (await WordBank.check(event, problem) is not None):
|
||||||
return await WordBank.check(event, problem) is not None
|
state["problem"] = problem
|
||||||
|
return True
|
||||||
return False
|
return False
|
||||||
|
|||||||
@ -1,16 +1,10 @@
|
|||||||
import imagehash
|
|
||||||
from PIL import Image
|
|
||||||
from io import BytesIO
|
|
||||||
from httpx import TimeoutException
|
|
||||||
|
|
||||||
from services import logger
|
from services import logger
|
||||||
from ._rule import check
|
from ._rule import check
|
||||||
from ._model import WordBank
|
from ._model import WordBank
|
||||||
from configs.path_config import DATA_PATH
|
from configs.path_config import DATA_PATH
|
||||||
from nonebot.adapters.onebot.v11 import GroupMessageEvent, MessageEvent
|
from nonebot.adapters.onebot.v11 import GroupMessageEvent, MessageEvent
|
||||||
from utils.utils import get_message_img, get_message_text, get_message_at
|
|
||||||
from nonebot import on_message
|
from nonebot import on_message
|
||||||
from utils.http_utils import AsyncHttpx
|
from nonebot.typing import T_State
|
||||||
|
|
||||||
__zx_plugin_name__ = "词库问答回复操作 [Hidden]"
|
__zx_plugin_name__ = "词库问答回复操作 [Hidden]"
|
||||||
|
|
||||||
@ -21,30 +15,8 @@ message_handle = on_message(priority=6, block=True, rule=check)
|
|||||||
|
|
||||||
|
|
||||||
@message_handle.handle()
|
@message_handle.handle()
|
||||||
async def _(event: MessageEvent):
|
async def _(event: MessageEvent, state: T_State):
|
||||||
text = get_message_text(event.message)
|
if problem := state.get("problem"):
|
||||||
img = get_message_img(event.message)
|
|
||||||
at = get_message_at(event.message)
|
|
||||||
problem = None
|
|
||||||
if not text and img and len(img) == 1:
|
|
||||||
try:
|
|
||||||
r = await AsyncHttpx.get(img[0])
|
|
||||||
problem = str(imagehash.average_hash(Image.open(BytesIO(r.content))))
|
|
||||||
except TimeoutException:
|
|
||||||
logger.error(f"下载 {img[0]} 下载超时..")
|
|
||||||
elif at:
|
|
||||||
temp = ''
|
|
||||||
for seg in event.message:
|
|
||||||
if seg.type == 'at':
|
|
||||||
temp += f"[at:{seg.data['qq']}]"
|
|
||||||
elif isinstance(seg, str):
|
|
||||||
temp += seg
|
|
||||||
elif seg.type == 'text':
|
|
||||||
temp += seg.data["text"]
|
|
||||||
problem = temp
|
|
||||||
elif text:
|
|
||||||
problem = text
|
|
||||||
if problem:
|
|
||||||
if msg := await WordBank.get_answer(event, problem):
|
if msg := await WordBank.get_answer(event, problem):
|
||||||
await message_handle.send(msg)
|
await message_handle.send(msg)
|
||||||
logger.info(
|
logger.info(
|
||||||
@ -52,6 +24,3 @@ async def _(event: MessageEvent):
|
|||||||
f"{event.group_id if isinstance(event, GroupMessageEvent) else 'private'})"
|
f"{event.group_id if isinstance(event, GroupMessageEvent) else 'private'})"
|
||||||
f" 触发词条 {problem}"
|
f" 触发词条 {problem}"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user