diff --git a/Telegram/SourceFiles/api/api_updates.cpp b/Telegram/SourceFiles/api/api_updates.cpp index 89ece13a5..31a4e73cd 100644 --- a/Telegram/SourceFiles/api/api_updates.cpp +++ b/Telegram/SourceFiles/api/api_updates.cpp @@ -1219,7 +1219,8 @@ void Updates::applyUpdatesNoPtsCheck(const MTPUpdates &updates) { MTPint(), // quick_reply_shortcut_id MTPlong(), // effect MTPFactCheck(), - MTPint()), // report_delivery_until_date + MTPint(), // report_delivery_until_date + MTPlong()), // paid_message_stars MessageFlags(), NewMessageType::Unread); } break; @@ -1257,7 +1258,8 @@ void Updates::applyUpdatesNoPtsCheck(const MTPUpdates &updates) { MTPint(), // quick_reply_shortcut_id MTPlong(), // effect MTPFactCheck(), - MTPint()), // report_delivery_until_date + MTPint(), // report_delivery_until_date + MTPlong()), // paid_message_stars MessageFlags(), NewMessageType::Unread); } break; diff --git a/Telegram/SourceFiles/apiwrap.cpp b/Telegram/SourceFiles/apiwrap.cpp index 4362f704b..71927f5fc 100644 --- a/Telegram/SourceFiles/apiwrap.cpp +++ b/Telegram/SourceFiles/apiwrap.cpp @@ -4452,6 +4452,7 @@ void ApiWrap::sendAlbumIfReady(not_null album) { const auto history = sample->history(); const auto replyTo = sample->replyTo(); const auto sendAs = album->options.sendAs; + const auto starsPaid = history->peer->commitStarsForMessage(); using Flag = MTPmessages_SendMultiMedia::Flag; const auto flags = Flag(0) | (replyTo ? Flag::f_reply_to : Flag(0)) @@ -4464,7 +4465,8 @@ void ApiWrap::sendAlbumIfReady(not_null album) { ? Flag::f_quick_reply_shortcut : Flag(0)) | (album->options.effectId ? Flag::f_effect : Flag(0)) - | (album->options.invertCaption ? Flag::f_invert_media : Flag(0)); + | (album->options.invertCaption ? Flag::f_invert_media : Flag(0)) + | (starsPaid ? Flag::f_allow_paid_stars : Flag(0)); auto &histories = history->owner().histories(); const auto peer = history->peer; album->sent = true; @@ -4480,7 +4482,8 @@ void ApiWrap::sendAlbumIfReady(not_null album) { MTP_int(album->options.scheduled), (sendAs ? sendAs->input : MTP_inputPeerEmpty()), Data::ShortcutIdToMTP(_session, album->options.shortcutId), - MTP_long(album->options.effectId) + MTP_long(album->options.effectId), + MTP_long(starsPaid) ), [=](const MTPUpdates &result, const MTP::Response &response) { _sendingAlbums.remove(groupId); }, [=](const MTP::Error &error, const MTP::Response &response) { diff --git a/Telegram/SourceFiles/data/business/data_shortcut_messages.cpp b/Telegram/SourceFiles/data/business/data_shortcut_messages.cpp index c1998a441..ca6f362ed 100644 --- a/Telegram/SourceFiles/data/business/data_shortcut_messages.cpp +++ b/Telegram/SourceFiles/data/business/data_shortcut_messages.cpp @@ -91,7 +91,8 @@ constexpr auto kRequestTimeLimit = 60 * crl::time(1000); MTP_int(shortcutId), MTP_long(data.veffect().value_or_empty()), (data.vfactcheck() ? *data.vfactcheck() : MTPFactCheck()), - MTP_int(data.vreport_delivery_until_date().value_or_empty())); + MTP_int(data.vreport_delivery_until_date().value_or_empty()), + MTP_long(data.vpaid_message_stars().value_or_empty())); }); } diff --git a/Telegram/SourceFiles/data/components/scheduled_messages.cpp b/Telegram/SourceFiles/data/components/scheduled_messages.cpp index 4d039dc00..cecdf3606 100644 --- a/Telegram/SourceFiles/data/components/scheduled_messages.cpp +++ b/Telegram/SourceFiles/data/components/scheduled_messages.cpp @@ -95,7 +95,8 @@ constexpr auto kRequestTimeLimit = 60 * crl::time(1000); MTPint(), // quick_reply_shortcut_id MTP_long(data.veffect().value_or_empty()), // effect data.vfactcheck() ? *data.vfactcheck() : MTPFactCheck(), - MTP_int(data.vreport_delivery_until_date().value_or_empty())); + MTP_int(data.vreport_delivery_until_date().value_or_empty()), + MTP_long(data.vpaid_message_stars().value_or_empty())); }); } @@ -269,7 +270,8 @@ void ScheduledMessages::sendNowSimpleMessage( MTPint(), // quick_reply_shortcut_id MTP_long(local->effectId()), // effect MTPFactCheck(), - MTPint()), // report_delivery_until_date + MTPint(), // report_delivery_until_date + MTPlong()), // paid_message_stars localFlags, NewMessageType::Unread); diff --git a/Telegram/SourceFiles/data/data_session.cpp b/Telegram/SourceFiles/data/data_session.cpp index 3184affec..edfc3ec99 100644 --- a/Telegram/SourceFiles/data/data_session.cpp +++ b/Telegram/SourceFiles/data/data_session.cpp @@ -4690,7 +4690,8 @@ void Session::insertCheckedServiceNotification( MTPint(), // quick_reply_shortcut_id MTPlong(), // effect MTPFactCheck(), - MTPint()), // report_delivery_until_date + MTPint(), // report_delivery_until_date + MTPlong()), // paid_message_stars localFlags, NewMessageType::Unread); } diff --git a/Telegram/SourceFiles/export/data/export_data_types.cpp b/Telegram/SourceFiles/export/data/export_data_types.cpp index cb85d0b59..6e1ca060b 100644 --- a/Telegram/SourceFiles/export/data/export_data_types.cpp +++ b/Telegram/SourceFiles/export/data/export_data_types.cpp @@ -1704,10 +1704,6 @@ ServiceAction ParseServiceAction( .giftId = uint64(gift.vid().v), }; }); - }, [&](const MTPDmessageActionPaidMessage &data) { - result.content = ActionPaidMessage{ - .stars = int64(data.vstars().v), - }; }, [](const MTPDmessageActionEmpty &data) {}); return result; } diff --git a/Telegram/SourceFiles/export/data/export_data_types.h b/Telegram/SourceFiles/export/data/export_data_types.h index e1fe647a3..d460ee196 100644 --- a/Telegram/SourceFiles/export/data/export_data_types.h +++ b/Telegram/SourceFiles/export/data/export_data_types.h @@ -662,10 +662,6 @@ struct ActionStarGift { bool limited = false; }; -struct ActionPaidMessage { - int64 stars = 0; -}; - struct ServiceAction { std::variant< v::null_t, @@ -711,8 +707,7 @@ struct ServiceAction { ActionPaymentRefunded, ActionGiftStars, ActionPrizeStars, - ActionStarGift, - ActionPaidMessage> content; + ActionStarGift> content; }; ServiceAction ParseServiceAction( diff --git a/Telegram/SourceFiles/export/output/export_output_html.cpp b/Telegram/SourceFiles/export/output/export_output_html.cpp index 2f996638b..eda916d0a 100644 --- a/Telegram/SourceFiles/export/output/export_output_html.cpp +++ b/Telegram/SourceFiles/export/output/export_output_html.cpp @@ -1367,11 +1367,6 @@ auto HtmlWriter::Wrap::pushMessage( + " sent you a gift of " + QByteArray::number(data.stars) + " Telegram Stars."; - }, [&](const ActionPaidMessage &data) { - return serviceFrom - + " paid for the message " - + QString::number(data.stars).toUtf8() - + " Telegram Stars."; }, [](v::null_t) { return QByteArray(); }); if (!serviceText.isEmpty()) { diff --git a/Telegram/SourceFiles/export/output/export_output_json.cpp b/Telegram/SourceFiles/export/output/export_output_json.cpp index f53573911..dee8d1e94 100644 --- a/Telegram/SourceFiles/export/output/export_output_json.cpp +++ b/Telegram/SourceFiles/export/output/export_output_json.cpp @@ -663,10 +663,6 @@ QByteArray SerializeMessage( push("is_limited", data.limited); push("is_anonymous", data.anonymous); pushBare("gift_text", SerializeText(context, data.text)); - }, [&](const ActionPaidMessage &data) { - pushActor(); - pushAction("send_paid_message"); - push("stars", data.stars); }, [](v::null_t) {}); if (v::is_null(message.action.content)) { diff --git a/Telegram/SourceFiles/history/admin_log/history_admin_log_item.cpp b/Telegram/SourceFiles/history/admin_log/history_admin_log_item.cpp index 1c6d68050..abf5bfbfb 100644 --- a/Telegram/SourceFiles/history/admin_log/history_admin_log_item.cpp +++ b/Telegram/SourceFiles/history/admin_log/history_admin_log_item.cpp @@ -191,7 +191,8 @@ MTPMessage PrepareLogMessage(const MTPMessage &message, TimeId newDate) { MTPint(), // quick_reply_shortcut_id MTP_long(data.veffect().value_or_empty()), MTPFactCheck(), - MTPint()); // report_delivery_until_date + MTPint(), // report_delivery_until_date + MTP_long(data.vpaid_message_stars().value_or_empty())); }); } diff --git a/Telegram/SourceFiles/history/history_item.cpp b/Telegram/SourceFiles/history/history_item.cpp index 406ae555a..8bd1c4f72 100644 --- a/Telegram/SourceFiles/history/history_item.cpp +++ b/Telegram/SourceFiles/history/history_item.cpp @@ -5574,29 +5574,6 @@ void HistoryItem::setServiceMessageByAction(const MTPmessageAction &action) { return result; }; - auto preparePaidMessage = [&]( - const MTPDmessageActionPaidMessage &action) { - auto result = PreparedServiceText(); - const auto stars = action.vstars().v; - if (_from->isSelf()) { - result.text = tr::lng_action_paid_message_sent( - tr::now, - lt_count, - stars, - Ui::Text::WithEntities); - } else { - result.links.push_back(_from->createOpenLink()); - result.text = tr::lng_action_paid_message_got( - tr::now, - lt_count, - stars, - lt_name, - Ui::Text::Link(_from->shortName(), 1), - Ui::Text::WithEntities); - } - return result; - }; - setServiceText(action.match( prepareChatAddUserText, prepareChatJoinedByLink, @@ -5645,8 +5622,7 @@ void HistoryItem::setServiceMessageByAction(const MTPmessageAction &action) { prepareStarGift, prepareStarGiftUnique, PrepareEmptyText, - PrepareErrorText, - preparePaidMessage)); + PrepareErrorText)); // Additional information. applyAction(action); diff --git a/Telegram/SourceFiles/mtproto/scheme/api.tl b/Telegram/SourceFiles/mtproto/scheme/api.tl index 3de238c6b..8f912fbe5 100644 --- a/Telegram/SourceFiles/mtproto/scheme/api.tl +++ b/Telegram/SourceFiles/mtproto/scheme/api.tl @@ -116,7 +116,7 @@ chatPhotoEmpty#37c1011c = ChatPhoto; chatPhoto#1c6e1c11 flags:# has_video:flags.0?true photo_id:long stripped_thumb:flags.1?bytes dc_id:int = ChatPhoto; messageEmpty#90a6ca84 flags:# id:int peer_id:flags.0?Peer = Message; -message#96fdbbe9 flags:# out:flags.1?true mentioned:flags.4?true media_unread:flags.5?true silent:flags.13?true post:flags.14?true from_scheduled:flags.18?true legacy:flags.19?true edit_hide:flags.21?true pinned:flags.24?true noforwards:flags.26?true invert_media:flags.27?true flags2:# offline:flags2.1?true video_processing_pending:flags2.4?true id:int from_id:flags.8?Peer from_boosts_applied:flags.29?int peer_id:Peer saved_peer_id:flags.28?Peer fwd_from:flags.2?MessageFwdHeader via_bot_id:flags.11?long via_business_bot_id:flags2.0?long reply_to:flags.3?MessageReplyHeader date:int message:string media:flags.9?MessageMedia reply_markup:flags.6?ReplyMarkup entities:flags.7?Vector views:flags.10?int forwards:flags.10?int replies:flags.23?MessageReplies edit_date:flags.15?int post_author:flags.16?string grouped_id:flags.17?long reactions:flags.20?MessageReactions restriction_reason:flags.22?Vector ttl_period:flags.25?int quick_reply_shortcut_id:flags.30?int effect:flags2.2?long factcheck:flags2.3?FactCheck report_delivery_until_date:flags2.5?int = Message; +message#eabcdd4d flags:# out:flags.1?true mentioned:flags.4?true media_unread:flags.5?true silent:flags.13?true post:flags.14?true from_scheduled:flags.18?true legacy:flags.19?true edit_hide:flags.21?true pinned:flags.24?true noforwards:flags.26?true invert_media:flags.27?true flags2:# offline:flags2.1?true video_processing_pending:flags2.4?true id:int from_id:flags.8?Peer from_boosts_applied:flags.29?int peer_id:Peer saved_peer_id:flags.28?Peer fwd_from:flags.2?MessageFwdHeader via_bot_id:flags.11?long via_business_bot_id:flags2.0?long reply_to:flags.3?MessageReplyHeader date:int message:string media:flags.9?MessageMedia reply_markup:flags.6?ReplyMarkup entities:flags.7?Vector views:flags.10?int forwards:flags.10?int replies:flags.23?MessageReplies edit_date:flags.15?int post_author:flags.16?string grouped_id:flags.17?long reactions:flags.20?MessageReactions restriction_reason:flags.22?Vector ttl_period:flags.25?int quick_reply_shortcut_id:flags.30?int effect:flags2.2?long factcheck:flags2.3?FactCheck report_delivery_until_date:flags2.5?int paid_message_stars:flags2.6?long = Message; messageService#d3d28540 flags:# out:flags.1?true mentioned:flags.4?true media_unread:flags.5?true reactions_are_possible:flags.9?true silent:flags.13?true post:flags.14?true legacy:flags.19?true id:int from_id:flags.8?Peer peer_id:Peer reply_to:flags.3?MessageReplyHeader date:int action:MessageAction reactions:flags.20?MessageReactions ttl_period:flags.25?int = Message; messageMediaEmpty#3ded6320 = MessageMedia; @@ -185,7 +185,6 @@ messageActionGiftStars#45d5b021 flags:# currency:string amount:long stars:long c messageActionPrizeStars#b00c47a2 flags:# unclaimed:flags.0?true stars:long transaction_id:string boost_peer:Peer giveaway_msg_id:int = MessageAction; messageActionStarGift#4717e8a4 flags:# name_hidden:flags.0?true saved:flags.2?true converted:flags.3?true upgraded:flags.5?true refunded:flags.9?true can_upgrade:flags.10?true gift:StarGift message:flags.1?TextWithEntities convert_stars:flags.4?long upgrade_msg_id:flags.5?int upgrade_stars:flags.8?long from_id:flags.11?Peer peer:flags.12?Peer saved_id:flags.12?long = MessageAction; messageActionStarGiftUnique#acdfcb81 flags:# upgrade:flags.0?true transferred:flags.1?true saved:flags.2?true refunded:flags.5?true gift:StarGift can_export_at:flags.3?int transfer_stars:flags.4?long from_id:flags.6?Peer peer:flags.7?Peer saved_id:flags.7?long = MessageAction; -messageActionPaidMessage#5cd2501f stars:long = MessageAction; dialog#d58a08c6 flags:# pinned:flags.2?true unread_mark:flags.3?true view_forum_as_messages:flags.6?true peer:Peer top_message:int read_inbox_max_id:int read_outbox_max_id:int unread_count:int unread_mentions_count:int unread_reactions_count:int notify_settings:PeerNotifySettings pts:flags.0?int draft:flags.1?DraftMessage folder_id:flags.4?int ttl_period:flags.5?int = Dialog; dialogFolder#71bd134c flags:# pinned:flags.2?true folder:Folder peer:Peer top_message:int unread_muted_peers_count:int unread_unmuted_peers_count:int unread_muted_messages_count:int unread_unmuted_messages_count:int = Dialog; @@ -1841,7 +1840,7 @@ starsTransactionPeerAPI#f9677aad = StarsTransactionPeer; starsTopupOption#bd915c0 flags:# extended:flags.1?true stars:long store_product:flags.0?string currency:string amount:long = StarsTopupOption; -starsTransaction#64dfc926 flags:# refund:flags.3?true pending:flags.4?true failed:flags.6?true gift:flags.10?true reaction:flags.11?true stargift_upgrade:flags.18?true paid_message:flags.19?true id:string stars:StarsAmount date:int peer:StarsTransactionPeer title:flags.0?string description:flags.1?string photo:flags.2?WebDocument transaction_date:flags.5?int transaction_url:flags.5?string bot_payload:flags.7?bytes msg_id:flags.8?int extended_media:flags.9?Vector subscription_period:flags.12?int giveaway_post_id:flags.13?int stargift:flags.14?StarGift floodskip_number:flags.15?int starref_commission_permille:flags.16?int starref_peer:flags.17?Peer starref_amount:flags.17?StarsAmount = StarsTransaction; +starsTransaction#ecd50924 flags:# refund:flags.3?true pending:flags.4?true failed:flags.6?true gift:flags.10?true reaction:flags.11?true stargift_upgrade:flags.18?true id:string stars:StarsAmount date:int peer:StarsTransactionPeer title:flags.0?string description:flags.1?string photo:flags.2?WebDocument transaction_date:flags.5?int transaction_url:flags.5?string bot_payload:flags.7?bytes msg_id:flags.8?int extended_media:flags.9?Vector subscription_period:flags.12?int giveaway_post_id:flags.13?int stargift:flags.14?StarGift floodskip_number:flags.15?int starref_commission_permille:flags.16?int starref_peer:flags.17?Peer starref_amount:flags.17?StarsAmount paid_messages:flags.19?int = StarsTransaction; payments.starsStatus#6c9ce8ed flags:# balance:StarsAmount subscriptions:flags.1?Vector subscriptions_next_offset:flags.2?string subscriptions_missing_balance:flags.4?long history:flags.3?Vector next_offset:flags.0?string chats:Vector users:Vector = payments.StarsStatus; @@ -2218,7 +2217,7 @@ messages.faveSticker#b9ffc55b id:InputDocument unfave:Bool = Bool; messages.getUnreadMentions#f107e790 flags:# peer:InputPeer top_msg_id:flags.0?int offset_id:int add_offset:int limit:int max_id:int min_id:int = messages.Messages; messages.readMentions#36e5bf4d flags:# peer:InputPeer top_msg_id:flags.0?int = messages.AffectedHistory; messages.getRecentLocations#702a40e0 peer:InputPeer limit:int hash:long = messages.Messages; -messages.sendMultiMedia#37b74355 flags:# silent:flags.5?true background:flags.6?true clear_draft:flags.7?true noforwards:flags.14?true update_stickersets_order:flags.15?true invert_media:flags.16?true allow_paid_floodskip:flags.19?true peer:InputPeer reply_to:flags.0?InputReplyTo multi_media:Vector schedule_date:flags.10?int send_as:flags.13?InputPeer quick_reply_shortcut:flags.17?InputQuickReplyShortcut effect:flags.18?long = Updates; +messages.sendMultiMedia#1bf89d74 flags:# silent:flags.5?true background:flags.6?true clear_draft:flags.7?true noforwards:flags.14?true update_stickersets_order:flags.15?true invert_media:flags.16?true allow_paid_floodskip:flags.19?true peer:InputPeer reply_to:flags.0?InputReplyTo multi_media:Vector schedule_date:flags.10?int send_as:flags.13?InputPeer quick_reply_shortcut:flags.17?InputQuickReplyShortcut effect:flags.18?long allow_paid_stars:flags.21?long = Updates; messages.uploadEncryptedFile#5057c497 peer:InputEncryptedChat file:InputEncryptedFile = EncryptedFile; messages.searchStickerSets#35705b8a flags:# exclude_featured:flags.0?true q:string hash:long = messages.FoundStickerSets; messages.getSplitRanges#1cff7e08 = Vector; diff --git a/Telegram/SourceFiles/settings/settings_privacy_controllers.cpp b/Telegram/SourceFiles/settings/settings_privacy_controllers.cpp index 950b15b74..a843d7f04 100644 --- a/Telegram/SourceFiles/settings/settings_privacy_controllers.cpp +++ b/Telegram/SourceFiles/settings/settings_privacy_controllers.cpp @@ -203,7 +203,8 @@ AdminLog::OwnedItem GenerateForwardedItem( MTPint(), // quick_reply_shortcut_id MTPlong(), // effect MTPFactCheck(), - MTPint() // report_delivery_until_date + MTPint(), // report_delivery_until_date + MTPlong() // paid_message_stars ).match([&](const MTPDmessage &data) { return history->makeMessage( history->nextNonHistoryEntryId(),