测试下改会话

This commit is contained in:
chenxiangtong
2026-04-15 16:37:15 +08:00
parent 2e0b9336b0
commit 7423b6635c
2 changed files with 39 additions and 47 deletions

37
main.py
View File

@@ -98,6 +98,7 @@ class BangumiPlugin(Star):
service=self.service,
config_manager=self.config_manager,
session=self.session,
context=self.context,
)
# 5. 添加定时更新任务
@@ -117,11 +118,8 @@ class BangumiPlugin(Star):
# --- 命令处理区 ---
@staticmethod
def _resolve_session_key(event: AstrMessageEvent) -> str | None:
session_key: str | None = getattr(event, "session_id", None)
if hasattr(event, "message_obj") and hasattr(event.message_obj, "group_id"):
session_key = event.message_obj.group_id
return session_key
def _resolve_session_key(event: AstrMessageEvent) -> str:
return event.unified_msg_origin
@staticmethod
def _parse_subscribe_selection(raw_text: str) -> int | None:
@@ -203,10 +201,7 @@ class BangumiPlugin(Star):
yield event.plain_result("❌ 订阅服务未就绪")
return
group_id = self._resolve_session_key(event)
if not group_id:
yield event.plain_result("❌ 无法获取群组ID")
return
session_key = self._resolve_session_key(event)
(
error_msg,
@@ -224,7 +219,7 @@ class BangumiPlugin(Star):
if len(candidates) == 1:
result = await self.subscription_service.subscribe_by_subject_id(
group_id=group_id,
session_id=session_key,
subject_id=candidates[0]["subject_id"],
)
yield event.plain_result(result)
@@ -246,12 +241,11 @@ class BangumiPlugin(Star):
"today",
"弃坑",
}
session_key = group_id
session_key = self._resolve_session_key(event)
class GroupSessionFilter(SessionFilter):
class ConversationSessionFilter(SessionFilter):
def filter(self, wait_event: AstrMessageEvent) -> str:
wait_session_key = BangumiPlugin._resolve_session_key(wait_event)
return wait_session_key or wait_event.unified_msg_origin
return BangumiPlugin._resolve_session_key(wait_event)
@session_waiter(timeout=300)
async def subscribe_confirm_waiter(
@@ -292,7 +286,7 @@ class BangumiPlugin(Star):
selected = candidates[selected_index - 1]
result = await self.subscription_service.subscribe_by_subject_id(
group_id=session_key,
session_id=session_key,
subject_id=selected["subject_id"],
)
await wait_event.send(MessageChain([Comp.Plain(result)]))
@@ -302,7 +296,7 @@ class BangumiPlugin(Star):
try:
await subscribe_confirm_waiter(
event,
session_filter=GroupSessionFilter(),
session_filter=ConversationSessionFilter(),
)
except TimeoutError:
yield event.plain_result("⏰ 候选确认已过期,请重新使用 `/追番 关键词`。")
@@ -316,15 +310,8 @@ class BangumiPlugin(Star):
yield event.plain_result("❌ 订阅服务未就绪")
return
group_id: str | None = getattr(event, "session_id", None)
if hasattr(event, "message_obj") and hasattr(event.message_obj, "group_id"):
group_id = event.message_obj.group_id
if not group_id:
yield event.plain_result("❌ 无法获取群组ID")
return
result = await self.subscription_service.unsubscribe(group_id, query)
session_key = self._resolve_session_key(event)
result = await self.subscription_service.unsubscribe(session_key, query)
yield event.plain_result(result)
async def terminate(self) -> None: