Skip to content

Commit 28a8376

Browse files
committed
⬆️ version 0.58.4
upgrade `Milky`
1 parent 2e2b978 commit 28a8376

File tree

6 files changed

+65
-65
lines changed

6 files changed

+65
-65
lines changed

pdm.lock

Lines changed: 4 additions & 4 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,7 @@ dev = [
7272
"pyyaml>=6.0.1",
7373
"fix-future-annotations>=0.5.0",
7474
# "nonebot-adapter-heybox>=0.1.1; python_version >= \"3.11\"",
75-
"nonebot-adapter-milky>=0.1.3",
75+
"nonebot-adapter-milky>=0.4.0",
7676
]
7777
test = [
7878
"nonebug>=0.4.3",

src/nonebot_plugin_alconna/__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -143,7 +143,7 @@
143143
from .uniseg import SupportAdapterModule as SupportAdapterModule
144144
from .extension import add_global_extension as add_global_extension
145145

146-
__version__ = "0.58.3"
146+
__version__ = "0.58.4"
147147
__supported_adapters__ = set(m.value for m in SupportAdapterModule.__members__.values()) # noqa: C401
148148
__plugin_meta__ = PluginMetadata(
149149
name="Alconna 插件",

src/nonebot_plugin_alconna/uniseg/__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,7 @@
6363
from .constraint import SupportAdapterModule as SupportAdapterModule
6464
from .adapters import alter_get_builder, alter_get_fetcher, alter_get_exporter
6565

66-
__version__ = "0.58.3"
66+
__version__ = "0.58.4"
6767

6868
__plugin_meta__ = PluginMetadata(
6969
name="Universal Segment 插件",

src/nonebot_plugin_alconna/uniseg/adapters/milky/builder.py

Lines changed: 2 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -93,11 +93,7 @@ def record(self, seg: RecordSegment):
9393

9494
@build("reply")
9595
def reply(self, seg: ReplySegment):
96-
if "client_seq" in seg.data:
97-
msg_id = f"{seg.data['message_seq']}#{seg.data['client_seq']}"
98-
else:
99-
msg_id = str(seg.data["message_seq"])
100-
return Reply(msg_id, origin=seg)
96+
return Reply(str(seg.data["message_seq"]), origin=seg)
10197

10298
@build("forward")
10399
def forward(self, seg: ForwardSegment):
@@ -122,9 +118,6 @@ async def extract_reply(self, event: Event, bot: Bot):
122118
if TYPE_CHECKING:
123119
assert isinstance(event, MessageEvent)
124120
if _reply := event.reply:
125-
if _reply.client_seq:
126-
msg_id = f"{_reply.message_seq}#{_reply.client_seq}"
127-
else:
128-
msg_id = str(_reply.message_seq)
121+
msg_id = f"{_reply.message_seq}@{event.data.message_scene}:{event.data.peer_id}"
129122
return Reply(msg_id, _reply.message, _reply)
130123
return None

src/nonebot_plugin_alconna/uniseg/adapters/milky/exporter.py

Lines changed: 56 additions & 49 deletions
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,9 @@
66
from nonebot.adapters.milky.utils import to_uri
77
from nonebot.adapters.milky.bot import Bot as MilkyBot
88
from nonebot.adapters.milky.event import Event as MilkyEvent
9+
from nonebot.adapters.milky.model.api import MessageResponse
910
from nonebot.adapters.milky.message import Message, MessageSegment
1011
from nonebot.adapters.milky.event import MessageEvent, MessageRecallEvent
11-
from nonebot.adapters.milky.model.api import MessageGroupResponse, MessagePrivateResponse
1212

1313
from nonebot_plugin_alconna.uniseg.constraint import SupportScope
1414
from nonebot_plugin_alconna.uniseg.exporter import Target, SupportAdapter, MessageExporter, SerializeFailed, export
@@ -64,12 +64,10 @@ def get_target(self, event: Event, bot: Union[Bot, None] = None) -> Target:
6464
raise NotImplementedError
6565

6666
def get_message_id(self, event: Event) -> str:
67-
if (message_id := getattr(event, "message_id", None)) is not None:
68-
return str(message_id)
6967
assert isinstance(event, MilkyEvent)
7068
if (message_seq := getattr(event.data, "message_seq", None)) is not None:
71-
if (client_seq := getattr(event.data, "client_seq", None)) is not None:
72-
return f"{message_seq}#{client_seq}"
69+
if isinstance(event, MessageEvent):
70+
return f"{message_seq}@{event.data.message_scene}:{event.data.peer_id}"
7371
return str(message_seq)
7472
raise NotImplementedError
7573

@@ -164,8 +162,8 @@ async def file(self, seg: File, bot: Union[Bot, None]) -> "MessageSegment":
164162

165163
@export
166164
async def reply(self, seg: Reply, bot: Union[Bot, None]) -> "MessageSegment":
167-
message_seq, _, client_seq = seg.id.partition("#")
168-
return MessageSegment.reply(int(message_seq), int(client_seq) if client_seq else None)
165+
message_seq, *_ = seg.id.split("@")
166+
return MessageSegment.reply(int(message_seq))
169167

170168
@export
171169
async def reference(self, seg: Reference, bot: Union[Bot, None]) -> "MessageSegment":
@@ -229,74 +227,83 @@ async def send_to(self, target: Union[Target, Event], bot: Bot, message: Message
229227

230228
async def recall(self, mid: Any, bot: Bot, context: Union[Target, Event]):
231229
assert isinstance(bot, MilkyBot)
232-
if isinstance(mid, MessagePrivateResponse):
233-
user_id = int(context.id if isinstance(context, Target) else context.get_user_id())
234-
await bot.recall_private_message(user_id=user_id, message_seq=mid.message_seq, client_seq=mid.client_seq)
235-
elif isinstance(mid, MessageGroupResponse):
236-
group_id = int(context.id if isinstance(context, Target) else getattr(context.data, "group_id", -1)) # type: ignore
237-
await bot.recall_group_message(group_id=group_id, message_seq=mid.message_seq)
238-
elif isinstance(mid, int):
239-
if isinstance(context, Target):
240-
assert not context.private
241-
group_id = int(context.id)
242-
else:
243-
group_id = int(getattr(context.data, "group_id", -1)) # type: ignore
244-
await bot.recall_group_message(group_id=group_id, message_seq=mid)
245-
elif isinstance(mid, str):
246-
message_seq, _, client_seq = mid.partition("#")
247-
if not client_seq:
248-
if isinstance(context, Target):
249-
assert not context.private
250-
group_id = int(context.id)
251-
else:
252-
assert not context.is_private # type: ignore
253-
group_id = int(getattr(context.data, "group_id", -1)) # type: ignore
254-
await bot.recall_group_message(group_id=group_id, message_seq=int(message_seq))
255-
else:
256-
user_id = int(context.id if isinstance(context, Target) else context.get_user_id())
257-
await bot.recall_private_message(
258-
user_id=user_id, message_seq=int(message_seq), client_seq=int(client_seq)
259-
)
260-
elif isinstance(mid, File) and mid.id:
230+
if isinstance(mid, File) and mid.id:
261231
if isinstance(context, Target):
262232
if not context.private:
263233
group_id = int(context.id)
264234
await bot.delete_group_file(group_id=group_id, file_id=mid.id)
265235
elif not context.is_private: # type: ignore
266236
group_id = int(getattr(context.data, "group_id", -1)) # type: ignore
267237
await bot.delete_group_file(group_id=group_id, file_id=mid.id)
238+
return
239+
if isinstance(mid, MessageResponse):
240+
message_seq = mid.message_seq
241+
elif isinstance(mid, int):
242+
message_seq = mid
243+
elif isinstance(mid, str):
244+
message_seq, _, target = mid.partition("@")
245+
message_seq = int(message_seq)
246+
if target:
247+
scene, _, peer_id = target.partition(":")
248+
if scene == "group":
249+
await bot.recall_group_message(group_id=int(peer_id), message_seq=message_seq)
250+
else:
251+
await bot.recall_private_message(user_id=int(peer_id), message_seq=message_seq)
252+
return
253+
else:
254+
return
255+
if isinstance(context, Target):
256+
if context.private:
257+
user_id = int(context.id)
258+
await bot.recall_private_message(user_id=user_id, message_seq=message_seq)
259+
else:
260+
group_id = int(context.id)
261+
await bot.recall_group_message(group_id=group_id, message_seq=message_seq)
262+
elif isinstance(context, MilkyEvent):
263+
if context.is_private:
264+
user_id = int(context.get_user_id())
265+
await bot.recall_private_message(user_id=user_id, message_seq=message_seq)
266+
else:
267+
group_id = int(getattr(context.data, "group_id", -1))
268+
await bot.recall_group_message(group_id=group_id, message_seq=message_seq)
268269

269270
async def reaction(self, emoji: Emoji, mid: Any, bot: Bot, context: Union[Target, Event], delete: bool = False):
270271
assert isinstance(bot, MilkyBot)
271272

272-
if isinstance(mid, MessagePrivateResponse):
273+
if isinstance(context, Target):
274+
if context.private:
275+
return
276+
group_id = int(context.id)
277+
elif isinstance(context, MilkyEvent):
278+
if context.is_private:
279+
return
280+
group_id = int(getattr(context.data, "group_id", -1)) # type: ignore
281+
else:
273282
return
274-
group_id = int(context.id if isinstance(context, Target) else getattr(context.data, "group_id", -1)) # type: ignore
275-
if isinstance(mid, MessageGroupResponse):
283+
if isinstance(mid, MessageResponse):
276284
message_seq = mid.message_seq
277285
elif isinstance(mid, int):
278286
message_seq = mid
279287
elif isinstance(mid, str):
280-
message_seq, _, client_seq = mid.partition("#")
281-
if client_seq:
282-
return
288+
message_seq, _, target = mid.partition("@")
283289
message_seq = int(message_seq)
290+
if target:
291+
scene, _, peer_id = target.partition(":")
292+
if scene == "group":
293+
group_id = int(peer_id)
294+
else:
295+
return
284296
else:
285297
return
286298
await bot.send_group_message_reaction(
287299
group_id=group_id, message_seq=message_seq, reaction=emoji.id, is_add=not delete
288300
)
289301

290302
def get_reply(self, mid: Any):
291-
if isinstance(mid, MessagePrivateResponse):
292-
return Reply(f"{mid.message_seq}#{mid.client_seq}", origin=mid)
293-
if isinstance(mid, MessageGroupResponse):
303+
if isinstance(mid, MessageResponse):
294304
return Reply(str(mid.message_seq), origin=mid)
295305
if isinstance(mid, int):
296306
return Reply(str(mid))
297307
if isinstance(mid, str):
298-
message_seq, _, client_seq = mid.partition("#")
299-
if client_seq:
300-
return Reply(f"{message_seq}#{client_seq}")
301-
return Reply(str(message_seq))
308+
return Reply(mid)
302309
raise ValueError(f"Invalid message id: {mid}")

0 commit comments

Comments
 (0)