测试下改会话
This commit is contained in:
37
main.py
37
main.py
@@ -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:
|
||||
|
||||
Reference in New Issue
Block a user