Skip to content

Commit e6432c1

Browse files
committed
deploy: c9811ba
1 parent ef6cb90 commit e6432c1

File tree

99 files changed

+3153
-3140
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

99 files changed

+3153
-3140
lines changed

current/serenity/model/channel/enum.MessageActivityKind.html

+8-8
Large diffs are not rendered by default.

current/serenity/model/channel/enum.MessageReferenceKind.html

+8-8
Large diffs are not rendered by default.

current/serenity/model/channel/enum.MessageType.html

+8-8
Large diffs are not rendered by default.

current/serenity/model/channel/enum.Nonce.html

+3-3
Large diffs are not rendered by default.

current/serenity/model/channel/enum.PollLayoutType.html

+8-8
Large diffs are not rendered by default.

current/serenity/model/channel/enum.PollMediaEmoji.html

+3-3
Large diffs are not rendered by default.

current/serenity/model/channel/struct.ChannelMention.html

+3-3
Large diffs are not rendered by default.

current/serenity/model/channel/struct.CountDetails.html

+3-3
Large diffs are not rendered by default.

current/serenity/model/channel/struct.Message.html

+38-38
Large diffs are not rendered by default.

current/serenity/model/channel/struct.MessageActivity.html

+3-3
Large diffs are not rendered by default.

current/serenity/model/channel/struct.MessageApplication.html

+3-3
Large diffs are not rendered by default.

current/serenity/model/channel/struct.MessageFlags.html

+49-49
Large diffs are not rendered by default.

current/serenity/model/channel/struct.MessageReaction.html

+3-3
Large diffs are not rendered by default.

current/serenity/model/channel/struct.MessageReference.html

+3-3
Large diffs are not rendered by default.

current/serenity/model/channel/struct.MessageSnapshot.html

+3-3
Large diffs are not rendered by default.

current/serenity/model/channel/struct.Poll.html

+3-3
Large diffs are not rendered by default.

current/serenity/model/channel/struct.PollAnswer.html

+3-3
Large diffs are not rendered by default.

current/serenity/model/channel/struct.PollAnswerCount.html

+3-3
Large diffs are not rendered by default.

current/serenity/model/channel/struct.PollMedia.html

+3-3
Large diffs are not rendered by default.

current/serenity/model/channel/struct.PollResults.html

+3-3
Large diffs are not rendered by default.

current/serenity/model/channel/struct.RoleSubscriptionData.html

+3-3
Large diffs are not rendered by default.

current/serenity/model/event/enum.Event.html

+4-4
Large diffs are not rendered by default.

current/serenity/model/event/enum.GatewayEvent.html

+3-3
Large diffs are not rendered by default.

current/serenity/model/event/index.html

+1-1
Large diffs are not rendered by default.

current/serenity/model/event/struct.AutoModActionExecutionEvent.html

+3-3
Large diffs are not rendered by default.

current/serenity/model/event/struct.AutoModRuleCreateEvent.html

+3-3
Large diffs are not rendered by default.

current/serenity/model/event/struct.AutoModRuleDeleteEvent.html

+3-3
Large diffs are not rendered by default.

current/serenity/model/event/struct.AutoModRuleUpdateEvent.html

+3-3
Large diffs are not rendered by default.

current/serenity/model/event/struct.ChannelCreateEvent.html

+3-3
Large diffs are not rendered by default.

current/serenity/model/event/struct.ChannelDeleteEvent.html

+3-3
Large diffs are not rendered by default.

current/serenity/model/event/struct.ChannelPinsUpdateEvent.html

+3-3
Large diffs are not rendered by default.

current/serenity/model/event/struct.ChannelUpdateEvent.html

+3-3
Large diffs are not rendered by default.

current/serenity/model/event/struct.CommandPermissionsUpdateEvent.html

+3-3
Large diffs are not rendered by default.

current/serenity/model/event/struct.EntitlementCreateEvent.html

+3-3
Large diffs are not rendered by default.

current/serenity/model/event/struct.EntitlementDeleteEvent.html

+3-3
Large diffs are not rendered by default.

current/serenity/model/event/struct.EntitlementUpdateEvent.html

+3-3
Large diffs are not rendered by default.

current/serenity/model/event/struct.GuildAuditLogEntryCreateEvent.html

