Skip to content

Commit 17327ba

Browse files
committed
⬆️ version 0.58.1
upgrade `milky` 0.2.0
1 parent b47327a commit 17327ba

6 files changed

Lines changed: 63 additions & 46 deletions

File tree

pdm.lock

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

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.0"
146+
__version__ = "0.58.1"
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.0"
66+
__version__ = "0.58.1"
6767

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

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

Lines changed: 33 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -51,42 +51,45 @@ def face(self, seg: FaceSegment):
5151

5252
@build("image")
5353
def image(self, seg: ImageSegment):
54-
uri = seg.data.get("uri")
55-
if isinstance(uri, str):
56-
if uri.startswith("http"):
57-
return Image(id=seg.data["resource_id"], url=uri)
58-
if uri.startswith("file://"):
59-
return Image(path=uri[7:])
60-
if uri.startswith("base64://"):
61-
b64 = uri[9:]
62-
return Image(id=seg.data["resource_id"], raw=b64decode(b64))
63-
return Image(id=seg.data["resource_id"])
54+
if "resource_id" in seg.data:
55+
return Image(id=seg.data["resource_id"], url=seg.data.get("temp_url"))
56+
uri = seg.data["uri"]
57+
if uri.startswith("http"):
58+
return Image(url=uri)
59+
if uri.startswith("file://"):
60+
return Image(path=uri[7:])
61+
if uri.startswith("base64://"):
62+
b64 = uri[9:]
63+
return Image(raw=b64decode(b64))
6464

6565
@build("video")
6666
def video(self, seg: VideoSegment):
67-
uri = seg.data.get("uri")
68-
if isinstance(uri, str):
69-
if uri.startswith("http"):
70-
return Video(id=seg.data["resource_id"], url=uri)
71-
if uri.startswith("file://"):
72-
return Video(path=uri[7:])
73-
if uri.startswith("base64://"):
74-
b64 = uri[9:]
75-
return Video(id=seg.data["resource_id"], raw=b64decode(b64))
76-
return Video(id=seg.data["resource_id"])
67+
if "resource_id" in seg.data:
68+
return Video(id=seg.data["resource_id"], url=seg.data.get("temp_url"))
69+
uri = seg.data["uri"]
70+
thumbnail = None
71+
if thumb_url := seg.data.get("thumb_url"):
72+
thumbnail = Image(url=thumb_url)
73+
if uri.startswith("http"):
74+
return Video(url=uri, thumbnail=thumbnail)
75+
if uri.startswith("file://"):
76+
return Video(path=uri[7:], thumbnail=thumbnail)
77+
if uri.startswith("base64://"):
78+
b64 = uri[9:]
79+
return Video(raw=b64decode(b64), thumbnail=thumbnail)
7780

7881
@build("record")
7982
def record(self, seg: RecordSegment):
80-
uri = seg.data.get("uri")
81-
if isinstance(uri, str):
82-
if uri.startswith("http"):
83-
return Voice(id=seg.data["resource_id"], url=uri)
84-
if uri.startswith("file://"):
85-
return Voice(path=uri[7:])
86-
if uri.startswith("base64://"):
87-
b64 = uri[9:]
88-
return Voice(id=seg.data["resource_id"], raw=b64decode(b64))
89-
return Voice(id=seg.data["resource_id"])
83+
if "resource_id" in seg.data:
84+
return Voice(id=seg.data["resource_id"], url=seg.data.get("temp_url"), duration=seg.data["duration"])
85+
uri = seg.data["uri"]
86+
if uri.startswith("http"):
87+
return Voice(url=uri)
88+
if uri.startswith("file://"):
89+
return Voice(path=uri[7:])
90+
if uri.startswith("base64://"):
91+
b64 = uri[9:]
92+
return Voice(raw=b64decode(b64))
9093

9194
@build("reply")
9295
def reply(self, seg: ReplySegment):

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

Lines changed: 13 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -100,26 +100,26 @@ async def media(self, seg: Union[Image, Voice, Audio], bot: Union[Bot, None]) ->
100100
"voice": MessageSegment.record,
101101
"audio": MessageSegment.record,
102102
}[name]
103-
if seg.id:
104-
url = await bot.get_resource_temp_url(seg.id)
105-
return method(url)
106103
if seg.raw:
107104
return method(raw=seg.raw)
108105
if seg.path:
109106
return method(path=Path(seg.path))
110107
if seg.url:
111108
return method(seg.url)
109+
if seg.id:
110+
url = await bot.get_resource_temp_url(seg.id)
111+
return method(url)
112112
raise SerializeFailed(lang.require("nbp-uniseg", "invalid_segment").format(type=name, seg=seg))
113113

