Skip to content

Commit 7738b5b

Browse files
committed
🐛 fix Onebot11 message_id get
resolve #99
1 parent 2f0a167 commit 7738b5b

File tree

2 files changed

+14
-8
lines changed

2 files changed

+14
-8
lines changed

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

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66

77
from nonebot_plugin_alconna.uniseg.constraint import SupportAdapter
88
from nonebot_plugin_alconna.uniseg.builder import MessageBuilder, build
9-
from nonebot_plugin_alconna.uniseg.segment import At, AtAll, Emoji, Hyper, Image, Reply, Video, Voice, Reference
9+
from nonebot_plugin_alconna.uniseg.segment import At, File, AtAll, Emoji, Hyper, Image, Reply, Video, Voice, Reference
1010

1111

1212
class Onebot11MessageBuilder(MessageBuilder):
@@ -54,6 +54,12 @@ def json(self, seg: MessageSegment):
5454
def xml(self, seg: MessageSegment):
5555
return Hyper("xml", seg.data["data"])
5656

57+
@build("file")
58+
def file(self, seg: MessageSegment):
59+
url = seg.data.get("url") or seg.data.get("file")
60+
name = seg.data.get("file_name") or seg.data.get("file")
61+
return File(id=seg.data["file_id"], name=name or "file.bin", url=url)
62+
5763
async def extract_reply(self, event: Event, bot: Bot):
5864
if TYPE_CHECKING:
5965
assert isinstance(event, MessageEvent)

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

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@
33

44
from tarina import lang
55
from nonebot.adapters import Bot, Event
6-
from nonebot.adapters.onebot.v11.event import MessageEvent
76
from nonebot.adapters.onebot.v11.bot import Bot as OnebotBot
87
from nonebot.adapters.onebot.v11.message import Message, MessageSegment
98

@@ -53,8 +52,9 @@ def get_target(self, event: Event, bot: Union[Bot, None] = None) -> Target:
5352
raise NotImplementedError
5453

5554
def get_message_id(self, event: Event) -> str:
56-
assert isinstance(event, MessageEvent)
57-
return str(event.message_id)
55+
if message_id := getattr(event, "message_id", None):
56+
return str(message_id)
57+
raise NotImplementedError
5858

5959
@export
6060
async def text(self, seg: Text, bot: Union[Bot, None]) -> "MessageSegment":
@@ -197,8 +197,8 @@ async def recall(self, mid: Any, bot: Bot, context: Union[Target, Event]):
197197
await bot.delete_msg(message_id=mid["message_id"])
198198
elif isinstance(mid, (str, int)):
199199
await bot.delete_msg(message_id=int(mid))
200-
elif not mid and isinstance(context, MessageEvent):
201-
await bot.delete_msg(message_id=context.message_id)
200+
elif not mid and hasattr(context, "message_id"):
201+
await bot.delete_msg(message_id=context.message_id) # type: ignore
202202

203203
async def reaction(self, emoji: Emoji, mid: Any, bot: Bot, context: Union[Target, Event], delete: bool = False):
204204
assert isinstance(bot, OnebotBot)
@@ -217,9 +217,9 @@ async def reaction(self, emoji: Emoji, mid: Any, bot: Bot, context: Union[Target
217217
return
218218
group_id = int(context.id)
219219
else:
220-
if not hasattr(context, "group_id"):
220+
if not (group_id := getattr(context, "group_id", None)):
221221
return
222-
group_id = int(context.group_id) # type: ignore
222+
group_id = int(group_id)
223223
await bot.call_api(
224224
"set_group_reaction",
225225
group_id=group_id,

0 commit comments

Comments
 (0)