+3-3
Large diffs are not rendered by default.

current/serenity/model/event/struct.GuildBanAddEvent.html

+3-3
Large diffs are not rendered by default.

current/serenity/model/event/struct.GuildBanRemoveEvent.html

+3-3
Large diffs are not rendered by default.

current/serenity/model/event/struct.GuildCreateEvent.html

+3-3
Large diffs are not rendered by default.

current/serenity/model/event/struct.GuildDeleteEvent.html

+3-3
Large diffs are not rendered by default.

current/serenity/model/event/struct.GuildEmojisUpdateEvent.html

+3-3
Large diffs are not rendered by default.

current/serenity/model/event/struct.GuildIntegrationsUpdateEvent.html

+3-3
Large diffs are not rendered by default.

current/serenity/model/event/struct.GuildMemberAddEvent.html

+3-3
Large diffs are not rendered by default.

current/serenity/model/event/struct.GuildMemberRemoveEvent.html

+3-3
Large diffs are not rendered by default.

current/serenity/model/event/struct.GuildMemberUpdateEvent.html

+3-3
Large diffs are not rendered by default.

current/serenity/model/event/struct.GuildMembersChunkEvent.html

+5-5
Large diffs are not rendered by default.

current/serenity/model/event/struct.GuildRoleCreateEvent.html

+3-3
Large diffs are not rendered by default.

current/serenity/model/event/struct.GuildRoleDeleteEvent.html

+3-3
Large diffs are not rendered by default.

current/serenity/model/event/struct.GuildRoleUpdateEvent.html

+3-3
Large diffs are not rendered by default.

current/serenity/model/event/struct.GuildScheduledEventCreateEvent.html

+3-3
Large diffs are not rendered by default.

current/serenity/model/event/struct.GuildScheduledEventDeleteEvent.html

+3-3
Large diffs are not rendered by default.

current/serenity/model/event/struct.GuildScheduledEventUpdateEvent.html

+3-3
Large diffs are not rendered by default.

current/serenity/model/event/struct.GuildScheduledEventUserAddEvent.html

+3-3
Large diffs are not rendered by default.

current/serenity/model/event/struct.GuildScheduledEventUserRemoveEvent.html

+3-3
Large diffs are not rendered by default.

current/serenity/model/event/struct.GuildStickersUpdateEvent.html

+3-3
Large diffs are not rendered by default.

current/serenity/model/event/struct.GuildUpdateEvent.html

+3-3
Large diffs are not rendered by default.

current/serenity/model/event/struct.IntegrationCreateEvent.html

+3-3
Large diffs are not rendered by default.

current/serenity/model/event/struct.IntegrationDeleteEvent.html

+3-3
Large diffs are not rendered by default.

current/serenity/model/event/struct.IntegrationUpdateEvent.html

+3-3
Large diffs are not rendered by default.

current/serenity/model/event/struct.InteractionCreateEvent.html

+3-3
Large diffs are not rendered by default.

current/serenity/model/event/struct.InviteCreateEvent.html

+3-3
Large diffs are not rendered by default.

current/serenity/model/event/struct.InviteDeleteEvent.html

+3-3
Large diffs are not rendered by default.

current/serenity/model/event/struct.MessageCreateEvent.html

+3-3
Large diffs are not rendered by default.

current/serenity/model/event/struct.MessageDeleteBulkEvent.html

+3-3
Large diffs are not rendered by default.

current/serenity/model/event/struct.MessageDeleteEvent.html

+4-4
Large diffs are not rendered by default.

current/serenity/model/event/struct.MessagePollVoteAddEvent.html

+3-3
Large diffs are not rendered by default.

current/serenity/model/event/struct.MessagePollVoteRemoveEvent.html

+3-3
Large diffs are not rendered by default.

current/serenity/model/event/struct.MessageUpdateEvent.html

+4-4
Large diffs are not rendered by default.

current/serenity/model/event/struct.PresenceUpdateEvent.html

+3-3
Large diffs are not rendered by default.

current/serenity/model/event/struct.PresencesReplaceEvent.html

+3-3
Large diffs are not rendered by default.

current/serenity/model/event/struct.ReactionAddEvent.html

