go-twitch/eventsub/events/chat.go

605 lines
21 KiB
Go
Raw Normal View History

2024-03-05 12:14:18 -05:00
package events
import "time"
type ChannelBanEvent struct {
// The user ID for the user who was banned on the specified channel.
UserID string `json:"user_id"`
// The user login for the user who was banned on the specified channel.
UserLogin string `json:"user_login"`
// The user display name for the user who was banned on the specified channel.
UserName string `json:"user_name"`
// The requested broadcaster ID.
BroadcasterUserID string `json:"broadcaster_user_id"`
// The requested broadcaster login.
BroadcasterUserLogin string `json:"broadcaster_user_login"`
// The requested broadcaster display name.
BroadcasterUserName string `json:"broadcaster_user_name"`
// The user ID of the issuer of the ban.
ModeratorUserID string `json:"moderator_user_id"`
// The user login of the issuer of the ban.
ModeratorUserLogin string `json:"moderator_user_login"`
// The user name of the issuer of the ban.
ModeratorUserName string `json:"moderator_user_name"`
// The reason behind the ban.
Reason string `json:"reason"`
// The UTC date and time (in RFC3339 format) of when the user was banned or put in a timeout.
BannedAt time.Time `json:"banned_at"`
// The UTC date and time (in RFC3339 format) of when the timeout ends.
// Is null if the user was banned instead of put in a timeout.
EndsAt *time.Time `json:"ends_at"`
// Indicates whether the ban is permanent (true) or a timeout (false). If true, ends_at will be null.
IsPermanent bool `json:"is_permanent"`
}
type ChannelChatClearEvent struct {
// The broadcaster user ID.
BroadcasterUserID string `json:"broadcaster_user_id"`
// The broadcaster user login.
BroadcasterUserLogin string `json:"broadcaster_user_login"`
// The broadcaster user display name.
BroadcasterUserName string `json:"broadcaster_user_name"`
}
type ChannelChatClearUserMessagesEvent struct {
// The broadcaster user ID.
BroadcasterUserID string `json:"broadcaster_user_id"`
// The broadcaster user login.
BroadcasterUserLogin string `json:"broadcaster_user_login"`
// The broadcaster user display name.
BroadcasterUserName string `json:"broadcaster_user_name"`
// The ID of the user that was banned or put in a timeout. All of their messages are deleted.
TargetUserID string `json:"target_user_id"`
// The user name of the user that was banned or put in a timeout.
TargetUserName string `json:"target_user_name"`
// The user login of the user that was banned or put in a timeout.
TargetUserLogin string `json:"target_user_login"`
}
type Badge struct {
// An ID that identifies this set of chat badges. For example, Bits or Subscriber.
SetID string `json:"set_id"`
// An ID that identifies this version of the badge.
// The ID can be any value. For example, for Bits, the ID is the Bits tier level, but for World of Warcraft, it could be Alliance or Horde.
ID string `json:"id"`
// Contains metadata related to the chat badges in the badges tag.
// Currently, this tag contains metadata only for subscriber badges, to indicate the number of months the user has been a subscriber.
Info string `json:"info"`
}
type MessageData struct {
// The chat message in plain text.
Text string `json:"text"`
// Ordered list of chat message fragments.
Framgments []struct {
// The type of chat message fragment.
// Possible values:
//
// text, cheermote, emote, mention
Type string `json:"type"`
// Message text in fragment.
Text string `json:"text"`
// Metadata pertaining to the cheermote.
Cheermote *struct {
// The name portion of the Cheermote string that you use in chat to cheer Bits.
// The full Cheermote string is the concatenation of {prefix} + {number of Bits}.
// For example, if the prefix is “Cheer” and you want to cheer 100 Bits, the full Cheermote string is Cheer100.
// When the Cheermote string is entered in chat, Twitch converts it to the image associated with the Bits tier that was cheered.
Prefix string `json:"prefix"`
// The amount of bits cheered.
Bits int `json:"bits"`
// The tier level of the cheermote.
Tier int `json:"tier"`
} `json:"cheermote"`
// Metadata pertaining to the emote.
Emote *struct {
// An ID that uniquely identifies this emote.
ID string `json:"id"`
// An ID that identifies the emote set that the emote belongs to.
EmoteSetID string `json:"emote_set_id"`
// The ID of the broadcaster who owns the emote.
OwnerID string `json:"owner_id"`
// The formats that the emote is available in.
// For example, if the emote is available only as a static PNG, the array contains only static.
// But if the emote is available as a static PNG and an animated GIF, the array contains static and animated.
// The possible formats are:
//
// animated - An animated GIF is available for this emote.
//
// static - A static PNG file is available for this emote.
Format []string `json:"format"`
} `json:"emote"`
// Metadata pertaining to the mention.
Mention *struct {
// The user ID of the mentioned user.
UserID string `json:"user_id"`
// The user name of the mentioned user.
UserName string `json:"user_name"`
// The user login of the mentioned user.
UserLogin string `json:"user_login"`
} `json:"mention"`
}
}
type ChannelChatMessageEvent struct {
// The broadcaster user ID.
BroadcasterUserID string `json:"broadcaster_user_id"`
// The broadcaster user login.
BroadcasterUserLogin string `json:"broadcaster_user_login"`
// The broadcaster user display name.
BroadcasterUserName string `json:"broadcaster_user_name"`
// The user ID of the user that sent the message.
ChatterUserID string `json:"chatter_user_id"`
// The user name of the user that sent the message.
ChatterUserName string `json:"chatter_user_name"`
// The user login of the user that sent the message.
ChatterUserLogin string `json:"chatter_user_login"`
// A UUID that identifies the message.
MessageID string `json:"message_id"`
// The structured chat message.
Message MessageData `json:"message"`
// The type of message. Possible values:
//
// text, channel_points_highlighted, channel_points_sub_only, user_intro
MessageType string `json:"message_type"`
// List of chat badges.
Badges []Badge `json:"badges"`
// Metadata if this message is a cheer.
Cheer *struct {
// The amount of Bits the user cheered.
Bits int `json:"bits"`
}
// The color of the users name in the chat room.
// This is a hexadecimal RGB color code in the form, #<RGB>.
// This tag may be empty if it is never set.
Color string `json:"color"`
// Metadata if this message is a reply.
Reply *struct {
// An ID that uniquely identifies the parent message that this message is replying to.
ParentMessageID string `json:"parent_message_id"`
// The message body of the parent message.
ParentMessageBody string `json:"parent_message_body"`
// User ID of the sender of the parent message.
ParentUserID string `json:"parent_user_id"`
// User name of the sender of the parent message.
ParentUserName string `json:"parent_user_name"`
// User login of the sender of the parent message.
ParentUserLogin string `json:"parent_user_login"`
// An ID that identifies the parent message of the reply thread.
ThreadMessageID string `json:"thread_message_id"`
// User ID of the sender of the threads parent message.
ThreadUserID string `json:"thread_user_id"`
// User name of the sender of the threads parent message.
ThreadUserName string `json:"thread_user_name"`
// User login of the sender of the threads parent message.
ThreadUserLogin string `json:"thread_user_login"`
} `json:"reply"`
// The ID of a channel points custom reward that was redeemed.
ChannelPointsCustomRewardID *string `json:"channel_points_custom_reward_id"`
}
type ChannelChatMessageDeleteEvent struct {
// The broadcaster user ID.
BroadcasterUserID string `json:"broadcaster_user_id"`
// The broadcaster user login.
BroadcasterUserLogin string `json:"broadcaster_user_login"`
// The broadcaster user display name.
BroadcasterUserName string `json:"broadcaster_user_name"`
// The ID of the user whose message was deleted.
TargetUserID string `json:"target_user_id"`
// The user name of the user whose message was deleted.
TargetUserName string `json:"target_user_name"`
// The user login of the user whose message was deleted.
TargetUserLogin string `json:"target_user_login"`
// A UUID that identifies the message that was removed.
MessageID string `json:"message_id"`
}
type ChannelChatNotificationEvent struct {
// The broadcaster user ID.
BroadcasterUserID string `json:"broadcaster_user_id"`
// The broadcaster user login.
BroadcasterUserLogin string `json:"broadcaster_user_login"`
// The broadcaster user name.
BroadcasterUserName string `json:"broadcaster_user_name"`
// The user ID of the user that sent the message.
ChatterUserID string `json:"chatter_user_id"`
// The user login of the user that sent the message.
ChatterUserLogin string `json:"chatter_user_login"`
// The user name of the user that sent the message.
ChatterUserName string `json:"chatter_user_name"`
// Whether or not the chatter is anonymous.
ChatterIsAnonymous bool `json:"chatter_is_anonymous"`
// The color of the user's name in the chat room.
Color string `json:"color"`
// List of chat badges
Badges []Badge `json:"badges"`
// The message Twitch shows in the chat room for this notice.
SystemMessage string `json:"system_message"`
// A UUID that identifies the message.
MessageID string `json:"message_id"`
// The structured chat message.
Message MessageData `json:"message"`
// The type of notice.
// Possible values are:
//
// sub, resub, sub_gift, community_sub_gift, gift_paid_upgrade, raid, unraid, pay_it_forward, announcement, bits_badge_tier, charity_donation
NoticeType string `json:"notice_type"`
// Information about the sub event. Null if notice_type is not sub.
Sub *struct {
// The type of subscription plan being used. Possible values are:
//
// 1000 - First level of paid or Prime subscription.
//
// 2000 - Second level of paid subscription.
//
// 3000 - Third level of paid subscription.
SubTier string `json:"sub_tier"`
// Indicates if the subscription was obtained through Amazon Prime.
IsPrime bool `json:"is_prime"`
// The number of months the subscription is for.
DurationMonths int `json:"duration_months"`
} `json:"sub"`
// Information about the resub event. Null if notice_type is not resub.
Resub *struct {
// The total number of months the user has subscribed.
CumulativeMonths int `json:"cumulative_months"`
// The number of months the subscription is for.
DurationMonths int `json:"duration_months"`
// The total number of months the user has subscribed consecutively.
StreakMonths int `json:"streak_months"`
// The type of subscription plan being used. Possible values are:
//
// 1000 - First level of paid or Prime subscription.
//
// 2000 - Second level of paid subscription.
//
// 3000 - Third level of paid subscription.
SubTier string `json:"sub_tier"`
// Whether or not the resub was prime resub.
IsPrime bool `json:"is_prime"`
// Whether or not the resub was a result of a gift
IsGift bool `json:"is_gift"`
// Whether or not the gift was anonymous.
GifterIsAnonymous bool `json:"gifter_is_anonymous"`
// The user ID of the user who sent the gift.
GifterUserID string `json:"gifter_user_id"`
// The user login of the user who sent the gift.
GifterUserLogin string `json:"gifter_user_login"`
// The user name of the user who sent the gift.
GifterUserName string `json:"gifter_user_name"`
} `json:"resub"`
// Information about the gift sub event. Null if notice_type is not sub_gift.
SubGift *struct {
// The number of months the subscription is for.
DurationMonths int `json:"duration_months"`
// The amount of gifts the gifter has given in this channel. Null if anonymous.
CumulativeTotal *int `json:"cumulative_total"`
// The user ID of the subscription gift recipient.
RecipientUserID string `json:"recipient_user_id"`
// The user login of the subscription gift recipient.
RecipientUserLogin string `json:"recipient_user_login"`
// The user name of the subscription gift recipient.
RecipientUserName string `json:"recipient_user_name"`
// The type of subscription plan being used. Possible values are:
//
// 1000 - First level of paid or Prime subscription.
//
// 2000 - Second level of paid subscription.
//
// 3000 - Third level of paid subscription.
SubTier string `json:"sub_tier"`
// The ID of the associated community gift. Null if not associated with a community gift.
CommunityGiftID *string `json:"community_gift_id"`
} `json:"sub_gift"`
// Information about the community gift sub event. Null if notice_type is not community_sub_gift.
CommunitySubGift *struct {
// The ID of the associated community gift.
ID string `json:"id"`
// The number of subscriptions being gifted.
Total int `json:"total"`
// The type of subscription plan being used. Possible values are:
//
// 1000 - First level of paid or Prime subscription.
//
// 2000 - Second level of paid subscription.
//
// 3000 - Third level of paid subscription.
SubTier string `json:"sub_tier"`
// The amount of gifts the gifter has given in this channel. Null if anonymous.
CumulativeTotal *int `json:"cumulative_total"`
} `json:"community_sub_gift"`
// Information about the community gift paid upgrade event. Null if notice_type is not gift_paid_upgrade.
GiftPaidUpgrade *struct {
// Whether the gift was given anonymously.
GifterIsAnonymous bool `json:"gifter_is_anonymous"`
// The user ID of the user who gifted the subscription. Null if anonymous.
GifterUserID *string `json:"gifter_user_id"`
// The user login of the user who gifted the subscription. Null if anonymous.
GifterUserLogin *string `json:"gifter_user_login"`
// The user name of the user who gifted the subscription. Null if anonymous.
GifterUserName *string `json:"gifter_user_name"`
} `json:"gift_paid_upgrade"`
// Information about the Prime gift paid upgrade event. Null if notice_type is not prime_paid_upgrade.
PrimePaidUpgrade *struct {
// The type of subscription plan being used. Possible values are:
//
// 1000 - First level of paid or Prime subscription.
//
// 2000 - Second level of paid subscription.
//
// 3000 - Third level of paid subscription.
SubTier string `json:"sub_tier"`
} `json:"prime_paid_upgrade"`
// Information about the raid event. Null if notice_type is not raid.
Raid *struct {
// The user ID of the broadcaster raiding this channel.
UserID string `json:"user_id"`
// The user name of the broadcaster raiding this channel.
UserName string `json:"user_name"`
// The user login of the broadcaster raiding this channel.
UserLogin string `json:"user_login"`
// The number of viewers raiding this channel from the broadcasters channel.
ViewerCount int `json:"viewer_count"`
// Profile image URL of the broadcaster raiding this channel.
ProfileImageURL string `json:"profile_image_url"`
} `json:"raid"`
// Returns an empty payload if notice_type is unraid, otherwise returns null.
Unraid *struct{} `json:"unraid"`
// Information about the pay it forward event. Null if notice_type is not pay_it_forward.
PayItForward *struct {
// Whether the gift was given anonymously.
GifterIsAnonymous bool `json:"gifter_is_anonymous"`
// The user ID of the user who gifted the subscription. Null if anonymous.
GifterUserID *string `json:"gifter_user_id"`
// The user login of the user who gifted the subscription. Null if anonymous.
GifterUserLogin *string `json:"gifter_user_login"`
// The user name of the user who gifted the subscription. Null if anonymous.
GifterUserName *string `json:"gifter_user_name"`
} `json:"pay_it_forward"`
// Information about the announcement event. Null if notice_type is not announcement.
Announcement *struct {
// Color of the announcement.
Color string `json:"color"`
} `json:"announcement"`
// Information about the charity donation event. Null if notice_type is not charity_donation.
CharityDonation *struct {
// Name of the charity.
CharityName string `json:"charity_name"`
// An object that contains the amount of money that the user paid.
Amount struct {
// The monetary amount. The amount is specified in the currencys minor unit.
// For example, the minor units for USD is cents, so if the amount is $5.50 USD, value is set to 550.
Value int `json:"value"`
// The number of decimal places used by the currency.
// For example, USD uses two decimal places.
DecimalPlace int `json:"decimal_place"`
// The ISO-4217 three-letter currency code that identifies the type of currency in value.
Currency string `json:"currency"`
} `json:"amount"`
} `json:"charity_donation"`
// Information about the bits badge tier event. Null if notice_type is not bits_badge_tier.
BitsBadgeTier *struct {
// The tier of the Bits badge the user just earned. For example, 100, 1000, or 10000.
Tier int `json:"tier"`
} `json:"bits_badge_tier"`
}
type ChannelChatSettingsUpdateEvent struct {
// The ID of the broadcaster specified in the request.
BroadcasterUserID string `json:"broadcaster_user_id"`
// The login of the broadcaster specified in the request.
BroadcasterUserLogin string `json:"broadcaster_user_login"`
// The user name of the broadcaster specified in the request.
BroadcasterUserName string `json:"broadcaster_user_name"`
// A Boolean value that determines whether chat messages must contain only emotes.
// True if only messages that are 100% emotes are allowed; otherwise false.
EmoteMode bool `json:"emote_mode"`
// A Boolean value that determines whether the broadcaster restricts the chat room to followers only, based on how long theyve followed.
//
// True if the broadcaster restricts the chat room to followers only; otherwise false.
//
// See follower_mode_duration_minutes for how long the followers must have followed the broadcaster to participate in the chat room.
FollowerMode bool `json:"follower_mode"`
// The length of time, in minutes, that the followers must have followed the broadcaster to participate in the chat room. See follower_mode.
//
// Null if follower_mode is false.
FollowerModeDurationMinutes *int `json:"follower_mode_duration_minutes"`
// A Boolean value that determines whether the broadcaster limits how often users in the chat room are allowed to send messages.
//
// Is true, if the broadcaster applies a delay; otherwise, false.
//
// See slow_mode_wait_time_seconds for the delay.
SlowMode bool `json:"slow_mode"`
// The amount of time, in seconds, that users need to wait between sending messages. See slow_mode.
//
// Null if slow_mode is false.
SlowModeWaitTimeSeconds *int `json:"slow_mode_wait_time_seconds"`
// A Boolean value that determines whether only users that subscribe to the broadcasters channel can talk in the chat room.
//
// True if the broadcaster restricts the chat room to subscribers only; otherwise false.
SubscriberMode bool `json:"subscriber_mode"`
// A Boolean value that determines whether the broadcaster requires users to post only unique messages in the chat room.
//
// True if the broadcaster requires unique messages only; otherwise false.
UniqueChatMode bool `json:"unique_chat_mode"`
}
type ChannelChatUserMessageHoldEvent struct {
// The ID of the broadcaster specified in the request.
BroadcasterUserID string `json:"broadcaster_user_id"`
// The login of the broadcaster specified in the request.
BroadcasterUserLogin string `json:"broadcaster_user_login"`
// The user name of the broadcaster specified in the request.
BroadcasterUserName string `json:"broadcaster_user_name"`
// The User ID of the message sender.
UserID string `json:"user_id"`
// The message senders login name.
UserLogin string `json:"user_login"`
// The message senders display name.
UserName string `json:"user_name"`
// The ID of the message that was flagged by automod.
MessageID string `json:"message_id"`
// The body of the message.
Message []AutomodMessage `json:"message"`
}
type ChannelChatUserMessageUpdateEvent struct {
// The ID of the broadcaster specified in the request.
BroadcasterUserID string `json:"broadcaster_user_id"`
// The login of the broadcaster specified in the request.
BroadcasterUserLogin string `json:"broadcaster_user_login"`
// The user name of the broadcaster specified in the request.
BroadcasterUserName string `json:"broadcaster_user_name"`
// The User ID of the message sender.
UserID string `json:"user_id"`
// The message senders login name.
UserLogin string `json:"user_login"`
// The message senders display name.
UserName string `json:"user_name"`
// The ID of the message that was flagged by automod.
MessageID string `json:"message_id"`
// The body of the message.
Message []AutomodMessage `json:"message"`
}