1+ import uuid
12from dataclasses import asdict
23from datetime import datetime , timezone
3- from itertools import count
44from typing import Any , Optional
55
66from nonebot .adapters import Bot as BaseBot
77from nonebot .message import event_postprocessor
88from nonebot_plugin_orm import get_session
9- from nonebot_plugin_session import Session , SessionLevel , extract_session
10- from nonebot_plugin_session_orm import SessionModel , get_session_persist_id
9+ from nonebot_plugin_uninfo import (
10+ Scene ,
11+ SceneType ,
12+ Session ,
13+ SupportAdapter ,
14+ SupportScope ,
15+ Uninfo ,
16+ User ,
17+ )
18+ from nonebot_plugin_uninfo .orm import get_session_persist_id
1119from typing_extensions import override
1220
1321from ..config import plugin_config
14- from ..consts import SupportedAdapter , SupportedPlatform
1522from ..message import (
1623 MessageDeserializer ,
1724 MessageSerializer ,
2532try :
2633 from nonebot .adapters .console import Bot , Message , MessageEvent , MessageSegment
2734 from nonechat import ConsoleMessage , Emoji , Text
28- from sqlalchemy import select
29-
30- adapter = SupportedAdapter .console
3135
32- id = None
36+ adapter = SupportAdapter . console
3337
34- async def get_id () -> str :
35- global id
36- if not id :
37- statement = (
38- select (MessageRecord .message_id )
39- .where (SessionModel .bot_type == adapter )
40- .order_by (MessageRecord .message_id .desc ())
41- .join (SessionModel , SessionModel .id == MessageRecord .session_persist_id )
42- )
43- async with get_session () as db_session :
44- message_id = await db_session .scalar (statement )
45- id = count (int (message_id ) + 1 ) if message_id else count (0 )
46- return str (next (id ))
38+ def get_id () -> str :
39+ return uuid .uuid4 ().hex
4740
4841 @event_postprocessor
49- async def record_recv_msg (bot : Bot , event : MessageEvent ):
50- session = extract_session (bot , event )
42+ async def record_recv_msg (event : MessageEvent , session : Uninfo ):
5143 session_persist_id = await get_session_persist_id (session )
5244
5345 record = MessageRecord (
5446 session_persist_id = session_persist_id ,
5547 time = remove_timezone (event .time .astimezone (timezone .utc )),
5648 type = record_type (event ),
57- message_id = await get_id (),
49+ message_id = get_id (),
5850 message = serialize_message (adapter , event .get_message ()),
5951 plain_text = event .get_plaintext (),
6052 )
@@ -78,13 +70,11 @@ async def record_send_msg(
7870 return
7971
8072 session = Session (
81- bot_id = bot .self_id ,
82- bot_type = bot .type ,
83- platform = SupportedPlatform .console ,
84- level = SessionLevel .LEVEL1 ,
85- id1 = data .get ("user_id" ),
86- id2 = None ,
87- id3 = None ,
73+ self_id = bot .self_id ,
74+ adapter = adapter ,
75+ scope = SupportScope .console ,
76+ scene = Scene (id = data ["user_id" ], type = SceneType .PRIVATE ),
77+ user = User (id = bot .self_id ),
8878 )
8979 session_persist_id = await get_session_persist_id (session )
9080
@@ -105,7 +95,7 @@ async def record_send_msg(
10595 session_persist_id = session_persist_id ,
10696 time = remove_timezone (datetime .now (timezone .utc )),
10797 type = "message_sent" ,
108- message_id = await get_id (),
98+ message_id = get_id (),
10999 message = serialize_message (adapter , message ),
110100 plain_text = message .extract_plain_text (),
111101 )
0 commit comments