MCPcopy Create free account
hub / github.com/TDesktop-x64/tdesktop / SuggestMedia

Function SuggestMedia

Telegram/SourceFiles/api/api_editing.cpp:151–242  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

149
150template <typename DoneCallback, typename FailCallback>
151mtpRequestId SuggestMedia(
152 not_null<HistoryItem*> item,
153 const TextWithEntities &textWithEntities,
154 Data::WebPageDraft webpage,
155 SendOptions options,
156 DoneCallback &&done,
157 FailCallback &&fail,
158 std::optional<MTPInputMedia> inputMedia) {
159 Expects(options.suggest.exists);
160 Expects(!options.scheduled);
161
162 const auto session = &item->history()->session();
163 const auto api = &session->api();
164
165 const auto text = textWithEntities.text;
166 const auto sentEntities = EntitiesToMTP(
167 session,
168 textWithEntities.entities,
169 ConvertOption::SkipLocal);
170
171 const auto updateRecentStickers = inputMedia
172 ? Api::HasAttachedStickers(*inputMedia)
173 : false;
174
175 const auto emptyFlag = MTPmessages_SendMedia::Flag(0);
176 auto replyTo = FullReplyTo{
177 .messageId = item->fullId(),
178 .monoforumPeerId = (item->history()->amMonoforumAdmin()
179 ? item->sublistPeerId()
180 : PeerId()),
181 };
182 const auto flags = emptyFlag
183 | MTPmessages_SendMedia::Flag::f_reply_to
184 | MTPmessages_SendMedia::Flag::f_suggested_post
185 | (((!webpage.removed && !webpage.url.isEmpty() && webpage.invert)
186 || options.invertCaption)
187 ? MTPmessages_SendMedia::Flag::f_invert_media
188 : emptyFlag)
189 | (!sentEntities.v.isEmpty()
190 ? MTPmessages_SendMedia::Flag::f_entities
191 : emptyFlag)
192 | (options.starsApproved
193 ? MTPmessages_SendMedia::Flag::f_allow_paid_stars
194 : emptyFlag);
195 const auto randomId = base::RandomValue<uint64>();
196 return api->request(MTPmessages_SendMedia(
197 MTP_flags(flags),
198 item->history()->peer->input(),
199 ReplyToForMTP(item->history(), replyTo),
200 inputMedia.value_or(Data::WebPageForMTP(webpage, text.isEmpty())),
201 MTP_string(text),
202 MTP_long(randomId),
203 MTPReplyMarkup(),
204 sentEntities,
205 MTPint(), // schedule_date
206 MTPint(), // schedule_repeat_period
207 MTPInputPeer(), // send_as
208 MTPInputQuickReplyShortcut(), // quick_reply_shortcut

Callers 1

SuggestMessageOrMediaFunction · 0.85

Calls 15

EntitiesToMTPFunction · 0.85
HasAttachedStickersFunction · 0.85
PeerIdClass · 0.85
MTP_flagsFunction · 0.85
ReplyToForMTPFunction · 0.85
WebPageForMTPFunction · 0.85
MTP_stringFunction · 0.85
MTP_longFunction · 0.85
SuggestToMTPFunction · 0.85
apiMethod · 0.80
sublistPeerIdMethod · 0.80
value_orMethod · 0.80

Tested by

no test coverage detected