|
30 | 30 |
|
31 | 31 | from .automod import AutoModAction, AutoModTriggerType
|
32 | 32 | from .enums import ChannelType, try_enum
|
| 33 | +from .types.user import User |
33 | 34 |
|
34 | 35 | if TYPE_CHECKING:
|
35 | 36 | from .abc import MessageableChannel
|
|
43 | 44 | from .types.raw_models import (
|
44 | 45 | BulkMessageDeleteEvent,
|
45 | 46 | IntegrationDeleteEvent,
|
| 47 | + MemberRemoveEvent, |
46 | 48 | MessageDeleteEvent,
|
47 | 49 | MessageUpdateEvent,
|
48 | 50 | ReactionActionEvent,
|
49 | 51 | ReactionClearEmojiEvent,
|
50 | 52 | ReactionClearEvent,
|
51 | 53 | ScheduledEventSubscription,
|
52 | 54 | ThreadDeleteEvent,
|
| 55 | + ThreadMembersUpdateEvent, |
| 56 | + ThreadUpdateEvent, |
53 | 57 | TypingEvent,
|
54 | 58 | )
|
55 | 59 |
|
|
62 | 66 | "RawReactionClearEvent",
|
63 | 67 | "RawReactionClearEmojiEvent",
|
64 | 68 | "RawIntegrationDeleteEvent",
|
| 69 | + "RawThreadUpdateEvent", |
65 | 70 | "RawThreadDeleteEvent",
|
66 | 71 | "RawTypingEvent",
|
| 72 | + "RawMemberRemoveEvent", |
67 | 73 | "RawScheduledEventSubscription",
|
68 | 74 | "AutoModActionExecutionEvent",
|
| 75 | + "RawThreadMembersUpdateEvent", |
69 | 76 | )
|
70 | 77 |
|
71 | 78 |
|
@@ -305,6 +312,38 @@ def __init__(self, data: IntegrationDeleteEvent) -> None:
|
305 | 312 | self.application_id: int | None = None
|
306 | 313 |
|
307 | 314 |
|
| 315 | +class RawThreadUpdateEvent(_RawReprMixin): |
| 316 | + """Represents the payload for an :func:`on_raw_thread_update` event. |
| 317 | +
|
| 318 | + .. versionadded:: 2.4 |
| 319 | +
|
| 320 | + Attributes |
| 321 | + ---------- |
| 322 | + thread_id: :class:`int` |
| 323 | + The ID of the updated thread. |
| 324 | + thread_type: :class:`discord.ChannelType` |
| 325 | + The channel type of the updated thread. |
| 326 | + guild_id: :class:`int` |
| 327 | + The ID of the guild the thread belongs to. |
| 328 | + parent_id: :class:`int` |
| 329 | + The ID of the channel the thread belongs to. |
| 330 | + data: :class:`dict` |
| 331 | + The raw data given by the `gateway <https://discord.com/developers/docs/topics/gateway-events#thread-update>`_. |
| 332 | + thread: :class:`discord.Thread` | None |
| 333 | + The thread, if it could be found in the internal cache. |
| 334 | + """ |
| 335 | + |
| 336 | + __slots__ = ("thread_id", "thread_type", "parent_id", "guild_id", "data", "thread") |
| 337 | + |
| 338 | + def __init__(self, data: ThreadUpdateEvent) -> None: |
| 339 | + self.thread_id: int = int(data["id"]) |
| 340 | + self.thread_type: ChannelType = try_enum(ChannelType, data["type"]) |
| 341 | + self.guild_id: int = int(data["guild_id"]) |
| 342 | + self.parent_id: int = int(data["parent_id"]) |
| 343 | + self.data: ThreadUpdateEvent = data |
| 344 | + self.thread: Thread | None = None |
| 345 | + |
| 346 | + |
308 | 347 | class RawThreadDeleteEvent(_RawReprMixin):
|
309 | 348 | """Represents the payload for :func:`on_raw_thread_delete` event.
|
310 | 349 |
|
@@ -370,6 +409,26 @@ def __init__(self, data: TypingEvent) -> None:
|
370 | 409 | self.guild_id: int | None = None
|
371 | 410 |
|
372 | 411 |
|
| 412 | +class RawMemberRemoveEvent(_RawReprMixin): |
| 413 | + """Represents the payload for an :func:`on_raw_member_remove` event. |
| 414 | +
|
| 415 | + .. versionadded:: 2.4 |
| 416 | +
|
| 417 | + Attributes |
| 418 | + ---------- |
| 419 | + user: :class:`discord.User` |
| 420 | + The user that left the guild. |
| 421 | + guild_id: :class:`int` |
| 422 | + The ID of the guild the user left. |
| 423 | + """ |
| 424 | + |
| 425 | + __slots__ = ("user", "guild_id") |
| 426 | + |
| 427 | + def __init__(self, data: MemberRemoveEvent, user: User): |
| 428 | + self.user: User = user |
| 429 | + self.guild_id: int = int(data["guild_id"]) |
| 430 | + |
| 431 | + |
373 | 432 | class RawScheduledEventSubscription(_RawReprMixin):
|
374 | 433 | """Represents the payload for a :func:`raw_scheduled_event_user_add` or
|
375 | 434 | :func:`raw_scheduled_event_user_remove` event.
|
@@ -516,3 +575,29 @@ def __repr__(self) -> str:
|
516 | 575 | f"rule_id={self.rule_id!r} guild_id={self.guild_id!r} "
|
517 | 576 | f"user_id={self.user_id!r}>"
|
518 | 577 | )
|
| 578 | + |
| 579 | + |
| 580 | +class RawThreadMembersUpdateEvent(_RawReprMixin): |
| 581 | + """Represents the payload for an :func:`on_raw_thread_member_remove` event. |
| 582 | +
|
| 583 | + .. versionadded:: 2.4 |
| 584 | +
|
| 585 | + Attributes |
| 586 | + ---------- |
| 587 | + thread_id: :class:`int` |
| 588 | + The ID of the thread that was updated. |
| 589 | + guild_id: :class:`int` |
| 590 | + The ID of the guild the thread is in. |
| 591 | + member_count: :class:`int` |
| 592 | + The approximate number of members in the thread. Maximum of 50. |
| 593 | + data: :class:`dict` |
| 594 | + The raw data given by the `gateway <https://discord.com/developers/docs/topics/gateway-events#thread-members-update>`_. |
| 595 | + """ |
| 596 | + |
| 597 | + __slots__ = ("thread_id", "guild_id", "member_count", "data") |
| 598 | + |
| 599 | + def __init__(self, data: ThreadMembersUpdateEvent) -> None: |
| 600 | + self.thread_id = int(data["id"]) |
| 601 | + self.guild_id = int(data["guild_id"]) |
| 602 | + self.member_count = int(data["member_count"]) |
| 603 | + self.data = data |
0 commit comments