|
8 | 8 | from nonebot.adapters.qqguild.api.model import Member |
9 | 9 | from nonebot.adapters.qqguild.api import MessageReference |
10 | 10 | import nonebot.adapters.onebot.v12.exception as ob_exception |
11 | | -from nonebot.adapters.qqguild.exception import ActionFailed |
12 | 11 | from nonebot.adapters.onebot.v12 import Event as OneBotEvent |
13 | 12 | from nonebot.adapters.onebot.v12 import Adapter as OneBotAdapter |
14 | 13 | from nonebot.adapters.onebot.v12 import Message as OneBotMessage |
| 14 | +from nonebot.adapters.qqguild.exception import ActionFailed, AuditException |
15 | 15 | from nonebot.adapters.onebot.v12 import MessageSegment as OneBotMessageSegment |
16 | 16 | from nonebot.adapters.qqguild.event import GuildMemberAddEvent, GuildMemberRemoveEvent |
17 | 17 | from nonebot.adapters.qqguild import ( |
|
22 | 22 | ChannelEvent, |
23 | 23 | MessageEvent, |
24 | 24 | MessageSegment, |
25 | | - GuildCreateEvent, |
26 | 25 | GuildMemberEvent, |
27 | 26 | ChannelCreateEvent, |
28 | 27 | ChannelDeleteEvent, |
@@ -249,22 +248,29 @@ async def send_message( |
249 | 248 | file_image=file_image, # type: ignore |
250 | 249 | message_reference=message_reference, # type: ignore |
251 | 250 | ) |
| 251 | + time = result.timestamp.timestamp() # type: ignore |
| 252 | + message_id = { |
| 253 | + "message_id": result.id, |
| 254 | + "guild_id": result.guild_id, |
| 255 | + "channel_id": result.channel_id, |
| 256 | + } |
| 257 | + except AuditException as e: |
| 258 | + # https://bot.q.qq.com/wiki/develop/api/openapi/message/post_messages.html#%E9%94%99%E8%AF%AF%E7%A0%81 |
| 259 | + # NoneBot 的默认 API_TIMEOUT 为 30s,这里设置为 25s |
| 260 | + result = await e.get_audit_result(timeout=25) |
| 261 | + if result.message_id is None: |
| 262 | + raise ob_exception.PlatformError("failed", 34001, "消息审核未通过", None) |
| 263 | + time = result.audit_time.timestamp() # type: ignore |
| 264 | + message_id = { |
| 265 | + "message_id": result.message_id, |
| 266 | + "guild_id": result.guild_id, |
| 267 | + "channel_id": result.channel_id, |
| 268 | + } |
252 | 269 | except ActionFailed as e: |
253 | 270 | raise ob_exception.PlatformError("failed", 34001, str(e), None) |
254 | | - # TODO: 如果是主动消息,返回的时间会是 None |
255 | | - # https://bot.q.qq.com/wiki/develop/api/openapi/message/post_messages.html#%E9%94%99%E8%AF%AF%E7%A0%81 |
256 | | - # 因为会返回带 MessageAudit 的错误消息 |
257 | | - time = ( |
258 | | - result.timestamp.timestamp() |
259 | | - if result.timestamp |
260 | | - else datetime.now().timestamp() |
261 | | - ) |
| 271 | + |
262 | 272 | return { |
263 | | - "message_id": self._to_ob_message_id( |
264 | | - message_id=result.id, |
265 | | - guild_id=result.guild_id, |
266 | | - channel_id=result.channel_id, |
267 | | - ), |
| 273 | + "message_id": self._to_ob_message_id(**message_id), |
268 | 274 | "time": time, |
269 | 275 | } |
270 | 276 |
|
|
0 commit comments