+3-3
Large diffs are not rendered by default.

current/serenity/model/event/struct.ReactionRemoveAllEvent.html

+4-4
Large diffs are not rendered by default.

current/serenity/model/event/struct.ReactionRemoveEmojiEvent.html

+3-3
Large diffs are not rendered by default.

current/serenity/model/event/struct.ReactionRemoveEvent.html

+3-3
Large diffs are not rendered by default.

current/serenity/model/event/struct.ReadyEvent.html

+3-3
Large diffs are not rendered by default.

current/serenity/model/event/struct.ResumedEvent.html

+3-3
Large diffs are not rendered by default.

current/serenity/model/event/struct.StageInstanceCreateEvent.html

+3-3
Large diffs are not rendered by default.

current/serenity/model/event/struct.StageInstanceDeleteEvent.html

+3-3
Large diffs are not rendered by default.

current/serenity/model/event/struct.StageInstanceUpdateEvent.html

+3-3
Large diffs are not rendered by default.

current/serenity/model/event/struct.ThreadCreateEvent.html

+3-3
Large diffs are not rendered by default.

current/serenity/model/event/struct.ThreadDeleteEvent.html

+3-3
Large diffs are not rendered by default.

current/serenity/model/event/struct.ThreadListSyncEvent.html

+3-3
Large diffs are not rendered by default.

current/serenity/model/event/struct.ThreadMemberUpdateEvent.html

+3-3
Large diffs are not rendered by default.

current/serenity/model/event/struct.ThreadMembersUpdateEvent.html

+3-3
Large diffs are not rendered by default.

current/serenity/model/event/struct.ThreadUpdateEvent.html

+3-3
Large diffs are not rendered by default.

current/serenity/model/event/struct.TypingStartEvent.html

+3-3
Large diffs are not rendered by default.

current/serenity/model/event/struct.UnknownEvent.html

+3-3
Large diffs are not rendered by default.

current/serenity/model/event/struct.UserUpdateEvent.html

+3-3
Large diffs are not rendered by default.

current/serenity/model/event/struct.VoiceChannelStatusUpdateEvent.html

+3-3
Large diffs are not rendered by default.

current/serenity/model/event/struct.VoiceServerUpdateEvent.html

+3-3
Large diffs are not rendered by default.

current/serenity/model/event/struct.VoiceStateUpdateEvent.html

+3-3
Large diffs are not rendered by default.

current/serenity/model/event/struct.WebhookUpdateEvent.html

+3-3
Large diffs are not rendered by default.

current/serenity/model/id/struct.EmojiId.html

+1-1
Large diffs are not rendered by default.

current/serenity/model/id/struct.MessageId.html

+5-5
Large diffs are not rendered by default.

current/src/serenity/model/channel/message.rs.html

+1,365-1,413
Large diffs are not rendered by default.

current/src/serenity/model/event.rs.html

+1,337-1,335
Large diffs are not rendered by default.

current/src/serenity/model/mod.rs.html

+1-1
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@
6262
<a href=#62 id=62 data-nosnippet>62</a></span><span class="kw">pub mod </span>prelude {
6363
<a href=#63 id=63 data-nosnippet>63</a> <span class="kw">pub</span>(<span class="kw">crate</span>) <span class="kw">use </span>std::collections::HashMap;
6464
<a href=#64 id=64 data-nosnippet>64</a>
65-
<a href=#65 id=65 data-nosnippet>65</a> <span class="kw">pub</span>(<span class="kw">crate</span>) <span class="kw">use </span>serde::de::{Error <span class="kw">as </span>DeError, Visitor};
65+
<a href=#65 id=65 data-nosnippet>65</a> <span class="kw">pub</span>(<span class="kw">crate</span>) <span class="kw">use </span>serde::de::Visitor;
6666
<a href=#66 id=66 data-nosnippet>66</a> <span class="kw">pub</span>(<span class="kw">crate</span>) <span class="kw">use </span>serde::{Deserialize, Deserializer};
6767
<a href=#67 id=67 data-nosnippet>67</a>
6868
<a href=#68 id=68 data-nosnippet>68</a> <span class="kw">pub use </span><span class="kw">super</span>::guild::automod::EventType <span class="kw">as </span>AutomodEventType;

