@@ -375,7 +375,10 @@ try{
375375 function formatTranslation ( key , fallback , values = { } ) {
376376 let template = getTranslation ( key , fallback ) ;
377377 Object . keys ( values ) . forEach ( function ( valueKey ) {
378- template = template . replace ( new RegExp ( "\\{" + valueKey + "\\}" , "g" ) , values [ valueKey ] ) ;
378+ const replacement = values [ valueKey ] == null ? '' : String ( values [ valueKey ] ) ;
379+ template = template . replace ( new RegExp ( "\\{" + valueKey + "\\}" , "g" ) , function ( ) {
380+ return replacement ;
381+ } ) ;
379382 } ) ;
380383 return template ;
381384 }
@@ -2322,10 +2325,18 @@ async function ensureChatClientInstance() {
23222325 case 'anonsubgift' :
23232326 case 'submysterygift' :
23242327 case 'anonsubmysterygift' :
2328+ const giftRecipient = parsedMessage . tags [ 'msg-param-recipient-display-name' ] ||
2329+ parsedMessage . tags [ 'msg-param-recipient-user-name' ] ||
2330+ ( normalizedPayload && normalizedPayload . raw && normalizedPayload . raw . recipient ) ||
2331+ ( normalizedPayload && normalizedPayload . recipient ) ||
2332+ '' ;
23252333 const giftMessage = formatTranslation ( 'twitch-gifted-a-sub-message' , '{name} gifted a sub' , {
23262334 name : displayName || getTranslation ( 'someone' , 'Someone' )
23272335 } ) ;
2328- eventData . chatmessage = useTranslatedNoticeText ? giftMessage : ( systemMsg || giftMessage ) ;
2336+ const giftMessageWithRecipient = giftRecipient
2337+ ? giftMessage + ' ' + getTranslation ( 'membership-to-word' , 'to' ) + ' ' + giftRecipient
2338+ : giftMessage ;
2339+ eventData . chatmessage = useTranslatedNoticeText ? giftMessageWithRecipient : ( systemMsg || giftMessageWithRecipient ) ;
23292340 eventData . event = 'subscription_gift' ;
23302341 if ( settings . limitedtwitchmemberchat ) {
23312342 eventData . membership = getSubscriberLabel ( ) ;
0 commit comments