|
2 | 2 | from datetime import datetime |
3 | 3 | from typing import Any, Dict, List, Tuple, Union, Literal, Optional |
4 | 4 |
|
| 5 | +from nonebot import logger |
5 | 6 | from anyio import open_file |
6 | 7 | from pydantic import parse_obj_as |
7 | 8 | from nonebot.adapters.qqguild.api.model import Member |
|
21 | 22 | ChannelEvent, |
22 | 23 | MessageEvent, |
23 | 24 | MessageSegment, |
| 25 | + GuildCreateEvent, |
24 | 26 | GuildMemberEvent, |
25 | 27 | ChannelCreateEvent, |
26 | 28 | ChannelDeleteEvent, |
@@ -140,6 +142,9 @@ async def to_onebot_event(self, event: Event) -> List[OneBotEvent]: |
140 | 142 | event_dict["detail_type"] = "channel_delete" |
141 | 143 | elif isinstance(event, ChannelUpdateEvent): |
142 | 144 | event_dict["detail_type"] = "channel_update" |
| 145 | + else: |
| 146 | + logger.warning(f"未转换事件: {event}") |
| 147 | + return [] |
143 | 148 |
|
144 | 149 | if event_out := OneBotAdapter.json_to_event( |
145 | 150 | event_dict, "nonebot-plugin-all4one" |
@@ -227,24 +232,28 @@ async def send_message( |
227 | 232 | message_id, _, _ = self._from_ob_message_id(message_id) |
228 | 233 | message_reference = MessageReference(message_id=message_id) |
229 | 234 |
|
230 | | - if detail_type == "private": |
231 | | - result = await self.bot.post_dms_messages( |
232 | | - guild_id=int(guild_id), # type: ignore |
233 | | - content=content, |
234 | | - msg_id=kwargs.get("event_id"), |
235 | | - file_image=file_image, # type: ignore |
236 | | - message_reference=message_reference, # type: ignore |
237 | | - ) |
238 | | - else: |
239 | | - result = await self.bot.post_messages( |
240 | | - channel_id=int(channel_id), # type: ignore |
241 | | - content=content, |
242 | | - msg_id=kwargs.get("event_id"), |
243 | | - file_image=file_image, # type: ignore |
244 | | - message_reference=message_reference, # type: ignore |
245 | | - ) |
246 | | - # FIXME: 如果是主动消息,返回的时间会是 None |
247 | | - # 暂时不清楚原因,先用当前时间代替 |
| 235 | + try: |
| 236 | + if detail_type == "private": |
| 237 | + result = await self.bot.post_dms_messages( |
| 238 | + guild_id=int(guild_id), # type: ignore |
| 239 | + content=content, |
| 240 | + msg_id=kwargs.get("event_id"), |
| 241 | + file_image=file_image, # type: ignore |
| 242 | + message_reference=message_reference, # type: ignore |
| 243 | + ) |
| 244 | + else: |
| 245 | + result = await self.bot.post_messages( |
| 246 | + channel_id=int(channel_id), # type: ignore |
| 247 | + content=content, |
| 248 | + msg_id=kwargs.get("event_id"), |
| 249 | + file_image=file_image, # type: ignore |
| 250 | + message_reference=message_reference, # type: ignore |
| 251 | + ) |
| 252 | + except ActionFailed as e: |
| 253 | + 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 的错误消息 |
248 | 257 | time = ( |
249 | 258 | result.timestamp.timestamp() |
250 | 259 | if result.timestamp |
|
0 commit comments