@@ -1314,7 +1314,7 @@ def __init__(self, client: EventSubClient, data: dict):
13141314 self .ended_at : datetime .datetime = _parse_datetime (data ["ended_at" ])
13151315
13161316
1317- class ShieldModeBegin :
1317+ class ChannelShieldModeBeginData ( EventData ) :
13181318 """
13191319 Represents a Shield Mode activation status.
13201320
@@ -1336,7 +1336,7 @@ def __init__(self, client: EventSubClient, data: dict):
13361336 self .started_at : datetime .datetime = _parse_datetime (data ["started_at" ])
13371337
13381338
1339- class ShieldModeEnd :
1339+ class ChannelShieldModeEndData ( EventData ) :
13401340 """
13411341 Represents a Shield Mode activation status.
13421342
@@ -1358,6 +1358,77 @@ def __init__(self, client: EventSubClient, data: dict):
13581358 self .ended_at : datetime .datetime = _parse_datetime (data ["ended_at" ])
13591359
13601360
1361+ class ChannelShoutoutCreateData (EventData ):
1362+ """
1363+ Represents a Shoutout event being sent.
1364+
1365+ Requires the ``moderator:read:shoutouts`` or ``moderator:manage:shoutouts`` scope.
1366+
1367+ Attributes
1368+ -----------
1369+ broadcaster: :class:`~twitchio.PartialUser`
1370+ The broadcaster from who sent the shoutout event.
1371+ moderator: :class:`~twitchio.PartialUser`
1372+ The moderator who sent the shoutout event.
1373+ to_broadcaster: :class:`~twitchio.PartialUser`
1374+ The broadcaster who the shoutout was sent to.
1375+ started_at: :class:`datetime.datetime`
1376+ The datetime the shoutout was sent.
1377+ viewer_count: :class:`int`
1378+ The viewer count at the time of the shoutout
1379+ cooldown_ends_at: :class:`datetime.datetime`
1380+ The datetime the broadcaster can send another shoutout.
1381+ target_cooldown_ends_at: :class:`datetime.datetime`
1382+ The datetime the broadcaster can send another shoutout to the same broadcaster.
1383+ """
1384+
1385+ __slots__ = (
1386+ "broadcaster" ,
1387+ "moderator" ,
1388+ "to_broadcaster" ,
1389+ "started_at" ,
1390+ "viewer_count" ,
1391+ "cooldown_ends_at" ,
1392+ "target_cooldown_ends_at" ,
1393+ )
1394+
1395+ def __init__ (self , client : EventSubClient , data : dict ):
1396+ self .broadcaster : PartialUser = _transform_user (client , data , "broadcaster_user" )
1397+ self .moderator : PartialUser = _transform_user (client , data , "moderator_user" )
1398+ self .to_broadcaster : PartialUser = _transform_user (client , data , "to_broadcaster_user" )
1399+ self .started_at : datetime .datetime = _parse_datetime (data ["started_at" ])
1400+ self .viewer_count : int = data ["viewer_count" ]
1401+ self .cooldown_ends_at : datetime .datetime = _parse_datetime (data ["cooldown_ends_at" ])
1402+ self .target_cooldown_ends_at : datetime .datetime = _parse_datetime (data ["target_cooldown_ends_at" ])
1403+
1404+
1405+ class ChannelShoutoutReceiveData (EventData ):
1406+ """
1407+ Represents a Shoutout event being received.
1408+
1409+ Requires the ``moderator:read:shoutouts`` or ``moderator:manage:shoutouts`` scope.
1410+
1411+ Attributes
1412+ -----------
1413+ broadcaster: :class:`~twitchio.PartialUser`
1414+ The broadcaster receiving shoutout event.
1415+ from_broadcaster: :class:`~twitchio.PartialUser`
1416+ The broadcaster who sent the shoutout.
1417+ started_at: :class:`datetime.datetime`
1418+ The datetime the shoutout was sent.
1419+ viewer_count: :class:`int`
1420+ The viewer count at the time of the shoutout
1421+ """
1422+
1423+ __slots__ = ("broadcaster" , "from_broadcaster" , "started_at" , "viewer_count" )
1424+
1425+ def __init__ (self , client : EventSubClient , data : dict ):
1426+ self .broadcaster : PartialUser = _transform_user (client , data , "broadcaster_user" )
1427+ self .from_broadcaster : PartialUser = _transform_user (client , data , "to_broadcaster_user" )
1428+ self .started_at : datetime .datetime = _parse_datetime (data ["started_at" ])
1429+ self .viewer_count : int = data ["viewer_count" ]
1430+
1431+
13611432_DataType = Union [
13621433 ChannelBanData ,
13631434 ChannelUnbanData ,
@@ -1386,8 +1457,10 @@ def __init__(self, client: EventSubClient, data: dict):
13861457 UserAuthorizationGrantedData ,
13871458 UserAuthorizationRevokedData ,
13881459 UserUpdateData ,
1389- ShieldModeBegin ,
1390- ShieldModeEnd ,
1460+ ChannelShieldModeBeginData ,
1461+ ChannelShieldModeEndData ,
1462+ ChannelShoutoutCreateData ,
1463+ ChannelShoutoutReceiveData ,
13911464]
13921465
13931466
@@ -1433,8 +1506,11 @@ class _SubscriptionTypes(metaclass=_SubTypesMeta):
14331506 channel_goal_progress = "channel.goal.progress" , 1 , ChannelGoalBeginProgressData
14341507 channel_goal_end = "channel.goal.end" , 1 , ChannelGoalEndData
14351508
1436- channel_shield_mode_begin = "channel.shield_mode.begin" , 1 , ShieldModeBegin
1437- channel_shield_mode_end = "channel.shield_mode.end" , 1 , ShieldModeEnd
1509+ channel_shield_mode_begin = "channel.shield_mode.begin" , 1 , ChannelShieldModeBeginData
1510+ channel_shield_mode_end = "channel.shield_mode.end" , 1 , ChannelShieldModeEndData
1511+
1512+ channel_shoutout_create = "channel.shoutout.create" , 1 , ChannelShoutoutCreateData
1513+ channel_shoutout_receive = "channel.shoutout.receive" , 1 , ChannelShoutoutReceiveData
14381514
14391515 hypetrain_begin = "channel.hype_train.begin" , 1 , HypeTrainBeginProgressData
14401516 hypetrain_progress = "channel.hype_train.progress" , 1 , HypeTrainBeginProgressData
0 commit comments