current/src/serenity/model/utils.rs.html

+60-1
Original file line numberDiff line numberDiff line change
@@ -449,4 +449,63 @@
449449
<a href=#449 id=449 data-nosnippet>449</a> .map_err(|<span class="kw">_</span>| DeError::custom(<span class="string">"Invalid colour data"</span>))
450450
<a href=#450 id=450 data-nosnippet>450</a> })
451451
<a href=#451 id=451 data-nosnippet>451</a> .collect()
452-
<a href=#452 id=452 data-nosnippet>452</a>}</code></pre></div></section></main></body></html>
452+
<a href=#452 id=452 data-nosnippet>452</a>}
453+
<a href=#453 id=453 data-nosnippet>453</a>
454+
<a href=#454 id=454 data-nosnippet>454</a><span class="comment">// A function used for deserializing components within a MessageUpdateEvent.
455+
<a href=#455 id=455 data-nosnippet>455</a>// Due to discord now sending the whole message payload, we don't need to distinguish between None
456+
<a href=#456 id=456 data-nosnippet>456</a>// and empty, as such we always return Some.
457+
<a href=#457 id=457 data-nosnippet>457</a></span><span class="kw">pub fn </span>optional_deserialize_components&lt;<span class="lifetime">'de</span>, D&gt;(
458+
<a href=#458 id=458 data-nosnippet>458</a> deserializer: D,
459+
<a href=#459 id=459 data-nosnippet>459</a>) -&gt; <span class="prelude-ty">Result</span>&lt;<span class="prelude-ty">Option</span>&lt;Vec&lt;ActionRow&gt;&gt;, D::Error&gt;
460+
<a href=#460 id=460 data-nosnippet>460</a><span class="kw">where
461+
<a href=#461 id=461 data-nosnippet>461</a> </span>D: Deserializer&lt;<span class="lifetime">'de</span>&gt;,
462+
<a href=#462 id=462 data-nosnippet>462</a>{
463+
<a href=#463 id=463 data-nosnippet>463</a> deserialize_components(deserializer).map(<span class="prelude-val">Some</span>)
464+
<a href=#464 id=464 data-nosnippet>464</a>}
465+
<a href=#465 id=465 data-nosnippet>465</a>
466+
<a href=#466 id=466 data-nosnippet>466</a><span class="comment">// Custom deserialize function to deserialize components safely without knocking the whole message
467+
<a href=#467 id=467 data-nosnippet>467</a>// out when new components are found but not supported.
468+
<a href=#468 id=468 data-nosnippet>468</a></span><span class="kw">pub fn </span>deserialize_components&lt;<span class="lifetime">'de</span>, D&gt;(deserializer: D) -&gt; <span class="prelude-ty">Result</span>&lt;Vec&lt;ActionRow&gt;, D::Error&gt;
469+
<a href=#469 id=469 data-nosnippet>469</a><span class="kw">where
470+
<a href=#470 id=470 data-nosnippet>470</a> </span>D: Deserializer&lt;<span class="lifetime">'de</span>&gt;,
471+
<a href=#471 id=471 data-nosnippet>471</a>{
472+
<a href=#472 id=472 data-nosnippet>472</a> <span class="kw">struct </span>ComponentsVisitor;
473+
<a href=#473 id=473 data-nosnippet>473</a>
474+
<a href=#474 id=474 data-nosnippet>474</a> <span class="kw">impl</span>&lt;<span class="lifetime">'de</span>&gt; Visitor&lt;<span class="lifetime">'de</span>&gt; <span class="kw">for </span>ComponentsVisitor {
475+
<a href=#475 id=475 data-nosnippet>475</a> <span class="kw">type </span>Value = Vec&lt;ActionRow&gt;;
476+
<a href=#476 id=476 data-nosnippet>476</a>
477+
<a href=#477 id=477 data-nosnippet>477</a> <span class="kw">fn </span>expecting(<span class="kw-2">&amp;</span><span class="self">self</span>, formatter: <span class="kw-2">&amp;mut </span>std::fmt::Formatter&lt;<span class="lifetime">'_</span>&gt;) -&gt; std::fmt::Result {
478+
<a href=#478 id=478 data-nosnippet>478</a> formatter.write_str(<span class="string">"a sequence of ActionRow elements"</span>)
479+
<a href=#479 id=479 data-nosnippet>479</a> }
480+
<a href=#480 id=480 data-nosnippet>480</a>
481+
<a href=#481 id=481 data-nosnippet>481</a> <span class="kw">fn </span>visit_seq&lt;A&gt;(<span class="self">self</span>, <span class="kw-2">mut </span>seq: A) -&gt; <span class="prelude-ty">Result</span>&lt;<span class="self">Self</span>::Value, A::Error&gt;
482+
<a href=#482 id=482 data-nosnippet>482</a> <span class="kw">where
483+
<a href=#483 id=483 data-nosnippet>483</a> </span>A: serde::de::SeqAccess&lt;<span class="lifetime">'de</span>&gt;,
484+
<a href=#484 id=484 data-nosnippet>484</a> {
485+
<a href=#485 id=485 data-nosnippet>485</a> <span class="kw">let </span><span class="kw-2">mut </span>components = Vec::with_capacity(seq.size_hint().unwrap_or_default());
486+
<a href=#486 id=486 data-nosnippet>486</a>
487+
<a href=#487 id=487 data-nosnippet>487</a> <span class="kw">while let </span><span class="prelude-val">Some</span>(map) = seq.next_element::&lt;JsonMap&gt;()<span class="question-mark">? </span>{
488+
<a href=#488 id=488 data-nosnippet>488</a> <span class="comment">// We deserialize only the `kind` field to determine the component type.
489+
<a href=#489 id=489 data-nosnippet>489</a> // We later use this to check if its a supported component before deserializing the
490+
<a href=#490 id=490 data-nosnippet>490</a> // entire payload.
491+
<a href=#491 id=491 data-nosnippet>491</a> </span><span class="kw">let </span>raw_kind =
492+
<a href=#492 id=492 data-nosnippet>492</a> map.get(<span class="string">"type"</span>).ok_or_else(|| DeError::missing_field(<span class="string">"type"</span>))<span class="question-mark">?</span>.clone();
493+
<a href=#493 id=493 data-nosnippet>493</a> <span class="kw">let </span>kind: i64 = deserialize_val(raw_kind)<span class="question-mark">?</span>;
494+
<a href=#494 id=494 data-nosnippet>494</a>
495+
<a href=#495 id=495 data-nosnippet>495</a> <span class="comment">// Action rows are the only top level component supported in serenity at this time.
496+
<a href=#496 id=496 data-nosnippet>496</a> </span><span class="kw">if </span>kind == <span class="number">1 </span>{
497+
<a href=#497 id=497 data-nosnippet>497</a> <span class="kw">let </span>value = Value::from(map);
498+
<a href=#498 id=498 data-nosnippet>498</a> components.push(ActionRow::deserialize(value).map_err(DeError::custom)<span class="question-mark">?</span>);
499+
<a href=#499 id=499 data-nosnippet>499</a> } <span class="kw">else </span>{
500+
<a href=#500 id=500 data-nosnippet>500</a> <span class="comment">// Top level component is not an action row and cannot be supported on
501+
<a href=#501 id=501 data-nosnippet>501</a> // serenity@current without breaking changes, so we skip them.
502+
<a href=#502 id=502 data-nosnippet>502</a> </span><span class="macro">tracing::debug!</span>(<span class="string">"Skipping component with unsupported kind: {kind}"</span>);
503+
<a href=#503 id=503 data-nosnippet>503</a> }
504+
<a href=#504 id=504 data-nosnippet>504</a> }
505+
<a href=#505 id=505 data-nosnippet>505</a>
506+
<a href=#506 id=506 data-nosnippet>506</a> <span class="prelude-val">Ok</span>(components)
507+
<a href=#507 id=507 data-nosnippet>507</a> }
508+
<a href=#508 id=508 data-nosnippet>508</a> }
509+
<a href=#509 id=509 data-nosnippet>509</a>
510+
<a href=#510 id=510 data-nosnippet>510</a> deserializer.deserialize_seq(ComponentsVisitor)
511+
<a href=#511 id=511 data-nosnippet>511</a>}</code></pre></div></section></main></body></html>

0 commit comments

Comments
 (0)