|
7 | 7 |
|
8 | 8 | from nonebot.adapters import Event as BaseEvent |
9 | 9 |
|
10 | | -from nonebot.compat import PYDANTIC_V2, model_dump |
| 10 | +from nonebot.compat import PYDANTIC_V2 |
11 | 11 | from nonebot.utils import escape_tag |
12 | 12 | from pydantic import BaseModel, Field |
13 | 13 |
|
|
93 | 93 | ) |
94 | 94 | from .api.types import UNSET, InteractionType, Missing, is_unset |
95 | 95 | from .message import Message |
96 | | -from .utils import log |
| 96 | +from .utils import log, model_dump |
97 | 97 |
|
98 | 98 |
|
99 | 99 | class EventType(str, Enum): |
@@ -238,7 +238,7 @@ def get_event_name(self) -> str: |
238 | 238 |
|
239 | 239 | @override |
240 | 240 | def get_event_description(self) -> str: |
241 | | - return escape_tag(str(model_dump(self))) |
| 241 | + return escape_tag(str(model_dump(self, omit_unset_values=True))) |
242 | 242 |
|
243 | 243 | @override |
244 | 244 | def get_message(self) -> Message: |
@@ -303,6 +303,32 @@ def original_message(self) -> Message: |
303 | 303 | def get_type(self) -> str: |
304 | 304 | return "message" |
305 | 305 |
|
| 306 | + @staticmethod |
| 307 | + def _format_preview(content: str, max_length: int = 120) -> str: |
| 308 | + normalized = content.replace("\r\n", "\n").replace("\r", "\n") |
| 309 | + normalized = normalized.replace("\n", "\\n").strip() |
| 310 | + if not normalized: |
| 311 | + return "<empty>" |
| 312 | + if len(normalized) > max_length: |
| 313 | + return normalized[: max_length - 3] + "..." |
| 314 | + return normalized |
| 315 | + |
| 316 | + @override |
| 317 | + def get_event_description(self) -> str: |
| 318 | + guild_id = getattr(self, "guild_id", UNSET) |
| 319 | + location = ( |
| 320 | + f"Guild {guild_id}, Channel {self.channel_id}" |
| 321 | + if not is_unset(guild_id) |
| 322 | + else f"Channel {self.channel_id}" |
| 323 | + ) |
| 324 | + preview = self._format_preview( |
| 325 | + self.get_message().extract_content() or self.content |
| 326 | + ) |
| 327 | + return escape_tag( |
| 328 | + f"Message {self.id} from {self.author.id}({self.author.username})" |
| 329 | + f"@[{location}] {preview}" |
| 330 | + ) |
| 331 | + |
306 | 332 | @override |
307 | 333 | def get_user_id(self) -> str: |
308 | 334 | return str(self.author.id) |
|
0 commit comments