@@ -570,26 +570,26 @@ async def _parse_received(
570570 elif saved_gift .saved_id :
571571 parsed_gift .received_gift_id = str (saved_gift .saved_id )
572572
573- parsed_gift .date = utils .timestamp_to_datetime (saved_gift .date )
574- parsed_gift .receiver = types .Chat ._parse_chat (client , receiver )
575- parsed_gift .is_name_hidden = saved_gift .name_hidden
576- parsed_gift .is_saved = not saved_gift .unsaved
577- parsed_gift .was_refunded = saved_gift .refunded
578- parsed_gift .can_be_upgraded = saved_gift .can_upgrade
579- parsed_gift .is_pinned = saved_gift .pinned_to_top
580- parsed_gift .is_upgrade_separate = saved_gift .upgrade_separate
581- parsed_gift .sender = types .Chat ._parse_chat (client , users .get (raw_from_id ) or chats .get (raw_from_id ))
582- parsed_gift .text = types .FormattedText ._parse (client , saved_gift .message )
573+ parsed_gift .date = utils .timestamp_to_datetime (saved_gift .date ) or parsed_gift . date
574+ parsed_gift .receiver = types .Chat ._parse_chat (client , receiver ) or parsed_gift . receiver
575+ parsed_gift .is_name_hidden = saved_gift .name_hidden or parsed_gift . is_name_hidden
576+ parsed_gift .is_saved = not saved_gift .unsaved or parsed_gift . is_saved
577+ parsed_gift .was_refunded = saved_gift .refunded or parsed_gift . was_refunded
578+ parsed_gift .can_be_upgraded = saved_gift .can_upgrade or parsed_gift . can_be_upgraded
579+ parsed_gift .is_pinned = saved_gift .pinned_to_top or parsed_gift . is_pinned
580+ parsed_gift .is_upgrade_separate = saved_gift .upgrade_separate or parsed_gift . is_upgrade_separate
581+ parsed_gift .sender = types .Chat ._parse_chat (client , users .get (raw_from_id ) or chats .get (raw_from_id )) or parsed_gift . sender
582+ parsed_gift .text = types .FormattedText ._parse (client , saved_gift .message ) or parsed_gift . text
583583 parsed_gift .convert_star_count = saved_gift .convert_stars or parsed_gift .convert_star_count
584584 parsed_gift .upgrade_star_count = saved_gift .upgrade_stars or parsed_gift .upgrade_star_count
585585 parsed_gift .export_date = utils .timestamp_to_datetime (saved_gift .can_export_at ) or parsed_gift .export_date
586586 parsed_gift .transfer_star_count = saved_gift .transfer_stars or parsed_gift .transfer_star_count
587587 parsed_gift .next_transfer_date = utils .timestamp_to_datetime (saved_gift .can_transfer_at ) or parsed_gift .next_transfer_date
588588 parsed_gift .next_resale_date = utils .timestamp_to_datetime (saved_gift .can_resell_at ) or parsed_gift .next_resale_date
589- parsed_gift .collection_ids = types .List (saved_gift .collection_id ) or None
590- parsed_gift .prepaid_upgrade_hash = saved_gift .prepaid_upgrade_hash
591- parsed_gift .drop_original_details_star_count = saved_gift .drop_original_details_stars
592- parsed_gift .unique_gift_number = saved_gift .gift_num
589+ parsed_gift .collection_ids = types .List (saved_gift .collection_id ) or None or parsed_gift . collection_ids
590+ parsed_gift .prepaid_upgrade_hash = saved_gift .prepaid_upgrade_hash or parsed_gift . prepaid_upgrade_hash
591+ parsed_gift .drop_original_details_star_count = saved_gift .drop_original_details_stars or parsed_gift . drop_original_details_star_count
592+ parsed_gift .unique_gift_number = saved_gift .gift_num or parsed_gift . unique_gift_number
593593
594594 return parsed_gift
595595
@@ -620,20 +620,21 @@ async def _parse_action(
620620 if action_gift .saved_id :
621621 parsed_gift .received_gift_id = str (action_gift .saved_id )
622622
623- parsed_gift .is_name_hidden = action_gift .name_hidden
624- parsed_gift .is_saved = action_gift .saved
625- parsed_gift .was_converted = action_gift .converted
626- parsed_gift .was_upgraded = action_gift .upgraded
627- parsed_gift .was_refunded = action_gift .refunded
628- parsed_gift .can_be_upgraded = action_gift .can_upgrade
629- parsed_gift .is_upgrade_separate = action_gift .upgrade_separate
630- parsed_gift .text = types .FormattedText ._parse (client , action_gift .message )
631- parsed_gift .convert_star_count = action_gift .convert_stars
632- parsed_gift .upgrade_star_count = action_gift .upgrade_stars
633- parsed_gift .sender = types .Chat ._parse_chat (client , users .get (raw_sender_id ) or chats .get (raw_sender_id ))
634- parsed_gift .receiver = types .Chat ._parse_chat (client , users .get (raw_receiver_id ) or chats .get (raw_receiver_id ))
635- parsed_gift .prepaid_upgrade_hash = action_gift .prepaid_upgrade_hash
636- parsed_gift .unique_gift_number = action_gift .gift_num
623+ parsed_gift .is_name_hidden = action_gift .name_hidden or parsed_gift .is_name_hidden
624+ parsed_gift .is_saved = action_gift .saved or parsed_gift .is_saved
625+ parsed_gift .was_converted = action_gift .converted or parsed_gift .was_converted
626+ parsed_gift .was_upgraded = action_gift .upgraded or parsed_gift .was_upgraded
627+ parsed_gift .was_refunded = action_gift .refunded or parsed_gift .was_refunded
628+ parsed_gift .can_be_upgraded = action_gift .can_upgrade or parsed_gift .can_be_upgraded
629+ parsed_gift .is_upgrade_separate = action_gift .upgrade_separate or parsed_gift .is_upgrade_separate
630+ parsed_gift .text = types .FormattedText ._parse (client , action_gift .message ) or parsed_gift .text
631+ parsed_gift .convert_star_count = action_gift .convert_stars or parsed_gift .convert_star_count
632+ parsed_gift .upgrade_star_count = action_gift .upgrade_stars or parsed_gift .upgrade_star_count
633+ parsed_gift .sender = types .Chat ._parse_chat (client , users .get (raw_sender_id ) or chats .get (raw_sender_id )) or parsed_gift .sender
634+ parsed_gift .receiver = types .Chat ._parse_chat (client , users .get (raw_receiver_id ) or chats .get (raw_receiver_id )) or parsed_gift .receiver
635+ parsed_gift .prepaid_upgrade_hash = action_gift .prepaid_upgrade_hash or parsed_gift .prepaid_upgrade_hash
636+ parsed_gift .unique_gift_number = action_gift .gift_num or parsed_gift .unique_gift_number
637+ parsed_gift .raw = action_gift
637638
638639 return parsed_gift
639640 elif isinstance (action_gift , raw .types .MessageActionStarGiftUnique ):
@@ -652,16 +653,17 @@ async def _parse_action(
652653 if action_gift .saved_id :
653654 parsed_gift .received_gift_id = str (action_gift .saved_id )
654655
655- parsed_gift .was_upgraded = action_gift .upgrade
656- parsed_gift .is_saved = action_gift .saved
657- parsed_gift .was_refunded = action_gift .refunded
656+ parsed_gift .was_upgraded = action_gift .upgrade or parsed_gift . was_upgraded
657+ parsed_gift .is_saved = action_gift .saved or parsed_gift . is_saved
658+ parsed_gift .was_refunded = action_gift .refunded or parsed_gift . was_refunded
658659 parsed_gift .export_date = utils .timestamp_to_datetime (action_gift .can_export_at ) or parsed_gift .export_date
659660 parsed_gift .transfer_star_count = action_gift .transfer_stars or parsed_gift .transfer_star_count
660- parsed_gift .sender = types .Chat ._parse_chat (client , users .get (raw_sender_id ) or chats .get (raw_sender_id ))
661- parsed_gift .receiver = types .Chat ._parse_chat (client , users .get (raw_receiver_id ) or chats .get (raw_receiver_id ))
661+ parsed_gift .sender = types .Chat ._parse_chat (client , users .get (raw_sender_id ) or chats .get (raw_sender_id )) or parsed_gift . sender
662+ parsed_gift .receiver = types .Chat ._parse_chat (client , users .get (raw_receiver_id ) or chats .get (raw_receiver_id )) or parsed_gift . receiver
662663 parsed_gift .next_transfer_date = utils .timestamp_to_datetime (action_gift .can_transfer_at ) or parsed_gift .next_transfer_date
663664 parsed_gift .next_resale_date = utils .timestamp_to_datetime (action_gift .can_resell_at ) or parsed_gift .next_resale_date
664- parsed_gift .drop_original_details_star_count = action_gift .drop_original_details_stars
665+ parsed_gift .drop_original_details_star_count = action_gift .drop_original_details_stars or parsed_gift .drop_original_details_star_count
666+ parsed_gift .raw = action_gift
665667
666668 return parsed_gift
667669
0 commit comments