114114
@export
115115
async def video(self, seg: Video, bot: Union[Bot, None]) -> "MessageSegment":
116116
assert isinstance(bot, MilkyBot)
117117
thumb_url = None
118118
if seg.thumbnail:
119-
if seg.thumbnail.id:
120-
thumb_url = await bot.get_resource_temp_url(seg.thumbnail.id)
121-
elif seg.thumbnail.url:
119+
if seg.thumbnail.url:
122120
thumb_url = seg.thumbnail.url
121+
elif seg.thumbnail.id:
122+
thumb_url = await bot.get_resource_temp_url(seg.thumbnail.id)
123123
elif seg.__class__.to_url and seg.thumbnail.raw:
124124
thumb_url = await seg.__class__.to_url(
125125
seg.thumbnail.raw,
@@ -132,15 +132,15 @@ async def video(self, seg: Video, bot: Union[Bot, None]) -> "MessageSegment":
132132
bot,
133133
None if seg.thumbnail.name == seg.thumbnail.__default_name__ else seg.thumbnail.name,
134134
)
135-
if seg.id:
136-
url = await bot.get_resource_temp_url(seg.id)
137-
return MessageSegment.video(url, thumb_url=thumb_url)
138135
if seg.raw:
139136
return MessageSegment.video(raw=seg.raw, thumb_url=thumb_url)
140137
if seg.path:
141138
return MessageSegment.video(path=Path(seg.path), thumb_url=thumb_url)
142139
if seg.url:
143140
return MessageSegment.video(seg.url, thumb_url=thumb_url)
141+
if seg.id:
142+
url = await bot.get_resource_temp_url(seg.id)
143+
return MessageSegment.video(url, thumb_url=thumb_url)
144144
raise SerializeFailed(lang.require("nbp-uniseg", "invalid_segment").format(type="video", seg=seg))
145145

146146
@export
@@ -271,6 +271,7 @@ async def reaction(self, emoji: Emoji, mid: Any, bot: Bot, context: Union[Target
271271

272272
if isinstance(mid, MessagePrivateResponse):
273273
return
274+
group_id = int(context.id if isinstance(context, Target) else getattr(context.data, "group_id", -1)) # type: ignore
274275
if isinstance(mid, MessageGroupResponse):
275276
message_seq = mid.message_seq
276277
elif isinstance(mid, int):
@@ -282,7 +283,9 @@ async def reaction(self, emoji: Emoji, mid: Any, bot: Bot, context: Union[Target
282283
message_seq = int(message_seq)
283284
else:
284285
return
285-
await bot.send_group_message_reaction(message_seq=message_seq, reaction=emoji.id, is_add=not delete)
286+
await bot.send_group_message_reaction(
287+
group_id=group_id, message_seq=message_seq, reaction=emoji.id, is_add=not delete
288+
)
286289

287290
def get_reply(self, mid: Any):
288291
if isinstance(mid, MessagePrivateResponse):

src/nonebot_plugin_alconna/uniseg/segment.py

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -855,7 +855,18 @@ def __post_init__(self):
855855

856856
@dataclass
857857
class Button(Segment):
858-
"""Button对象,表示一类按钮消息"""
858+
"""Button对象,表示一类按钮消息
859+
860+
Args:
861+
flag: 按钮类型,可能的值有 "action", "link", "input", "enter"
862+
label: 按钮上的文字
863+
clicked_label: 点击后按钮上的文字
864+
id: 按钮的唯一标识符。当按钮类型为 "action" 时,表示按钮回调事件的 id
865+
url: 当按钮类型为 "link" 时,表示链接地址
866+
text: 当按钮类型为 "input" 或 "enter" 时,表示填充的文本
867+
style: 按钮的样式
868+
permission: 按钮的权限类型,可能的值有 "admin", "all" 或指定用户/身份组列表
869+
"""
859870

860871
flag: Literal["action", "link", "input", "enter"]
861872
"""

0 commit comments

Comments
 (0)