Skip to content

Commit 10b75be

Browse files
committed
Merge branch 'fix/client-run' of https://github.com/DA-344/pycord into fix/client-run
2 parents 68a929f + a60ead8 commit 10b75be

File tree

6 files changed

+22
-35
lines changed

6 files changed

+22
-35
lines changed

.github/workflows/docs-localization-download.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ jobs:
4040
working-directory: ./docs
4141
- name: "Crowdin"
4242
id: crowdin
43-
uses: crowdin/github-action@v2.10.0
43+
uses: crowdin/github-action@v2.11.0
4444
with:
4545
upload_sources: false
4646
upload_translations: false

.github/workflows/docs-localization-upload.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ jobs:
4444
sphinx-intl update -p ./build/locales ${{ vars.SPHINX_LANGUAGES }}
4545
working-directory: ./docs
4646
- name: "Crowdin"
47-
uses: crowdin/github-action@v2.10.0
47+
uses: crowdin/github-action@v2.11.0
4848
with:
4949
upload_sources: true
5050
upload_translations: false

CHANGELOG.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,9 @@ These changes are available on the `master` branch, but have not yet been releas
1212

1313
### Added
1414

15+
- Added `RawMessageUpdateEvent.new_message` - message update events now contain full
16+
message objects ([#2780](https://github.com/Pycord-Development/pycord/pull/2780))
17+
1518
### Changed
1619

1720
### Fixed

discord/message.py

Lines changed: 0 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1208,26 +1208,6 @@ def _clear_emoji(self, emoji) -> Reaction | None:
12081208
del self.reactions[index]
12091209
return reaction
12101210

1211-
def _update(self, data):
1212-
# In an update scheme, 'author' key has to be handled before 'member'
1213-
# otherwise they overwrite each other which is undesirable.
1214-
# Since there's no good way to do this we have to iterate over every
1215-
# handler rather than iterating over the keys which is a little slower
1216-
for key, handler in self._HANDLERS:
1217-
try:
1218-
value = data[key]
1219-
except KeyError:
1220-
continue
1221-
else:
1222-
handler(self, value)
1223-
1224-
# clear the cached properties
1225-
for attr in self._CACHED_SLOTS:
1226-
try:
1227-
delattr(self, attr)
1228-
except AttributeError:
1229-
pass
1230-
12311211
def _handle_edited_timestamp(self, value: str) -> None:
12321212
self._edited_timestamp = utils.parse_time(value)
12331213

discord/raw_models.py

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -185,15 +185,21 @@ class RawMessageUpdateEvent(_RawReprMixin):
185185
cached_message: Optional[:class:`Message`]
186186
The cached message, if found in the internal message cache. Represents the message before
187187
it is modified by the data in :attr:`RawMessageUpdateEvent.data`.
188+
new_message: :class:`Message`
189+
The new message object. Represents the message after it is modified by the data in
190+
:attr:`RawMessageUpdateEvent.data`.
191+
192+
.. versionadded:: 2.7
188193
"""
189194

190195
__slots__ = ("message_id", "channel_id", "guild_id", "data", "cached_message")
191196

192-
def __init__(self, data: MessageUpdateEvent) -> None:
197+
def __init__(self, data: MessageUpdateEvent, new_message: Message) -> None:
193198
self.message_id: int = int(data["id"])
194199
self.channel_id: int = int(data["channel_id"])
195200
self.data: MessageUpdateEvent = data
196201
self.cached_message: Message | None = None
202+
self.new_message: Message = new_message
197203

198204
try:
199205
self.guild_id: int | None = int(data["guild_id"])

discord/state.py

Lines changed: 10 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -781,21 +781,19 @@ def parse_message_delete_bulk(self, data) -> None:
781781
self._messages.remove(msg) # type: ignore
782782

783783
def parse_message_update(self, data) -> None:
784-
raw = RawMessageUpdateEvent(data)
785-
message = self._get_message(raw.message_id)
786-
if message is not None:
787-
older_message = copy.copy(message)
788-
raw.cached_message = older_message
789-
self.dispatch("raw_message_edit", raw)
790-
message._update(data)
791-
# Coerce the `after` parameter to take the new updated Member
792-
# ref: #5999
793-
older_message.author = message.author
794-
self.dispatch("message_edit", older_message, message)
784+
old_message = self._get_message(raw.message_id)
785+
if old_message is not None:
786+
self._messages.remove(old_message)
787+
channel, _ = self._get_guild_channel(data)
788+
message = Message(channel=channel, data=data, state=self)
789+
self._messages.append(message)
790+
raw = RawMessageUpdateEvent(data, message)
791+
self.dispatch("raw_message_edit", raw)
792+
if old_message is not None:
793+
self.dispatch("message_edit", old_message, message)
795794
else:
796795
if poll_data := data.get("poll"):
797796
self.store_raw_poll(poll_data, raw)
798-
self.dispatch("raw_message_edit", raw)
799797

800798
if "components" in data and self._view_store.is_message_tracked(raw.message_id):
801799
self._view_store.update_from_message(raw.message_id, data["components"])

0 commit comments

Comments
 (0)