Enum twitch_irc::message::UserNoticeEvent  
source · [−]#[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,
    },
    // some variants omitted
}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
Fields
is_resub: boolIndicates whether this is a first-time sub or a resub.
cumulative_months: u64Cumulative number of months the sending user has subscribed to this channel.
streak_months: Option<u64>Consecutive number of months the sending user has subscribed to this channel.
sub_plan: StringPrime, 1000, 2000 or 3000, referring to Prime or tier 1, 2 or 3 subs respectively.
sub_plan_name: StringA name the broadcaster configured for this sub plan, e.g. The Ninjas or
Channel subscription (nymn_hs)
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.
Raid
Fields
viewer_count: u64How many viewers participated in the raid and just raided this channel.
profile_image_url: StringA 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
Incoming raid to a channel.
The user sending this USERNOTICE message is the user raiding this channel.
SubGift
Fields
is_sender_anonymous: boolIndicates 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.
cumulative_months: u64Cumulative number of months the recipient has subscribed to this channel.
recipient: TwitchUserBasicsThe user that received this gifted subscription or resubscription.
sub_plan: String1000, 2000 or 3000, referring to tier 1, 2 or 3 subs respectively.
sub_plan_name: StringA name the broadcaster configured for this sub plan, e.g. The Ninjas or
Channel subscription (nymn_hs)
num_gifted_months: u64number of months in a single multi-month gift.
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.
SubMysteryGift
Fields
mass_gift_count: u64Indicates 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.
sender_total_gifts: u64Total number of gifts the sender has gifted in this channel. This includes the
number of gifts in this submysterygift or anonsubmysterygift.
Note tha
sub_plan: StringThe type of sub plan the recipients were gifted.
1000, 2000 or 3000, referring to tier 1, 2 or 3 subs respectively.
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.
AnonSubMysteryGift
Fields
mass_gift_count: u64Number of gifts the sender just gifted.
sub_plan: StringThe type of sub plan the recipients were gifted.
1000, 2000 or 3000, referring to tier 1, 2 or 3 subs respectively.
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.
GiftPaidUpgrade
Fields
gifter_login: StringUser 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: StringUser 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.
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.
AnonGiftPaidUpgrade
Fields
promotion: Option<SubGiftPromo>Present if this gift/upgrade is part of a Twitch gift sub promotion, e.g. Subtember or similar.
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.
Ritual
Fields
ritual_name: Stringcurrently only valid value: new_chatter
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
Fields
threshold: u64tier of bits badge the user just earned themselves, e.g. 10000 if they just
earned the 10k bits badge.
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
sourceimpl Clone for UserNoticeEvent
 
impl Clone for UserNoticeEvent
sourcefn clone(&self) -> UserNoticeEvent
 
fn clone(&self) -> UserNoticeEvent
1.0.0 · sourcefn clone_from(&mut self, source: &Self)
 
fn clone_from(&mut self, source: &Self)
source. Read moresourceimpl Debug for UserNoticeEvent
 
impl Debug for UserNoticeEvent
sourceimpl<'de> Deserialize<'de> for UserNoticeEvent
 
impl<'de> Deserialize<'de> for UserNoticeEvent
sourcefn 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>,
sourceimpl PartialEq<UserNoticeEvent> for UserNoticeEvent
 
impl PartialEq<UserNoticeEvent> for UserNoticeEvent
sourcefn eq(&self, other: &UserNoticeEvent) -> bool
 
fn eq(&self, other: &UserNoticeEvent) -> bool
sourceimpl Serialize for UserNoticeEvent
 
impl Serialize for UserNoticeEvent
impl Eq for UserNoticeEvent
impl StructuralEq for UserNoticeEvent
impl StructuralPartialEq for UserNoticeEvent
Auto Trait Implementations
impl RefUnwindSafe for UserNoticeEvent
impl Send for UserNoticeEvent
impl Sync for UserNoticeEvent
impl Unpin for UserNoticeEvent
impl UnwindSafe for UserNoticeEvent
Blanket Implementations
sourceimpl<T> BorrowMut<T> for Twhere
    T: ?Sized,
 
impl<T> BorrowMut<T> for Twhere
    T: ?Sized,
const: unstable · sourcefn borrow_mut(&mut self) -> &mut T
 
fn borrow_mut(&mut self) -> &mut T
sourceimpl<Q, K> Equivalent<K> for Qwhere
    Q: Eq + ?Sized,
    K: Borrow<Q> + ?Sized,
 
impl<Q, K> Equivalent<K> for Qwhere
    Q: Eq + ?Sized,
    K: Borrow<Q> + ?Sized,
sourcefn equivalent(&self, key: &K) -> bool
 
fn equivalent(&self, key: &K) -> bool
key and return true if they are equal.