#[non_exhaustive]pub enum UserNoticeEvent {
SubOrResub {
is_resub: bool,
cumulative_months: u64,
streak_months: Option<u64>,
sub_plan: String,
sub_plan_name: String,
},
Raid {
viewer_count: u64,
profile_image_url: String,
},
SubGift {
is_sender_anonymous: bool,
cumulative_months: u64,
recipient: TwitchUserBasics,
sub_plan: String,
sub_plan_name: String,
num_gifted_months: u64,
},
SubMysteryGift {
mass_gift_count: u64,
sender_total_gifts: u64,
sub_plan: String,
},
AnonSubMysteryGift {
mass_gift_count: u64,
sub_plan: String,
},
GiftPaidUpgrade {
gifter_login: String,
gifter_name: String,
promotion: Option<SubGiftPromo>,
},
AnonGiftPaidUpgrade {
promotion: Option<SubGiftPromo>,
},
Ritual {
ritual_name: String,
},
BitsBadgeTier {
threshold: u64,
},
}
Expand description
A type of event that a UserNoticeMessage
represents.
The USERNOTICE
command is used for a wide variety of different “rich events” on
the Twitch platform. This enum provides parsed variants for a variety of documented
type of events.
However Twitch has been known to often add new events without prior notice or even
documenting them. For this reason, one should never expect this list to be exhaustive.
All events that don’t have a more concrete representation inside this enum get parsed
as a UserNoticeEvent::Unknown
(which is hidden from the documentation on purpose):
You should always use the _
rest-branch and event_id
when manually parsing other events.
let message = UserNoticeMessage::try_from(IRCMessage::parse("@badge-info=subscriber/2;badges=subscriber/2,bits/1000;color=#FF4500;display-name=whoopiix;emotes=;flags=;id=d2b32a02-3071-4c52-b2ce-bc3716acdc44;login=whoopiix;mod=0;msg-id=bitsbadgetier;msg-param-threshold=1000;room-id=71092938;subscriber=1;system-msg=bits\\sbadge\\stier\\snotification;tmi-sent-ts=1594520403813;user-id=104252055;user-type= :tmi.twitch.tv USERNOTICE #xqcow").unwrap()).unwrap();
match &message.event {
UserNoticeEvent::BitsBadgeTier { threshold } => println!("{} just unlocked the {} bits badge!", message.sender.name, threshold),
_ => println!("some other type of event: {}", message.event_id)
}
This enum is also marked as #[non_exhaustive]
to signify that more events may be
added to it in the future, without the need for a breaking release.
Variants (Non-exhaustive)§
This enum is marked as non-exhaustive
SubOrResub
Emitted when a user subscribes or resubscribes to a channel.
The user sending this USERNOTICE
is the user subscribing/resubscribing.
For brevity this event captures both sub
and resub
events because they both
carry the exact same parameters. You can differentiate between the two events using
is_resub
, which is false for sub
and true for resub
events.
Fields
Raid
Incoming raid to a channel.
The user sending this USERNOTICE
message is the user raiding this channel.
Fields
profile_image_url: String
A link to the profile image of the raiding user. This is not officially documented Empirical evidence suggests this is always the 70x70 version of the full profile picture.
E.g. https://static-cdn.jtvnw.net/jtv_user_pictures/cae3ca63-510d-4715-b4ce-059dcf938978-profile_image-70x70.png
SubGift
Indicates a gifted subscription.
This event combines subgift
and anonsubgift
. In case of
anonsubgift
the sending user of the USERNOTICE
carries no useful information,
it can be e.g. the channel owner or a service user like AnAnonymousGifter
. You should
always check for is_sender_anonymous
before using the sender of the USERNOTICE
.
Fields
is_sender_anonymous: bool
Indicates whether the user sending this USERNOTICE
is a dummy or a real gifter.
If this is true
the gift comes from an anonymous user, and the user sending the
USERNOTICE
carries no useful information and should be ignored.
recipient: TwitchUserBasics
The user that received this gifted subscription or resubscription.
SubMysteryGift
This event precedes a wave of subgift
/anonsubgift
messages.
(<User> is gifting <mass_gift_count> Tier 1 Subs to <Channel>'s community! They've gifted a total of <sender_total_gifts> in the channel!
)
This event combines submysterygift
and anonsubmysterygift
. In case of
anonsubmysterygift
the sending user of the USERNOTICE
carries no useful information,
it can be e.g. the channel owner or a service user like AnAnonymousGifter
. You should
always check for is_sender_anonymous
before using the sender of the USERNOTICE
.
Fields
mass_gift_count: u64
Indicates whether the user sending this USERNOTICE
is a dummy or a real gifter.
If this is true
the gift comes from an anonymous user, and the user sending the
USERNOTICE
carries no useful information and should be ignored.
Number of gifts the sender just gifted.
AnonSubMysteryGift
This event precedes a wave of subgift
/anonsubgift
messages.
(An anonymous user is gifting <mass_gift_count> Tier 1 Subs to <Channel>'s community!
)
This is a variant of submysterygift
where the sending user is not known.
Not that even though every USERNOTICE
carries a sending user, the sending user of this
type of USERNOTICE
carries no useful information, it can be e.g. the channel owner
or a service user like AnAnonymousGifter
.
Compared to submysterygift
this does not provide sender_total_gifts
.
Fields
GiftPaidUpgrade
Occurs when a user continues their gifted subscription they got from a non-anonymous gifter.
The sending user of this USERNOTICE
is the user upgrading their sub.
The user that gifted the original gift sub is specified by these params.
Fields
gifter_login: String
User that originally gifted the sub to this user.
This is the login name, see TwitchUserBasics
for more info about the difference
between id, login and name.
gifter_name: String
User that originally gifted the sub to this user.
This is the (display) name name, see TwitchUserBasics
for more info about the
difference between id, login and name.
promotion: Option<SubGiftPromo>
Present if this gift/upgrade is part of a Twitch gift sub promotion, e.g. Subtember or similar.
AnonGiftPaidUpgrade
Occurs when a user continues their gifted subscription they got from an anonymous gifter.
The sending user of this USERNOTICE
is the user upgrading their sub.
Fields
promotion: Option<SubGiftPromo>
Present if this gift/upgrade is part of a Twitch gift sub promotion, e.g. Subtember or similar.
Ritual
A user is new in a channel and uses the rituals feature to send a message letting
the chat know they are new.
<Sender> is new to <Channel>'s chat! Say hello!
BitsBadgeTier
When a user cheers and earns himself a new bits badge with that cheer (e.g. they just cheered more than/exactly 10000 bits in total, and just earned themselves the 10k bits badge)
Trait Implementations§
Source§impl Clone for UserNoticeEvent
impl Clone for UserNoticeEvent
Source§fn clone(&self) -> UserNoticeEvent
fn clone(&self) -> UserNoticeEvent
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read moreSource§impl Debug for UserNoticeEvent
impl Debug for UserNoticeEvent
Source§impl<'de> Deserialize<'de> for UserNoticeEvent
impl<'de> Deserialize<'de> for UserNoticeEvent
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Source§impl PartialEq for UserNoticeEvent
impl PartialEq for UserNoticeEvent
Source§impl Serialize for UserNoticeEvent
impl Serialize for UserNoticeEvent
impl Eq for UserNoticeEvent
impl StructuralPartialEq for UserNoticeEvent
Auto Trait Implementations§
impl Freeze for UserNoticeEvent
impl RefUnwindSafe for UserNoticeEvent
impl Send for UserNoticeEvent
impl Sync for UserNoticeEvent
impl Unpin for UserNoticeEvent
impl UnwindSafe for UserNoticeEvent
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key
and return true
if they are equal.Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self
into a Left
variant of Either<Self, Self>
if into_left
is true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self
into a Left
variant of Either<Self, Self>
if into_left(&self)
returns true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read more