Skip to content

Commit 0f7b46e

Browse files
NeloBlivionpre-commit-ci[bot]Lulalaby
authored
feat: Add data attribute to all raw event payloads (#2023)
Signed-off-by: Lala Sabathil <[email protected]> Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> Co-authored-by: Lala Sabathil <[email protected]>
1 parent 3e534b7 commit 0f7b46e

File tree

2 files changed

+78
-15
lines changed

2 files changed

+78
-15
lines changed

CHANGELOG.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,9 @@ These changes are available on the `master` branch, but have not yet been releas
3434
- Added support for
3535
[voice messages](https://github.com/discord/discord-api-docs/pull/6082).
3636
([#2016](https://github.com/Pycord-Development/pycord/pull/2016))
37+
- Added the `data` attribute to all
38+
[Raw Event payloads](https://docs.pycord.dev/en/master/api/models.html#events).
39+
([#2023](https://github.com/Pycord-Development/pycord/pull/2023))
3740

3841
### Changed
3942

discord/raw_models.py

Lines changed: 75 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -97,9 +97,13 @@ class RawMessageDeleteEvent(_RawReprMixin):
9797
The message ID that got deleted.
9898
cached_message: Optional[:class:`Message`]
9999
The cached message, if found in the internal message cache.
100+
data: :class:`dict`
101+
The raw data sent by the `gateway <https://discord.com/developers/docs/topics/gateway-events#message-delete>`_.
102+
103+
.. versionadded:: 2.5
100104
"""
101105

102-
__slots__ = ("message_id", "channel_id", "guild_id", "cached_message")
106+
__slots__ = ("message_id", "channel_id", "guild_id", "cached_message", "data")
103107

104108
def __init__(self, data: MessageDeleteEvent) -> None:
105109
self.message_id: int = int(data["id"])
@@ -109,6 +113,7 @@ def __init__(self, data: MessageDeleteEvent) -> None:
109113
self.guild_id: int | None = int(data["guild_id"])
110114
except KeyError:
111115
self.guild_id: int | None = None
116+
self.data: MessageDeleteEvent = data
112117

113118

114119
class RawBulkMessageDeleteEvent(_RawReprMixin):
@@ -124,9 +129,13 @@ class RawBulkMessageDeleteEvent(_RawReprMixin):
124129
The guild ID where the message got deleted, if applicable.
125130
cached_messages: List[:class:`Message`]
126131
The cached messages, if found in the internal message cache.
132+
data: :class:`dict`
133+
The raw data sent by the `gateway <https://discord.com/developers/docs/topics/gateway-events#message-delete-bulk>`_.
134+
135+
.. versionadded:: 2.5
127136
"""
128137

129-
__slots__ = ("message_ids", "channel_id", "guild_id", "cached_messages")
138+
__slots__ = ("message_ids", "channel_id", "guild_id", "cached_messages", "data")
130139

131140
def __init__(self, data: BulkMessageDeleteEvent) -> None:
132141
self.message_ids: set[int] = {int(x) for x in data.get("ids", [])}
@@ -137,6 +146,7 @@ def __init__(self, data: BulkMessageDeleteEvent) -> None:
137146
self.guild_id: int | None = int(data["guild_id"])
138147
except KeyError:
139148
self.guild_id: int | None = None
149+
self.data: BulkMessageDeleteEvent = data
140150

141151

142152
class RawMessageUpdateEvent(_RawReprMixin):
@@ -156,7 +166,7 @@ class RawMessageUpdateEvent(_RawReprMixin):
156166
.. versionadded:: 1.7
157167
158168
data: :class:`dict`
159-
The raw data given by the `gateway <https://discord.com/developers/docs/topics/gateway#message-update>`_
169+
The raw data sent by the `gateway <https://discord.com/developers/docs/topics/gateway#message-update>`_
160170
cached_message: Optional[:class:`Message`]
161171
The cached message, if found in the internal message cache. Represents the message before
162172
it is modified by the data in :attr:`RawMessageUpdateEvent.data`.
@@ -204,6 +214,10 @@ class RawReactionActionEvent(_RawReprMixin):
204214
``REACTION_REMOVE`` for reaction removal.
205215
206216
.. versionadded:: 1.3
217+
data: :class:`dict`
218+
The raw data sent by the `gateway <https://discord.com/developers/docs/topics/gateway-events#message-reaction-add>`_.
219+
220+
.. versionadded:: 2.5
207221
"""
208222

209223
__slots__ = (
@@ -214,6 +228,7 @@ class RawReactionActionEvent(_RawReprMixin):
214228
"emoji",
215229
"event_type",
216230
"member",
231+
"data",
217232
)
218233

219234
def __init__(
@@ -230,6 +245,7 @@ def __init__(
230245
self.guild_id: int | None = int(data["guild_id"])
231246
except KeyError:
232247
self.guild_id: int | None = None
248+
self.data: ReactionActionEvent = data
233249

234250

235251
class RawReactionClearEvent(_RawReprMixin):
@@ -243,9 +259,13 @@ class RawReactionClearEvent(_RawReprMixin):
243259
The channel ID where the reactions got cleared.
244260
guild_id: Optional[:class:`int`]
245261
The guild ID where the reactions got cleared.
262+
data: :class:`dict`
263+
The raw data sent by the `gateway <https://discord.com/developers/docs/topics/gateway-events#message-reaction-remove-all>`_.
264+
265+
.. versionadded:: 2.5
246266
"""
247267

248-
__slots__ = ("message_id", "channel_id", "guild_id")
268+
__slots__ = ("message_id", "channel_id", "guild_id", "data")
249269

250270
def __init__(self, data: ReactionClearEvent) -> None:
251271
self.message_id: int = int(data["message_id"])
@@ -255,6 +275,7 @@ def __init__(self, data: ReactionClearEvent) -> None:
255275
self.guild_id: int | None = int(data["guild_id"])
256276
except KeyError:
257277
self.guild_id: int | None = None
278+
self.data: ReactionClearEvent = data
258279

259280

260281
class RawReactionClearEmojiEvent(_RawReprMixin):
@@ -272,9 +293,13 @@ class RawReactionClearEmojiEvent(_RawReprMixin):
272293
The guild ID where the reactions got cleared.
273294
emoji: :class:`PartialEmoji`
274295
The custom or unicode emoji being removed.
296+
data: :class:`dict`
297+
The raw data sent by the `gateway <https://discord.com/developers/docs/topics/gateway-events#message-reaction-remove-emoji>`_.
298+
299+
.. versionadded:: 2.5
275300
"""
276301

277-
__slots__ = ("message_id", "channel_id", "guild_id", "emoji")
302+
__slots__ = ("message_id", "channel_id", "guild_id", "emoji", "data")
278303

279304
def __init__(self, data: ReactionClearEmojiEvent, emoji: PartialEmoji) -> None:
280305
self.emoji: PartialEmoji = emoji
@@ -285,6 +310,7 @@ def __init__(self, data: ReactionClearEmojiEvent, emoji: PartialEmoji) -> None:
285310
self.guild_id: int | None = int(data["guild_id"])
286311
except KeyError:
287312
self.guild_id: int | None = None
313+
self.data: ReactionClearEmojiEvent = data
288314

289315

290316
class RawIntegrationDeleteEvent(_RawReprMixin):
@@ -300,9 +326,13 @@ class RawIntegrationDeleteEvent(_RawReprMixin):
300326
The ID of the bot/OAuth2 application for this deleted integration.
301327
guild_id: :class:`int`
302328
The guild ID where the integration got deleted.
329+
data: :class:`dict`
330+
The raw data sent by the `gateway <https://discord.com/developers/docs/topics/gateway-events#integration-delete>`_.
331+
332+
.. versionadded:: 2.5
303333
"""
304334

305-
__slots__ = ("integration_id", "application_id", "guild_id")
335+
__slots__ = ("integration_id", "application_id", "guild_id", "data")
306336

307337
def __init__(self, data: IntegrationDeleteEvent) -> None:
308338
self.integration_id: int = int(data["id"])
@@ -312,6 +342,7 @@ def __init__(self, data: IntegrationDeleteEvent) -> None:
312342
self.application_id: int | None = int(data["application_id"])
313343
except KeyError:
314344
self.application_id: int | None = None
345+
self.data: IntegrationDeleteEvent = data
315346

316347

317348
class RawThreadUpdateEvent(_RawReprMixin):
@@ -330,7 +361,7 @@ class RawThreadUpdateEvent(_RawReprMixin):
330361
parent_id: :class:`int`
331362
The ID of the channel the thread belongs to.
332363
data: :class:`dict`
333-
The raw data given by the `gateway <https://discord.com/developers/docs/topics/gateway-events#thread-update>`_.
364+
The raw data sent by the `gateway <https://discord.com/developers/docs/topics/gateway-events#thread-update>`_.
334365
thread: :class:`discord.Thread` | None
335366
The thread, if it could be found in the internal cache.
336367
"""
@@ -364,16 +395,21 @@ class RawThreadDeleteEvent(_RawReprMixin):
364395
The ID of the channel the thread belonged to.
365396
thread: Optional[:class:`discord.Thread`]
366397
The thread that was deleted. This may be ``None`` if deleted thread is not found in internal cache.
398+
data: :class:`dict`
399+
The raw data sent by the `gateway <https://discord.com/developers/docs/topics/gateway-events#thread-delete>`_.
400+
401+
.. versionadded:: 2.5
367402
"""
368403

369-
__slots__ = ("thread_id", "thread_type", "guild_id", "parent_id", "thread")
404+
__slots__ = ("thread_id", "thread_type", "guild_id", "parent_id", "thread", "data")
370405

371406
def __init__(self, data: ThreadDeleteEvent) -> None:
372407
self.thread_id: int = int(data["id"])
373408
self.thread_type: ChannelType = try_enum(ChannelType, int(data["type"]))
374409
self.guild_id: int = int(data["guild_id"])
375410
self.parent_id: int = int(data["parent_id"])
376411
self.thread: Thread | None = None
412+
self.data: ThreadDeleteEvent = data
377413

378414

379415
class RawTypingEvent(_RawReprMixin):
@@ -393,9 +429,13 @@ class RawTypingEvent(_RawReprMixin):
393429
The guild ID where the typing originated from, if applicable.
394430
member: Optional[:class:`Member`]
395431
The member who started typing. Only available if the member started typing in a guild.
432+
data: :class:`dict`
433+
The raw data sent by the `gateway <https://discord.com/developers/docs/topics/gateway-events#typing-start>`_.
434+
435+
.. versionadded:: 2.5
396436
"""
397437

398-
__slots__ = ("channel_id", "user_id", "when", "guild_id", "member")
438+
__slots__ = ("channel_id", "user_id", "when", "guild_id", "member", "data")
399439

400440
def __init__(self, data: TypingEvent) -> None:
401441
self.channel_id: int = int(data["channel_id"])
@@ -409,6 +449,7 @@ def __init__(self, data: TypingEvent) -> None:
409449
self.guild_id: int | None = int(data["guild_id"])
410450
except KeyError:
411451
self.guild_id: int | None = None
452+
self.data: TypingEvent = data
412453

413454

414455
class RawMemberRemoveEvent(_RawReprMixin):
@@ -422,13 +463,18 @@ class RawMemberRemoveEvent(_RawReprMixin):
422463
The user that left the guild.
423464
guild_id: :class:`int`
424465
The ID of the guild the user left.
466+
data: :class:`dict`
467+
The raw data sent by the `gateway <https://discord.com/developers/docs/topics/gateway-events#guild-member-remove>`_.
468+
469+
.. versionadded:: 2.5
425470
"""
426471

427-
__slots__ = ("user", "guild_id")
472+
__slots__ = ("user", "guild_id", "data")
428473

429474
def __init__(self, data: MemberRemoveEvent, user: User):
430475
self.user: User = user
431476
self.guild_id: int = int(data["guild_id"])
477+
self.data: MemberRemoveEvent = data
432478

433479

434480
class RawScheduledEventSubscription(_RawReprMixin):
@@ -448,15 +494,20 @@ class RawScheduledEventSubscription(_RawReprMixin):
448494
event_type: :class:`str`
449495
Can be either ``USER_ADD`` or ``USER_REMOVE`` depending on
450496
the event called.
497+
data: :class:`dict`
498+
The raw data sent by the `gateway <https://discord.com/developers/docs/topics/gateway-events#guild-scheduled-event-user-add>`_.
499+
500+
.. versionadded:: 2.5
451501
"""
452502

453-
__slots__ = ("event_id", "guild", "user_id", "event_type")
503+
__slots__ = ("event_id", "guild", "user_id", "event_type", "data")
454504

455505
def __init__(self, data: ScheduledEventSubscription, event_type: str):
456506
self.event_id: int = int(data["guild_scheduled_event_id"])
457507
self.user_id: int = int(data["user_id"])
458508
self.guild: Guild | None = None
459509
self.event_type: str = event_type
510+
self.data: ScheduledEventSubscription = data
460511

461512

462513
class AutoModActionExecutionEvent:
@@ -503,6 +554,10 @@ class AutoModActionExecutionEvent:
503554
The word or phrase configured that was matched in the content.
504555
matched_content: :class:`str`
505556
The substring in the content that was matched.
557+
data: :class:`dict`
558+
The raw data sent by the `gateway <https://discord.com/developers/docs/topics/gateway-events#auto-moderation-action-execution>`_.
559+
560+
.. versionadded:: 2.5
506561
"""
507562

508563
__slots__ = (
@@ -522,6 +577,7 @@ class AutoModActionExecutionEvent:
522577
"message",
523578
"alert_system_message_id",
524579
"alert_system_message",
580+
"data",
525581
)
526582

527583
def __init__(self, state: ConnectionState, data: AutoModActionExecution) -> None:
@@ -570,6 +626,7 @@ def __init__(self, state: ConnectionState, data: AutoModActionExecution) -> None
570626
except KeyError:
571627
self.alert_system_message_id: int | None = None
572628
self.alert_system_message: Message | None = None
629+
self.data: AutoModActionExecution = data
573630

574631
def __repr__(self) -> str:
575632
return (
@@ -593,7 +650,9 @@ class RawThreadMembersUpdateEvent(_RawReprMixin):
593650
member_count: :class:`int`
594651
The approximate number of members in the thread. Maximum of 50.
595652
data: :class:`dict`
596-
The raw data given by the `gateway <https://discord.com/developers/docs/topics/gateway-events#thread-members-update>`_.
653+
The raw data sent by the `gateway <https://discord.com/developers/docs/topics/gateway-events#thread-members-update>`_.
654+
655+
.. versionadded:: 2.5
597656
"""
598657

599658
__slots__ = ("thread_id", "guild_id", "member_count", "data")
@@ -602,7 +661,7 @@ def __init__(self, data: ThreadMembersUpdateEvent) -> None:
602661
self.thread_id = int(data["id"])
603662
self.guild_id = int(data["guild_id"])
604663
self.member_count = int(data["member_count"])
605-
self.data = data
664+
self.data: ThreadMembersUpdateEvent = data
606665

607666

608667
class RawAuditLogEntryEvent(_RawReprMixin):
@@ -632,7 +691,7 @@ class RawAuditLogEntryEvent(_RawReprMixin):
632691
contains extra information. See :class:`AuditLogAction` for
633692
which actions have this field filled out.
634693
data: :class:`dict`
635-
The raw data given by the `gateway <https://discord.com/developers/docs/topics/gateway-events#guild-audit-log-entry-create>`_.
694+
The raw data sent by the `gateway <https://discord.com/developers/docs/topics/gateway-events#guild-audit-log-entry-create>`_.
636695
"""
637696

638697
__slots__ = (
@@ -644,6 +703,7 @@ class RawAuditLogEntryEvent(_RawReprMixin):
644703
"reason",
645704
"extra",
646705
"changes",
706+
"data",
647707
)
648708

649709
def __init__(self, data: AuditLogEntryEvent) -> None:
@@ -657,4 +717,4 @@ def __init__(self, data: AuditLogEntryEvent) -> None:
657717
self.reason = data.get("reason")
658718
self.extra = data.get("options")
659719
self.changes = data.get("changes")
660-
self.data = data
720+
self.data: AuditLogEntryEvent = data

0 commit comments

Comments
 (0)