Skip to content

Commit 2e2b978

Browse files
committed
🐛 fix Kook image export
resolve #103
1 parent ca4b374 commit 2e2b978

File tree

1 file changed

+24
-3
lines changed
  • src/nonebot_plugin_alconna/uniseg/adapters/kook

1 file changed

+24
-3
lines changed

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

Lines changed: 24 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -79,13 +79,35 @@ async def emoji(self, seg: Emoji, bot: Union[Bot, None]) -> "MessageSegment":
7979
return MessageSegment.KMarkdown(f":{seg.id}:")
8080

8181
@export
82-
async def media(self, seg: Union[Image, Voice, Video, Audio, File], bot: Union[Bot, None]) -> "MessageSegment":
82+
async def image(self, seg: Image, bot: Union[Bot, None]) -> "MessageSegment":
83+
if TYPE_CHECKING:
84+
assert isinstance(bot, KBot)
85+
name = seg.__class__.__name__.lower()
86+
if seg.id:
87+
return MessageSegment.image(seg.id)
88+
if seg.url:
89+
return MessageSegment.image(seg.url)
90+
if seg.__class__.to_url and seg.raw:
91+
return MessageSegment.image(
92+
await seg.__class__.to_url(seg.raw, bot, None if seg.name == seg.__default_name__ else seg.name)
93+
)
94+
if seg.__class__.to_url and seg.path:
95+
return MessageSegment.image(
96+
await seg.__class__.to_url(seg.path, bot, None if seg.name == seg.__default_name__ else seg.name)
97+
)
98+
if seg.raw:
99+
return MessageSegment.local_image(seg.raw_bytes)
100+
if seg.path:
101+
return MessageSegment.local_image(seg.path)
102+
raise SerializeFailed(lang.require("nbp-uniseg", "invalid_segment").format(type=name, seg=seg))
103+
104+
@export
105+
async def media(self, seg: Union[Voice, Video, Audio, File], bot: Union[Bot, None]) -> "MessageSegment":
83106
if TYPE_CHECKING:
84107
assert isinstance(bot, KBot)
85108
name = seg.__class__.__name__.lower()
86109
title = None if seg.name == seg.__default_name__ else seg.name
87110
method = {
88-
"image": MessageSegment.image,
89111
"voice": MessageSegment.audio,
90112
"audio": MessageSegment.audio,
91113
"video": MessageSegment.video,
@@ -102,7 +124,6 @@ async def media(self, seg: Union[Image, Voice, Video, Audio, File], bot: Union[B
102124
await seg.__class__.to_url(seg.path, bot, None if seg.name == seg.__default_name__ else seg.name), title
103125
)
104126
local_method = {
105-
"image": MessageSegment.local_image,
106127
"voice": MessageSegment.local_audio,
107128
"audio": MessageSegment.local_audio,
108129
"video": MessageSegment.local_video,

0 commit comments

Comments
 (0)