Skip to content

Commit 285b982

Browse files
committed
🍻 support recall file
1 parent 1fb2e30 commit 285b982

File tree

2 files changed

+21
-5
lines changed

2 files changed

+21
-5
lines changed

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

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
from nonebot.adapters.kritor.message import Message, MessageSegment
99
from nonebot.adapters.kritor.protos.kritor.common import Button as ButtonModel
1010
from nonebot.adapters.kritor.protos.kritor.message import SendMessageResponse, SendMessageByResIdResponse
11+
from nonebot.adapters.kritor.protos.kritor.group import UploadGroupFileResponse
1112
from nonebot.adapters.kritor.protos.kritor.common import ( # Sender,
1213
GroupSender,
1314
ButtonAction,
@@ -331,7 +332,13 @@ async def send_to(self, target: Union[Target, Event], bot: Bot, message: Message
331332

332333
async def recall(self, mid: Any, bot: Bot, context: Union[Target, Event]):
333334
assert isinstance(bot, KritorBot)
334-
if isinstance(mid, str):
335+
if isinstance(context, Event):
336+
_target = self.get_target(context, bot)
337+
else:
338+
_target = context
339+
if isinstance(mid, UploadGroupFileResponse):
340+
await bot.delete_file(group=int(_target.id), file_id=mid.file_id, bus_id=mid.file_bizid) # type: ignore
341+
elif isinstance(mid, str):
335342
await bot.recall_message(message_id=mid)
336343
else:
337344
assert isinstance(mid, (SendMessageByResIdResponse, SendMessageResponse))

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

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
from nonebot.internal.driver import Request
77
from nonebot.adapters.mirai.bot import UploadMethod
88
from nonebot.adapters.mirai.bot import Bot as MiraiBot
9+
from nonebot.adapters.mirai.model.common import FileInfo
910
from nonebot.adapters.mirai.message import Video as VideoSegment
1011
from nonebot.adapters.mirai.message import Message, MessageSegment
1112
from nonebot.adapters.mirai.event import (
@@ -250,10 +251,18 @@ async def send_to(self, target: Union[Target, Event], bot: Bot, message: Message
250251
return await bot.send_group_message(target=int(target.id), message=message)
251252

252253
async def recall(self, mid: Any, bot: Bot, context: Union[Target, Event]):
253-
if TYPE_CHECKING:
254-
assert isinstance(mid, ActiveMessage)
255-
assert isinstance(bot, MiraiBot)
256-
await bot.recall_message(message=mid)
254+
assert isinstance(bot, MiraiBot)
255+
if isinstance(mid, FileInfo):
256+
if isinstance(context, Event):
257+
_target = self.get_target(context, bot)
258+
else:
259+
_target = context
260+
if mid.id:
261+
await bot.delete_file(target=int(_target.id), id=mid.id)
262+
else:
263+
if TYPE_CHECKING:
264+
assert isinstance(mid, ActiveMessage)
265+
await bot.recall_message(message=mid)
257266

258267
def get_reply(self, mid: Any):
259268
if TYPE_CHECKING:

0 commit comments

Comments
 (0)